her er lidt kode der vider hvordan man laver filhåntering, The windows way :
unit FileHandling;
interface
uses
ShellAPI, Windows, SysUtils;
Function DeleteFiles( Files : String) : Boolean;
Function CopyFiles( From, Dest : String) : Boolean;
Function MoveFiles( From, Dest : String) : Boolean;
Function RenameFiles( From, Dest : String) : Boolean;
Function GetFileSize(FileName : TFileName) : Integer;
implementation
Function ExecuteOp(From : String; Dest : String; IdOp : Integer) : Boolean;
var
SHFileOpStruct : TSHFileOpStruct;
zFrom, zDest : array [0..MAX_PATH+2] of Char;
begin
From := ExpandFileName(From);
Dest := ExpandFileName(Dest);
ZeroMemory(@zFrom, SizeOf(zFrom));
ZeroMemory(@zDest, SizeOf(zDest));
StrCopy(zFrom, PChar(From));
StrCopy(zDest, PChar(Dest));
SHFileOpStruct.Wnd := GetActiveWindow();
SHFileOpStruct.wFunc := IdOp;
SHFileOpStruct.pFrom := zFrom;
SHFileOpStruct.pTo := zDest;
if IdOp <> FO_DELETE then
SHFileOpStruct.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR
else
SHFileOpStruct.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
Result := Boolean(SHFileOperation(SHFileOpStruct));
Result := Result and (SHFileOpStruct.fAnyOperationsAborted);
end;
Function CopyFiles( From, Dest : String) : Boolean;
begin
result := ExecuteOp(From,Dest, FO_COPY);
end;
Function DeleteFiles( Files : String) : Boolean;
begin
Result := ExecuteOp(Files,\'\', FO_DELETE);
end;
Function MoveFiles( From, Dest : String) : Boolean;
begin
Result := ExecuteOp(From,Dest, FO_MOVE);
end;
Function RenameFiles( From, Dest : String) : Boolean;
begin
if (ExtractFilePath(From) <> \'\') and (ExtractFilePath(Dest) = \'\') then
Dest := ExtractFilePath(From) + Dest;
Result := ExecuteOp(From,Dest, FO_RENAME);
end;
Function GetFileSize(FileName : TFileName) : Integer;
var
SearchRec : TSearchRec;
begin
if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then
Result := SearchRec.Size
else
Result := -1;
FindClose (SearchRec);
end;
end.
Eksemplet er taget fra
http://borrisholt.comJens B