AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit SHFileOperationA

Ein Thema von gkaeberich · begonnen am 18. Mai 2007 · letzter Beitrag vom 18. Mai 2007
Antwort Antwort
gkaeberich

Registriert seit: 21. Mai 2003
Ort: Friedrichsdorf
59 Beiträge
 
Delphi 6 Professional
 
#1

Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 10:31
Hallo,

ich habe eine Funktion zum Kopieren, Verschieben, etc von Dateien und Verzeichnissen gefunden und in ein eigenes Programm integriert.

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;
In einem Formular sind jeweils zwei Drive-Comboboxen, zwei Directory-Listboxen und zwei Filelistboxen jeweils als Quelle und Ziel angelegt. Nach Auswahl einer Quelldatei und einem Zielordner wird per Button die obige Funktion aufgerufen. Dies klappt auch wunderbar bei dem ersten Kopiervorgang. Wenn ich eine zweiten Kopiervorgang (aus selbem Quellordner in selben Zielordner) starten möchte erhhalte ich eine Fehlermeldung:

Datei kann nicht kopiert werden. Die Quelldatei oder vom Quelldatenträger kann nicht gelsen werden.

Wechsel ich zwischen zwei Kopiervorgängen Quelllaufwerk oder Quellordner klappt es wieder - aber nur einmal.

Dies ist Behandlungsroutine für den Kopierbutton

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
{***************************************************************************************}

var i : integer;
    files : string;

begin
  files := '';
  for i := 0 to filelistbox1.Items.Count - 1 do
    if filelistbox1.Selected [i] then
      files := files + filelistbox1.Items [i];
  DoFileWork(FO_COPY, files, directorylistbox2.Directory, FOF_NOCONFIRMATION);
  filelistbox1.update;
  filelistbox2.update;
end;
Wer kann mir helfen

Günther Käberich

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
[edit=Christian Seehase]Delph-Tags ergänzt. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 10:51
Moin Günther,

die einzelnen Dateien in der Liste müssen mit #00 getrennt werden.
Statt:
files := files + filelistbox1.Items [i]; solltest Du
files := files + filelistbox1.Items [i]+#00; schreiben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
gkaeberich

Registriert seit: 21. Mai 2003
Ort: Friedrichsdorf
59 Beiträge
 
Delphi 6 Professional
 
#3

Re: Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 10:53
Hallo,

das Anfügen von #0 passiert doch in der Funktion, die zum Kopieren aufgerufen wird.

Günther
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 10:55
Moin Günther,

nein, das +#00#00 dient dazu die Liste abzuschliessen.
SHFileOperation benutzt #00 um einzelne Dateien voneinander zu trennen, und #00#00 um das Ende der Liste zu erkennen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
gkaeberich

Registriert seit: 21. Mai 2003
Ort: Friedrichsdorf
59 Beiträge
 
Delphi 6 Professional
 
#5

Re: Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 11:00
Hallo Christian,

der Effekt ist geblieben - erst nach einem Verzeichniswechsel kann ich einmal kopieren.

Günther
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 11:19
Moin Günther,

ich glaube jetzt hab' ich's:
Du übergibst der Funktion nur die Dateinamen, aber ohne Pfad.
Woher soll die Funktion denn wissen, wo die Quelldateien stehen?
Wenn Du die Variable files zusammenbaust, musst Du je Datei noch den Quellpfad davorschreiben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 12:41
Zitat von Christian Seehase:
die einzelnen Dateien in der Liste müssen mit #00 getrennt werden.
Meintest du nicht "abgeschlossen" anstatt "getrennt"? Ich dachte immer die Liste müsste so aussehen:
Code:
file1#0file2#0file3#0#0
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 12:56
Moin Michael,

sag' ich doch, nur: Ich schreibe #00, wo Du #0 schreibst. Es ist aber immer nur ein Zeichen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
gkaeberich

Registriert seit: 21. Mai 2003
Ort: Friedrichsdorf
59 Beiträge
 
Delphi 6 Professional
 
#9

Re: Probleme mit SHFileOperationA

  Alt 18. Mai 2007, 14:23
Hallo,

klappt super.

Danke

Günther Käberich
  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 14:32 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