Forum Delphi.cz

Delphi => Obecné => Téma založeno: vangog 19-09-2018, 19:54:25

Název: Nelze zkopírovat soubor
Přispěvatel: vangog 19-09-2018, 19:54:25
Zkoušel jsem copyfile (taktéž i movefile, ale se stejným výsledkem) na windows XP 32:
Kód: Delphi [Vybrat]
  1. copyfile(PChar(s),PChar(targerFile));
  2.  
či
Kód: Delphi [Vybrat]
  1. copyfile(s,targerFile);
obě mi hodí vyjímku v antiwin :

Kód: Delphi [Vybrat]
  1. procedure CopyFile(FromFileName,TofileName:string);
  2. var FromFile, ToFile: file;
  3. begin
  4. AssignFile(FromFile, FromFilename);
  5. AssignFile(ToFile, ToFilename);
  6. Reset(FromFile);      (* NENI OSETRENO NA CHYBU *)
  7. try
  8.   Rewrite(ToFile);
  9.   try // https://www.frameworkpascal.com/helphtml/lzexpand_unit.htm
  10.      if LZCopy (TFileRec(FromFile).Handle,
  11.                 TFileRec(ToFile).Handle) < 0 then
  12.          raise EInOutError.Create('Error copying file');
  13.   finally
  14.      CloseFile(ToFile);
  15.   end;
  16. finally
  17.   CloseFile(FromFile);
  18. end;
  19. end;
  20.  

'Error copying file'

Cílový soubor se vytvořil, ale je prázdný.

FromFileName,TofileName má správné hodnoty, ale kukátkem na FromFile a ToFile nic nevidím.

Jak to vyřešit? Původně jsem chtěl jen přesun souboru, jako aby se nic nekopírovalo ale zdá se že to nejde.
Název: Re:Nelze zkopírovat soubor
Přispěvatel: JaroB 19-09-2018, 19:58:24
V RxLibrary je jednoduchy CopyFile, spustitelny v Delphi 7 viz ke stažení http://micrel.cz/RxLib/dfiles.htm (http://micrel.cz/RxLib/dfiles.htm)
Název: Re:Nelze zkopírovat soubor
Přispěvatel: vangog 19-09-2018, 20:15:17
Windows taktez obsahuje moznost kopirovat soubory, pomoci CopyFile (https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-copyfile) funkce. OP vsak zda se pouziva LZ dekompresi pomoci LZCopy (https://docs.microsoft.com/en-us/windows/desktop/api/lzexpand/nf-lzexpand-lzcopy) ;) Kdyz jsme u tech kompresi, nejrychlejsi mi zatim vysel LZ4.

Však právě to Windowsovské copyfile jsem chtěl použít, ale asi se tak nestalo. Co mám špatně v zadaném příkazu? Jak se volá ta windowsovská záležitost?
Název: Re:Nelze zkopírovat soubor
Přispěvatel: vangog 19-09-2018, 20:26:35
Windows taktez obsahuje moznost kopirovat soubory, pomoci CopyFile (https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-copyfile) funkce. OP vsak zda se pouziva LZ dekompresi pomoci LZCopy (https://docs.microsoft.com/en-us/windows/desktop/api/lzexpand/nf-lzexpand-lzcopy) ;) Kdyz jsme u tech kompresi, nejrychlejsi mi zatim vysel LZ4.

Však právě to Windowsovské copyfile jsem chtěl použít, ale asi se tak nestalo. Co mám špatně v zadaném příkazu? Jak se volá ta windowsovská záležitost?

Kdovi. Psal jsi o chybe jenz byla vyvolana Tebou z vlastni kopirovaci funkce. Windows API funkce jsou ve vetsine pripadu vybaveny tim, ze se nastavi chybova promenna z posledne volane funkce (pomoci SetLastError). A tato neni vyjimkou:

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

nepsal jsem žádnou kopírovací funkci. prostě jsem napsal jen copyfile a vyskočila chyba

Ono to krachne takže nezjístím výstupní hodnotu nebo chybovou hlášku
Název: Re:Nelze zkopírovat soubor
Přispěvatel: vangog 19-09-2018, 20:33:12
nepsal jsem žádnou kopírovací funkci. prostě jsem napsal jen copyfile a vyskočila chyba

Aha, a tyto 2 radky delaji co?

Kód: Delphi [Vybrat]
  1. if LZCopy (TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0 then
  2.   raise EInOutError.Create('Error copying file');

Nevyvolaji nahodou popsanou vyjimku?

No ano. To je to co jsem popsal v otázce. Sem mi to skočí. Ta funkce je součástí delphi 7. Skočilo mi to do antiwin.pas - nevím kde je ten soubor, ale určitě v adresáři pod delphi, jinak by to tam nemohlo skočit...
Název: Re:Nelze zkopírovat soubor
Přispěvatel: vangog 19-09-2018, 20:38:12
Aha, tak pardón. Teď koukám, že ta funkce je součástí projektu (psal ji někdo jiný)  :o

Je to pod modulem antiwin.

Ale jak tedy obejít antiwin a spustit tu správnou funkci?

PS:
Vyřešeno. Jsem tu funkci přejmenoval.
Název: Re:Nelze zkopírovat soubor
Přispěvatel: Stanislav Hruška 19-09-2018, 20:49:42
OT
Citace
Mohu nabidnout wrapper, ale prvne se delfinek potrebuje aklimatizovat a nainstalovat vse z5 na zk****ny Windows 10
A Ty nemáš TrueImage, alebo jeho obdobu? Ináč tiež čakám kedy ma to postihne.
Název: Re:Nelze zkopírovat soubor
Přispěvatel: pepak 19-09-2018, 21:27:12
Windows.CopyFile, respektive WinApi.Windows.CopyFile, podle verze Delphi.
Název: Re:Nelze zkopírovat soubor
Přispěvatel: Stanislav Hruška 20-09-2018, 08:24:10
Citace
Nevim jak by si takovy nastroj poradil s migraci aplikaci z 32-bitoveho Windows 7 na 64-bitove Windows 10
To je niečo iné. Ja som si myslel, že Ti padol OS. Tiež som ten prechod nedávno absolvoval ručne.