![]() |
Verzeichnisse kopieren mit ShFileOperation erzeugt Fehler
Hallo zusammen,
ich bin jetzt schon seit 2 Stunden in Hilfen und Foren am lesen und suchen, warum ich nix kopieren kann. Ich hatte folgende Routine schonmal erfolgreich verwendet um Verzeichnisse zu kopieren
Delphi-Quellcode:
So hab ich diesen Code genommen und in mein neues Projekt kopiert.
function CopyDir(const fromDir, toDir: widestring): Boolean;
// ^^^ von String nach widestring nach Problemen mit langen Dateinamen ^^^ var fos: TSHFileOpStruct; begin ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_COPY; fFlags := FOF_FILESONLY; pFrom := PChar(fromDir + #0); pTo := PChar(toDir) end; Result := (0 = ShFileOperation(fos)); end; leider funzt das gar nicht. Weder eine Datei zu kopieren noch ein ganzes Verzeichnis. der letzte verzweifelt aufruf war
Delphi-Quellcode:
Als Antwort vom System bekomme icheine Warnmeldung mit der Schrift
copydir('D:\Memotest.bmp','XXXMEO.BMP')
Datei kann nicht kopiert werden:Die Quelldatei oder vom Datenträger kann nicht kopiert werden weis da jemand rat woher dieser Fehler kommt ? Gruß Matthias |
Re: Verzeichnisse kopieren mit ShFileOperation erzeugt Fehle
Moin Matthias,
hier:
Delphi-Quellcode:
fehlt noch das +#00
pTo := PChar(toDir)
Ob WideString oder String hat übrigens nichts mit langen Dateinamen zu tun. Solange Du die Standardversion der API-Funktion benutzt, ist es sowieso die für Ansi, und nicht für Wide. |
Re: Verzeichnisse kopieren mit ShFileOperation erzeugt Fehle
Hallo Matthias,
hast du es schon so probiert?
Delphi-Quellcode:
Aufruf so:
function CopyDir(const fromDir, toDir: string): Boolean;
// für Widestring-Namen ist ShFileOperationW() zu verwenden var fos: TSHFileOpStruct; begin ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_COPY; fFlags := FOF_FILESONLY; pFrom := PChar(fromDir + #0); pTo := PChar(toDir); end; Result := (0 = ShFileOperation(fos)); end;
Delphi-Quellcode:
@Christian:
copydir('D:\Memotest.bmp', 'D:\XXXMEO.BMP');
// MS: Use fully-qualified paths. // Using relative paths is not prohibited, but can have unpredictable results. WinSDK :: SHFILEOPSTRUCT
Ohne das Flag wird der Leerstring wohl nicht benötigt. Freundliche Grüße |
Re: Verzeichnisse kopieren mit ShFileOperation erzeugt Fehle
@Christian:
das ergänzen des Codes brachte leider das gleiche ergebnis => funzt nicht Das mit widestring hat tatsächlich mein Problem gelöst, ist noch aus meinem älteren Projekt warum ich nicht genau darauf eingehen möchte. Aber wie gesagt es funzt so nicht. ob ich das #00 anhänge scheint auch egal zu sein... @marabu: Du hast nur bei Quelle nen Leerstring angehängt, das reicht? Kann sonst keinen Unterschied entdecken ??? Gruß Matthias |
Re: Verzeichnisse kopieren mit ShFileOperation erzeugt Fehle
Moin Marabu,
ein Stück weiter oben steht dann noch: Zitat:
|
Re: Verzeichnisse kopieren mit ShFileOperation erzeugt Fehle
Man sollte einfach mit klarem Kopf so nen Code verbrechen - wie konnt ich das übersehen - hab die Zeilen heute xmal gelesen :wall: :wall:
Danke an euch...es funzt jetzt Gruß Matthias |
Re: Verzeichnisse kopieren mit ShFileOperation erzeugt Fehle
Moin Christian,
Zitat:
Ein, zwei zusätzliche Nulls am Ende schaden allerdings auch nicht. Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz