Einzelnen Beitrag anzeigen

Benutzerbild von Gina
Gina

Registriert seit: 23. Dez 2004
Ort: Berlin
161 Beiträge
 
Delphi 6 Professional
 
#1

Freeze bei SHFileOperationA

  Alt 30. Jun 2005, 20:11
Hallochen,

ich benutze folgende Routine, um Dateioperationen auszuführen:

Delphi-Quellcode:
function TMain.DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString;
         Flags: FILEOP_FLAGS): Integer;
var
  FromPath, ToPath: AnsiString;
  SH: TSHFileOpStruct;
begin
  FromPath := aFrom + #0#0;
  ToPath := aTo + #0#0;
  with SH 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;
    SH.lpszProgressTitle := PChar('Verschiebe...'); //funktioniert nur bei FOF_SIMPLEPROGRESS
  end; // structure
  Result := SHFileOperationA(SH);
end;
Unter anderem auch, um Dateien von einem ort an einen anderen zu kopieren... Wenn die Datei jedoch etwas größer ist (ca. 500MB), dann friert mein Programm ein (Es beruhigt sich zwar nach einer Weile, aber das dauert...). Die Routine in einen Thread auszulagern, scheint nicht wirklich sinnvoll, da überwiegend kleinere Dateien kopiert werden und da gibt es ja keine Probleme. Aber es gibt immer wieder auch mal größere dateien, die damit kopiert werden sollen...

Hat jemand einen Tipp oder Trick für mich, was ich tun könnte, damit mein programm nicht einfriert? Oder ist die einzige Möglichkeit ein Thread? Und falls nur ein Thread in Frage kommt, "schadet" dss bei kleinen Dateien?

Tausend Dank, liebe Grüße, Gina.
Mein Lieblings-Spiele-Laden in Berlin: www.cometgames-store.de

{KDT}
.
  Mit Zitat antworten Zitat