Avatar billede zerohero Nybegynder
25. september 2000 - 16:59 Der er 5 kommentarer og
1 løsning

fil behandling

Jeg har forstået at kopiér, klippe, sætte ind (osv.) filer på min HD via delphi. Er der en som kan give mig nogle eksempler. på for hånd tak.
Avatar billede zerohero Nybegynder
25. september 2000 - 17:00 #1
ups... Jeg har ALDRIG forstået at kopiér, klippe, sætte ind (osv.) filer på min HD via delphi. Er der en som kan give mig nogle eksempler. på for hånd tak.

ZeroHero
Avatar billede dj Nybegynder
25. september 2000 - 18:26 #2
slå MoveFile og CopyFile op i hjælpen, så vil du se at det er ret enkelt at kopiere og flytte fil er i Delphi.
Avatar billede zerohero Nybegynder
26. september 2000 - 08:12 #3
Ja men det også fint nok, men der er nogle udtryk jeg ikke helt forstår. Pchar, cardinal er ikke lige helt min stærke side.
Hvis jeg nu har en fil jeg vil have kopieret et andet sted hen på min HD eksempelvis:

fra \'C:\\delphi\\myfile.exe\' til \'E:\\borland\\myfile.exe\'

kan du så give mig et kode eksempel på det?

på forhånd tak...
Avatar billede tknudsen Nybegynder
26. september 2000 - 08:47 #4
fra delphi online hjælp:

BOOL CopyFile(

    LPCTSTR lpExistingFileName,    // pointer to name of an existing file
    LPCTSTR lpNewFileName,    // pointer to filename to copy to
    BOOL bFailIfExists     // flag for operation if file exists
  );   


Parameters

lpExistingFileName

Points to a null-terminated string that specifies the name of an existing file.

lpNewFileName

Points to a null-terminated string that specifies the name of the new file.

bFailIfExists

Specifies how this operation is to proceed if a file of the same name as that specified by lpNewFileName already exists. If this parameter is TRUE and the new file already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds.

DVS.

for at kopiere \'C:\\delphi\\myfile.exe\' til \'E:\\borland\\myfile.exe\' skal du gøre følgende:

CopyFile(PChar(\'C:\\delphi\\myfile.exe\'),PChar(\'E:\\borland\\myfile.exe\'),false);

den sidste parameter (som er false) bestemmer om operationen skal \"fejle\" hvis filen allerede findes. Functionen returnere en værdi <> 0 hvis det lykkes.
Avatar billede zerohero Nybegynder
26. september 2000 - 09:12 #5
1000 tak tknudsen.
Avatar billede borrisholt Novice
26. september 2000 - 11:09 #6
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.com

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester