![]() |
Download fortschritt als im/als Image
Hallo,
ich lade mit UrlDownloadFile dateien aus dem internet, jetzt möchte ich den download fortschritt in einem Image anzeigen lassen. Alerdings hab ich kein plan wie das geht, hab zwar etwas ähnliches mit einer progressbar gefunden, aber da stapeln sich die fehlermeldungen bei mir. |
Re: Download fortschritt als im/als Image
1. Was für Fehlermeldungen
2. un der CallBack-Prozedur bekommst du ja die Gesamtgröße und die aktuelle Größe, damit läßt sich doch was machen? |
Re: Download fortschritt als im/als Image
Was für eine Callback procedure?
Hab folgendes genommen und nun versucht so zuändern das es mit einem Image geht? Progressbar.Progress durch Proressbalken.Width(<< das image) ersetzt.
Delphi-Quellcode:
type
cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback) private function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; function _AddRef: Integer; stdcall; function OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; stdcall; function GetPriority(out nPriority): HResult; stdcall; function OnLowResource(reserved: DWORD): HResult; stdcall; function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; stdcall; function OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall; function GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall; function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc; stgmed: PStgMedium): HResult; stdcall; function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall; end;
Delphi-Quellcode:
So nun kommen die Fehlermeldungen bei Compilieren.
function cDownloadStatusCallback._AddRef: Integer;
begin Result := 0; end; function cDownloadStatusCallback._Release: Integer; begin Result := 0; end; function cDownloadStatusCallback.QueryInterface(const IID: TGUID; out Obj): HResult; begin if(GetInterface(IID,Obj)) then begin Result := 0 end else begin Result := E_NOINTERFACE; end; end; function cDownloadStatusCallback.OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; begin Result := S_OK; end; // function cDownloadStatusCallback.GetPriority(out nPriority): HResult; begin Result := S_OK; end; function cDownloadStatusCallback.OnLowResource(reserved: DWORD): HResult; begin Result := S_OK; end; function cDownloadStatusCallback.OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall; begin Result := S_OK; end; function cDownloadStatusCallback.GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall; begin Result := S_OK; end; // function cDownloadStatusCallback.OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc; stgmed: PStgMedium): HResult; begin Result := S_OK; end; // function cDownloadStatusCallback.OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall; begin Result := S_OK; end; function cDownloadStatusCallback.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; begin case ulStatusCode of BINDSTATUS_BEGINDOWNLOADDATA: begin MainFrm.ProgressBalken.Width := 0; MessageDlg('Der Download wurde gestartet.', MtInformation, [mbYes], 0); if (UserCancel) then begin Result := E_ABORT; exit; function _Release: Integer; stdcall; end; end; BINDSTATUS_DOWNLOADINGDATA: begin MainFrm.ProgressBalken.Width := MulDiv(ulProgress,100, 240 ); MessageDlg('Datei wird runtergeladen.', MtInformation, [mbYes], 0); if (UserCancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_ENDDOWNLOADDATA: begin MessageDlg('Download wurde beendet.', MtInformation, [mbYes], 0); end; end; Application.ProcessMessages; Result := S_OK; end; Zitat:
|
Re: Download fortschritt als im/als Image
versuchs mal mit gauge statt mit progressbar
|
Re: Download fortschritt als im/als Image
hallo,
hast du es mal mit der ALProgress Bar probiert, mit der funktioniert des wunderbar bei mir. oder ist das Die die bei dir soviele Fehlermeldungen erzeugt ?? :wink: |
Re: Download fortschritt als im/als Image
Ähm ich will ja nix sagen. Ich will ein Image als Progressbar nehmen und keine Gauge, Progressbar oder ähnliches. :roll:
|
Re: Download fortschritt als im/als Image
Du kennst ja meinen "Turm von Hanoi". ;)
Da hab ich ja auch ein Image als Fortschrittsanzeige genommen. Du musst wirklich nur Width des Images verändern. Bei mir funktioniert das einwandfrei. :gruebel: |
Re: Download fortschritt als im/als Image
Joa soweit ist mir das klar, hab ja auch alles dementsprechend geändert,
jetzt kann ich das aber wegen den fehlermeldungen nicht compilieren. |
Re: Download fortschritt als im/als Image
Wie hast du es denn jetzt und was sind das für Fehlermeldungen? Wenn die Callback keine Methode deiner Formklasse ist (kann es auch nicht sein), kennt er dein Image nicht. Du musst also den Namen deiner Formklasse voranstellen.
|
Re: Download fortschritt als im/als Image
Zitat:
Du könntest ja auch mal dein Projekt hochladen - eventuell testen wir dann mal selber und entdecken womöglich den/die Fehler. [edit] der Name der Formklasse schaint ja schon drin zu sein (MainFrm.) es muß natürlich auch der richtige eingetragen sein. |
Re: Download fortschritt als im/als Image
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Dateien sind im Anhang. |
Re: Download fortschritt als im/als Image
Also bei mir lässt es sich ohne Probleme kompilieren (D7) - nur so ein paar kleine, "unbedeutende" Warnungen wegen des LPCWSTR.
PS: nimm mal für einen Test eine Datei, die auf jeden Fall runtergeladen werden kann - dann geht auch der Code. z.B.
Delphi-Quellcode:
URLDownloadToFIle(nil,'http://www.fnse.de/s.html','C:\index.html',0,CDownStatus);
|
Re: Download fortschritt als im/als Image
Fein, mit Delphi7 klappt es bei mir auch. Ich möchte aber das ganze in Delphi3 haben,
weil ich von Delphi 7 nur ne Personal hab. Gibts da ne möglichkeit? |
Re: Download fortschritt als im/als Image
D3 hab'sch nicht.
Ich könnte höchstens mal in D4 nachgucken (wenn ich mal Lust und Zeit dafür hab) |
Re: Download fortschritt als im/als Image
D4 dürfte nicht viel nützen. Der große sprung liegt zwischen D3 und D4.
@citybreaker: Nenn uns doch endlich mal die fehlermeldungen und zeig uns die Codezeilen dazu, sonst kommen wir hier nie weiter. :roll: |
Re: Download fortschritt als im/als Image
Die stehen doch oben. -.-'
Hier nochmal für die die keine lust haben nach oben zu scrollen.
Delphi-Quellcode:
type
cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback) private function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; function _AddRef: Integer; stdcall; function OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; stdcall; function GetPriority(out nPriority): HResult; stdcall; function OnLowResource(reserved: DWORD): HResult; stdcall; function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; stdcall; function OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall; function GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall; function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc; stgmed: PStgMedium): HResult; stdcall; function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall; end; Source: function cDownloadStatusCallback._AddRef: Integer; begin Result := 0; end; function cDownloadStatusCallback._Release: Integer; begin Result := 0; end; function cDownloadStatusCallback.QueryInterface(const IID: TGUID; out Obj): HResult; begin if(GetInterface(IID,Obj)) then begin Result := 0 end else begin Result := E_NOINTERFACE; end; end; function cDownloadStatusCallback.OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; begin Result := S_OK; end; // function cDownloadStatusCallback.GetPriority(out nPriority): HResult; begin Result := S_OK; end; function cDownloadStatusCallback.OnLowResource(reserved: DWORD): HResult; begin Result := S_OK; end; function cDownloadStatusCallback.OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall; begin Result := S_OK; end; function cDownloadStatusCallback.GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall; begin Result := S_OK; end; // function cDownloadStatusCallback.OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc; stgmed: PStgMedium): HResult; begin Result := S_OK; end; // function cDownloadStatusCallback.OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall; begin Result := S_OK; end; function cDownloadStatusCallback.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; begin case ulStatusCode of BINDSTATUS_BEGINDOWNLOADDATA: begin MainFrm.ProgressBalken.Width := 0; MessageDlg('Der Download wurde gestartet.', MtInformation, [mbYes], 0); if (UserCancel) then begin Result := E_ABORT; exit; function _Release: Integer; stdcall; end; end; BINDSTATUS_DOWNLOADINGDATA: begin MainFrm.ProgressBalken.Width := MulDiv(ulProgress,100, 240 ); MessageDlg('Datei wird runtergeladen.', MtInformation, [mbYes], 0); if (UserCancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_ENDDOWNLOADDATA: begin MessageDlg('Download wurde beendet.', MtInformation, [mbYes], 0); end; end; Application.ProcessMessages; Result := S_OK; end; Zitat:
|
Re: Download fortschritt als im/als Image
Die Funktionsdeklarationen unterscheiden sich von D3 zu D6 oder D7. Kuck mal in der entsprechenden Delphi Unit, wie sie deklariert sind und pass in deinem Code die Datentypen entsprechend an.
|
Re: Download fortschritt als im/als Image
Öh, wie heißt den die Unit?
|
Re: Download fortschritt als im/als Image
ich weiß nicht, ab welcher Version das geht, aber klick mal mit Rechts auf eine Variable/Funktion ... und dann wähl "Deklaration suchen" aus, dann such delphi wo das angeklicke deklariert ist, und zeigt es wenn möglich an und du kannst dort nachgucken, was verlangst wird.
|
Re: Download fortschritt als im/als Image
Kann es weder bei D3 noch D7 PE finden. :oops:
|
Re: Download fortschritt als im/als Image
Bei deiner D3 Prof liegen die Sourcen dabei. Und bei der D7 PE liegen die Sourcen zur ActiveX.pas auch bei. Such mal im Delophi Ordner danach.
|
Re: Download fortschritt als im/als Image
Gesucht, gefunden und geöffnet. Zimlich viel drinn da. Versteh nur nicht was
genau ich nun suchen soll und wo es da stehten könnte. (zimlich viel qt drinne) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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-2025 by Thomas Breitkreuz