![]() |
Dateien aus Listbox nach beliebiges Verzeichnis kopieren?
Ich möchte alle in einer Listbox vorhandenen Dateien in ein beliebiges Verzeichnis kopieren. Ich nutzte den Code von sakura:
Delphi-Quellcode:
Der Aufruf:
function DoFileWork(
aWnd: HWND; aOperation: UINT; aFrom, aTo: TStrings; aFlags: FILEOP_FLAGS ): Integer; var I: Integer; FromPath, ToPath: string; SHFileOpStruct: TSHFileOpStruct; begin FromPath := ''; for I := 0 to aFrom.Count - 1 do FromPath := FromPath + aFrom.Strings[I] + #0; FromPath := FromPath + #0; if Assigned(aTo) then begin ToPath := ''; for I := 0 to aTo.Count - 1 do ToPath := ToPath + aTo.Strings[I] + #0; ToPath := ToPath + #0; if aTo.Count > 0 then aFlags := aFlags or FOF_MULTIDESTFILES; end; with SHFileOpStruct do begin Wnd := aWnd; wFunc := aOperation; pFrom := PChar(FromPath); if Assigned(aTo) then begin pTo := PChar(ToPath) end else begin // target available pTo := nil; end; // target not available fFlags := aFlags; end; // structure Result := SHFileOperation(SHFileOpStruct); end;
Delphi-Quellcode:
möchte einfach nicht funktionieren. Wo muß die genaue Pfadangabe vorgenommen werden?
procedure TForm1.Button2Click(Sender: TObject);
var sl: TStringList; begin sl := TStringList.Create; sl.AddStrings(ListBox2.Items); DoFileWork(Self.Handle, FO_COPY, sl); end; |
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
DoFileWork kopiert halt nicht Dateien aus einer Liste in ein Verzeichnis, sondern wiederum in eine Liste von Verzeichnissen. Du brauchst also ein zweites tStrings-Objekt, welches mindestens dein Zielverzeichnis als einzigen Eintrag enthält. Außerdem gibst du keinen Parameter für aFlags an, darauf müsste dein Compiler dich schon hingewiesen haben.
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Das ist wahr. Der Compiler ist sehr unzufrieden. Also wenn ich es recht verstehe, müsste ich eine 2. Stringliste erzeugen, die wiederum den Pfad enthält. Und wie würde der Aufruf dann aussehen?
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Delphi-Quellcode:
Welche Werte FILEOP_FLAGS beinhaltet, weis ich nicht.
DoFileWork(Self.Handle, FO_COPY, slQelldateien, slZielpfad, IrgendWelcheFlags)
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
stehen in der listbox die aktuellen pfade der dteien drin oder versteh ich dich falsch
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
In deer ListBox1 stehen die zu kopierenden Dateien samt Pfad drin. In ListBox2 lediglich der Zielpfad (C:\Blablabla\).
Ich habe den Aufruf insoweit abgeändert:
Delphi-Quellcode:
Leider bisher ohne Erfolg.
procedure TForm1.Button2Click(Sender: TObject);
var sl, dl: TStringList; begin sl := TStringList.Create; dl := TStringList.Create; sl.AddStrings(ListBox2.Items); dl.AddStrings(ListBox3.Items); DoFileWork(Self.Handle, FO_COPY, sl, dl, FOF_ALLOWUNDO); sl.Free; dl.Free; end; |
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Dann müsste dies doch klappen:
Zitat:
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
ich hab da mal geschrieben aber mit nem memo anstatt ne listbox ich suchs und stell es online
so das ist alles
Delphi-Quellcode:
uses StrUtils
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_Kopieren:-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //Edit1 = der von pfad //Edit2 = der nach pfad //label2 = wieviele dateien copiert sind //in memo setehen die dateien halt drin //---Button-4---------------------------------------------------------------------------------- procedure TForm1.Button4Click ( Sender: TObject ) ; var Datei: Integer; begin if Edit2.Text <> '' then begin Progressbar1.Max:= Memo1.Lines.Count; for Datei:= 0 to Memo1.Lines.Count -1 do begin ForceDirectories ( Edit2.Text + '\' + AnsiReplaceStr ( ExtractFileDir ( Memo1.Lines [ Datei ] ) , Edit1.Text , '' ) ) ; CopyFile ( pchar ( Memo1.Lines [ Datei ] ) , pchar ( Edit2.Text + '\' + AnsiReplaceStr ( Memo1.Lines [ Datei ] , Edit1.Text,'' ) ) , true ); Label2.Caption:= InttoStr ( Datei + 1 ); Progressbar1.Position:= Datei + 1; Application.ProcessMessages; if Progressbar1.position = Progressbar1.max then begin ShowMessage('Alles wurde Kopiert!'); end; end; end else begin Exit; end; end; |
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Das wäre Super. Danke.
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Wie äußert sich denn dieser Misserfolg?
Compilerfehler? AV? Was passiert denn genau? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 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