![]() |
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? |
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Der Compiler ist mit oben genannter Nachbesserung recht zufrieden. Es kann nunmehr der angegebene Pfad (Zielpfad) nicht gefunden werden.
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Dann würde ich den Zielpfad mal unter die Lupe nehmen. Entweder ist er nicht vorhanden (und wird auch von SHFileOperation nicht angelegt) oder er ist syntaktisch inkorrekt oder was auch immer.
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
kanste damit was anfangen??
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Eigentlich schon. Für was steht "Inte0001"? Außerdem findet der Compiler "+ AnsiReplaceStr" nicht so toll.
PS: Das mit der Fortschrittanzeige ist schon toll. |
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Delphi-Quellcode:
hab das vorhin noch schnell umbenannt sry dachte hätte alle umgenannt
inte0001:= Datei
Delphi-Quellcode:
vergas ich dazuzuschreiben
uses StrUtils
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Der Compiler hat nichts mehr zu meckern. Allerdings wird immer noch nichts kopiert.
|
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
hast du irgendwas veränder??
wen ja poste mal kurz |
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
so ich gib dir mal mein prog.
mach aber keinen scheiß mit PS @ moderatoren ich wollte editiren |
Re: Dateien aus Listbox nach beliebiges Verzeichnis kopieren
Versprochen. Danke
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 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