AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie funktioniert MoveFileWithProgress?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie funktioniert MoveFileWithProgress?

Offene Frage von "matze0815"
Ein Thema von matze0815 · begonnen am 8. Mär 2006 · letzter Beitrag vom 8. Mär 2006
Antwort Antwort
matze0815

Registriert seit: 8. Mär 2006
1 Beiträge
 
#1

Wie funktioniert MoveFileWithProgress?

  Alt 8. Mär 2006, 09:20
Hallo!

Ich suche ein Beispiel des Win32-API Befehls "MoveFileWithProgress".
Es geht mir darum den Fortschitt eines Kopier- oder Verschiebe-Prozesses abzufangen.

Informationen habe ich schon unter
http://msdn.microsoft.com/library/de...thprogress.asp
und
http://msdn.microsoft.com/library/de...essroutine.asp
gefunden, aber mir ist dennoch nicht klar, wie ich den Aufruf der CallBack-Funktion gestalte!

Hier mein Versuch:

Delphi-Quellcode:
Result := MoveFileWithProgress(pchar(FilenameSource),
                               pchar(FilenameDest),
                               ProgressProc,
                               nil,
                               MOVEFILE_REPLACE_EXISTING);

function ProgressProc(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: longInt;
                      dwStreamNumber, dwCallbackReason: DWORD;
                      hSourceFile, hDestinationFile: THANDLE;
                      lpData: Pointer): DWORD;
begin
//...
end;
Die Fehlermeldung ist: "Nicht genügend wirkliche Parameter." :-(

Bin für jeden Hinweis dankbar!

(Ich verwende Delphi 2005)
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Wie funktioniert MoveFileWithProgress?

  Alt 8. Mär 2006, 09:24
Du müsstest deine Routine so deklarieren:
Delphi-Quellcode:
function CopyProgressRoutine(TotalFileSize, TotalBytesTransferred, StreamSize,
  StreamBytesTransferred: int64; dwStreamNumber, dwCallbackReason: DWORD;
  hSourceFile, hDestinationFile: THandle; lpData: pointer): DWORD; stdcall;
begin
...
end;
Wichtig sind das stdcall, die exakten Typen der Parameter (int64) und dass es sich nicht um die Methode eines Objekts handeln darf. Bei der Angabe als Parameter machst du dann ein @ vor den Namen, also:
Delphi-Quellcode:
Result := MoveFileWithProgress(pchar(FilenameSource),
                               pchar(FilenameDest),
                               @CopyProgressRoutine,
                               nil,
                               MOVEFILE_REPLACE_EXISTING);
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  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 16:29 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