![]() |
FileListBox + FO_COPY
Hi,
habe aus der DL den Code zum Kopieren von Daten mittels SHFileOperation. Habe links eine FileListBox und rechts eine DirectoryListBox und ich möchte die Daten von FileListBox in DirectoryListBox kopieren. Hatte folgenden Code:
Delphi-Quellcode:
Dieser Code kopiet aber nur eine Datei, obwohl ich MultiSelect in der ListBox aktiviert habe. Muss ich eine Schleife benutzen und wenn ja, wie sähe so eine aus?
DOFileWork(FO_Copy,FileListBox1.FileName,DirectoryListbox2.Directory,FOF_RENAMEONCOLLISION);
|
Re: FileListBox + FO_COPY
Ich habe diese function verwendet:
Delphi-Quellcode:
Danke im Vorraus
function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString;
Flags: FILEOP_FLAGS): Integer; var FromPath, ToPath: AnsiString; SHFileOpStruct: TSHFileOpStruct; begin FromPath := aFrom + #0#0; ToPath := aTo + #0#0; with SHFileOpStruct do begin Wnd := 0; wFunc := aOperation; pFrom := PAnsiChar(FromPath); if ToPath <> '' then begin pTo := PAnsiChar(ToPath) end else begin // target available pTo := nil; end; // target not available fFlags := Flags; end; // structure Result := SHFileOperationA(SHFileOpStruct); end; |
Re: FileListBox + FO_COPY
Ist schon richtig so, dass nur eine Datei kopiert wird,
denn FileListBox1.FileName enhält nur den Dateinamen der zuletzt markierten Datei. Schau dir mal das an:
Delphi-Quellcode:
FileListBox1.Items.Count
FileListBox1.Items.Strings[i] FileListBox1.Selected[i] Damit
Delphi-Quellcode:
For i := 0 to FileListBox1.Items.Count - 1 do
If FileListBox1.Selected[i] Then DOFileWork(FO_Copy, FileListBox1.Items.Strings[i], DirectoryListbox2.Directory, FOF_RENAMEONCOLLISION); [add] mit der Anderen, auf StringList basierenden Version, hättest du alle Dateien verarbeitet und nicht nur die markierten, wenn du nur FileListBox1.Items übergeben hättest. |
Re: FileListBox + FO_COPY
Ok, danke,
aber wenn ich diesen Code benutze und eine, oder mehrere Daten kopieren will, dann sagt er mir:
Delphi-Quellcode:
wieso das? Die schleife verstehe ich übrigens ;-)
Datei kann nicht kopiert werden. Die Quelldatei oder vom Datenträger kann nicht gelesen werden
|
Re: FileListBox + FO_COPY
Kann es sein, dass an dieser Stelle der Quelltext falsch ist? WEnn ja, warum? Sieht eigentlich logisch aus
|
Re: FileListBox + FO_COPY
kann mir keiner Helfen? Bitte!!
|
Re: FileListBox + FO_COPY
Das Verzeichnis der zu verarbeitenden Datei muß natürlich auch noch rein.
FileListBox1.FileName gibt die Datei samt Verzeichnis zurück, abar FileListBox1.Items.Strings[i] gibt nur die Dateinamen zurück.
Code:
For i := 0 to FileListBox1.Items.Count - 1 do
If FileListBox1.Selected[i] Then DOFileWork(FO_Copy, [color=red]FileListBox1.Directory + '\' + [/color]FileListBox1.Items.Strings[i], DirectoryListbox2.Directory, FOF_RENAMEONCOLLISION); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 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