AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FileListBox + FO_COPY

Ein Thema von TheMiller · begonnen am 24. Feb 2004 · letzter Beitrag vom 24. Feb 2004
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

FileListBox + FO_COPY

  Alt 24. Feb 2004, 20:23
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:

DOFileWork(FO_Copy,FileListBox1.FileName,DirectoryListbox2.Directory,FOF_RENAMEONCOLLISION); 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?
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#2

Re: FileListBox + FO_COPY

  Alt 24. Feb 2004, 21:08
Ich habe diese function verwendet:

Delphi-Quellcode:
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;
Danke im Vorraus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: FileListBox + FO_COPY

  Alt 24. Feb 2004, 21:12
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: FileListBox + FO_COPY

  Alt 24. Feb 2004, 21:25
Ok, danke,

aber wenn ich diesen Code benutze und eine, oder mehrere Daten kopieren will, dann sagt er mir:

Datei kann nicht kopiert werden. Die Quelldatei oder vom Datenträger kann nicht gelesen werden wieso das? Die schleife verstehe ich übrigens
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: FileListBox + FO_COPY

  Alt 24. Feb 2004, 21:54
Kann es sein, dass an dieser Stelle der Quelltext falsch ist? WEnn ja, warum? Sieht eigentlich logisch aus
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#6

Re: FileListBox + FO_COPY

  Alt 24. Feb 2004, 23:35
kann mir keiner Helfen? Bitte!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: FileListBox + FO_COPY

  Alt 24. Feb 2004, 23:51
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);
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz