function SetFileDateTime(FileName : String; NewDateTime : TDateTime): Boolean;
var
FileHandle: Integer;
FileTime: TFileTime;
LFT: TFileTime;
LST: TSystemTime;
begin
Result := False;
Try
DecodeDate(NewDateTime, LST.wYear, LST.wMonth, LST.wDay);
DecodeTime(NewDateTime, LST.wHour, LST.wMinute, LST.wSecond,LST.wMilliSeconds);
IF SystemTimeToFileTime(LST, LFT) Then
begin
IF LocalFileTimeToFileTime(LFT, FileTime) Then
begin
FileHandle := FileOpen(FileName, fmOpenReadWrite or
fmShareExclusive);
IF SetFileTime(FileHandle, NIL, NIL, @FileTime) Then
Result := True;
end;
end;
Finally
FileClose(FileHandle);
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
if SetFileDateTime(OpenDialog1.Filename,now) then
begin
ShowMessage('Date set to now !');
end;
end;
end;
var
FileHandle: Integer;
FileTime: TFileTime;
LFT: TFileTime;
LST: TSystemTime;
begin
Result := False;
Try
DecodeDate(NewDateTime, LST.wYear, LST.wMonth, LST.wDay);
DecodeTime(NewDateTime, LST.wHour, LST.wMinute, LST.wSecond,LST.wMilliSeconds);
IF SystemTimeToFileTime(LST, LFT) Then
begin
IF LocalFileTimeToFileTime(LFT, FileTime) Then
begin
FileHandle := FileOpen(FileName, fmOpenReadWrite or
fmShareExclusive);
IF SetFileTime(FileHandle, NIL, NIL, @FileTime) Then
Result := True;
end;
end;
Finally
FileClose(FileHandle);
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
if SetFileDateTime(OpenDialog1.Filename,now) then
begin
ShowMessage('Date set to now !');
end;
end;
end;
解决方案 »
- 200分请教 FarPoint.Spread.v7.0.06用法问题
- 为提高录单人员的效率,主从表记录的复制问题.
- ADO,C/S结构,缓存模式下,怎么返回已修改但尚未UpdateBatch修改前的值?怎么返回已删除但尚未UpdateBatch的字段值?
- 如何得到某个目录下的所有文件的文件名呢?小弟初学D,望指教!第一次提问,分就100吧
- 怎么设置DBGRID的表格的背景色!
- 高手请进:如何从从exe的文件头取得该文件的长度?
- 读取文本文件的数据问题
- Access+Delphi中的模糊查询问题?
- 王寒松师兄的Ereport问题,高手请进
- 10进制怎么TO16进制...
- 高手莫笑:如何在showmessage中包含实数?
- 各位大侠帮个忙
var
aStream: TFileStream;
iSize: Integer;
begin
Result := False;
if not FileExists(AFileName) then
Exit;
try
aStream := TFileStream.Create(AFileName, fmOpenWrite or fmShareDenyWrite);
MemoryStream.Seek(0, soFromBeginning);
// seek to end of File
aStream.Seek(0, soFromEnd);
// copy data from MemoryStream
aStream.CopyFrom(MemoryStream, 0);
// save Stream-Size
iSize := MemoryStream.Size + SizeOf(Integer);
aStream.Write(iSize, SizeOf(iSize));
finally
aStream.Free;
end;
Result := True;
end; function LoadFromFile(const AFileName: String; MemoryStream: TMemoryStream): Boolean;
var
aStream: TFileStream;
iSize: Integer;
begin
Result := False;
if not FileExists(AFileName) then
Exit; try
aStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
// seek to position where Stream-Size is saved
// zur Position seeken wo Streamgr鲞e gespeichert
aStream.Seek( - SizeOf(Integer), soFromEnd);
aStream.Read(iSize, SizeOf(iSize));
if iSize > aStream.Size then
begin
aStream.Free;
Exit;
end;
// seek to position where data is saved
// zur Position seeken an der die Daten abgelegt sind
aStream.Seek( - iSize, soFromEnd);
MemoryStream.SetSize(iSize - SizeOf(Integer));
MemoryStream.CopyFrom(aStream, iSize - SizeOf(iSize));
MemoryStream.Seek(0, soFromBeginning);
finally
aStream.Free;
end;
Result := True;
end; procedure TForm1.SaveClick(Sender: TObject);
var
aStream: TMemoryStream;
begin
aStream := TMemoryStream.Create;
Memo1.Lines.SaveToStream(aStream);
AttachToFile('Test.exe', aStream);
aStream.Free;
end; procedure TForm1.LoadClick(Sender: TObject);
var
aStream: TMemoryStream;
begin
aStream := TMemoryStream.Create;
LoadFromFile('Test.exe', aStream);
Memo1.Lines.LoadFromStream(aStream);
aStream.Free;
end; 改变大小的。唉,郎兄,看好了:)
f:= TFileStream.Create('file',fmOpenReadWrite);
f.Size := f.Size + 100;
f.Free;