Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi WinInet - InternetSetStatusCallback reagiert nicht (https://www.delphipraxis.net/79277-wininet-internetsetstatuscallback-reagiert-nicht.html)

hsbc 19. Okt 2006 15:09


WinInet - InternetSetStatusCallback reagiert nicht
 
Hallo allerseits,

ich lade mit FtpGetFile eine Datei vom Server und möchte erreichen, dass während des Downloads die procedure StatusCallback mehrmals aufgerufen wird, um den Fortschritt des Downloads zu bearbeiten. Der Download selbst funktioniert einwandfrei, nur wird die procedure leider nie aufgerufen. Weiss jemand, was ich da falsch mache? Leider geht aus der Dokumentation der Routinen von Microsoft auch nicht hervor, wann bzw. wo InternetSetStatusCallback im Quellcode eingefügt werden muss. Hier die relevanten Teile des Codes:

Delphi-Quellcode:
hSession := InternetOpen(PChar(Application.Title),
            INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

hConnect := InternetConnect(hSession, PChar(Server.Text), INTERNET_DEFAULT_FTP_PORT,
            PChar(User.Text), PChar(Passwort.Text),
            INTERNET_SERVICE_FTP or WININET_API_FLAG_ASYNC, 0, 0);

InternetSetStatusCallback(hSession, @StatusCallback);

result := FtpGetFile(hConnect, PChar(aUrl), PChar(aLokalFile), false, 64, FTP_TRANSFER_TYPE_BINARY, dwBytes);


procedure StatusCallback(hInet: HINTERNET; Context, Status: DWORD;
                         pInformation: Pointer; InfoLength: DWORD);
begin
  ShowMessage('Callback');
end;
mfg
Herbert

marabu 19. Okt 2006 19:30

Re: WinInet - InternetSetStatusCallback reagiert nicht
 
Hallo Herbert,

ein paar Hinweise:
  • den Callback würde ich direkt nach einem erfolgreichen InternetOpen() setzen
  • niemals nicht würde ich ShowMessage() in der callback procedure aufrufen
  • die callback procedure muss stdcall als linkage convention verwenden
  • last but not least würde ich den Rückgabewert von InternetSetStatusCallback() prüfen
Schönen Abend noch

marabu

hsbc 19. Okt 2006 19:39

Re: WinInet - InternetSetStatusCallback reagiert nicht
 
Hallo marabu,

das Fehlen von stdcall war es. Jetzt funktioniert das mal. Das ShowMessage war nur versuchsweise, jetzt gebe ich die Ergebnisse in einer Liste aus.

Wie ich den Rückgabewert der Funktion InternetSetStatusCallback noch auswerten kann, ist mir noch unklar, aber damit werde ich noch herumexperimentieren.

Nochmals allerherzlichen Dank für deine Hilfe.

mfg
Herbert


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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 by Thomas Breitkreuz