Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Programm friert bei Download ein? (https://www.delphipraxis.net/117219-programm-friert-bei-download-ein.html)

buster55 14. Jul 2008 13:16


Programm friert bei Download ein?
 
hallöle ;-)
ich lade mit folgender funktion eine datei runter:
Delphi-Quellcode:
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
  except
    Result := False;
  end;
end;
Aufruf:
Delphi-Quellcode:
     if DownloadFile(SourceFile, DestFile) then
  begin
  showmessage('Download wurde erfolgreich abgeschlossen!!');

  end

  else

 showmessage('Fehler');

  end;


allerding friert das programm immer ein wenn ich den download starte und 'taut' erst nach dessen ende wieder auf.
der download funktioniert einbahnfrei genau so wie ich es mit wünsche aber, es ist mir unrecht dass das programm einfriert.

Delphi-Quellcode:
Application.ProcessMessages;
kenn ich natürlich, weiß aber nicht wie ich es in diesem falle einbringen soll, alles was ich bis jetzt versucht hab ist wirkungslos :-(

danke im vorraus

Luckie 14. Jul 2008 13:17

Re: Programm friert bei Download ein?
 
Guck dir mal den letzten Parameter bei MSDN-Library durchsuchenUrlDownloadToFile an, dort kannst du eine Callback Funktion angeben.

Meflin 14. Jul 2008 13:20

Re: Programm friert bei Download ein?
 
Delphi-Quellcode:
Application.ProcessMessages;
Bringt dir in diesem Fall nix, da es innerhalb des URLDownloadToFile aufgerufen werden müsste!

Eine mögliche Lösung für dich wären Hier im Forum suchenThreads bzw. Delphi-Referenz durchsuchenTThread.

Damit friert dir garantiert nix ein ;)

Apollonius 14. Jul 2008 13:23

Re: Programm friert bei Download ein?
 
Auf wessen Mist ist eigentlich diese Idee gewachsen, URLDownloadToFile mit try-except zu umschließen? Ich sehe das in letzter Zeit ständig.

SaFu 14. Jul 2008 13:28

Re: Programm friert bei Download ein?
 
Zitat:

Zitat von Apollonius
Auf wessen Mist ist eigentlich diese Idee gewachsen, URLDownloadToFile mit try-except zu umschließen? Ich sehe das in letzter Zeit ständig.

Was würdest du als Fehlerüberwachung einbauen??

Apollonius 14. Jul 2008 13:31

Re: Programm friert bei Download ein?
 
API-Funktionen schmeißen höchstens Exceptions wie Stackoverflow o.Ä., welche du sowieso nicht vernünftig behandeln kannst. Fehler werden durch den Rückgabewert angezeigt.

buster55 14. Jul 2008 13:32

Re: Programm friert bei Download ein?
 
danke, das geht beängistigent schnell ;-)

@lucki
könntest du mir das mit der callback funktion mal naher erlütern? oder gar auf meine funktion mal anweden bitte, für mich ist das online arbeiten mit delphi eher neuland deshalb kann ihc mit callback noch nicht so viel anfangen :?

Luckie 14. Jul 2008 13:33

Re: Programm friert bei Download ein?
 
Man könnte auch einfach mal im Forum suchen: Hier im Forum suchenUrlDownloadToFile. ;)

Die Muhkuh 14. Jul 2008 13:36

Re: Programm friert bei Download ein?
 
Schau mal da: http://www.delphipraxis.net/internal...downloadtofile

buster55 14. Jul 2008 13:52

Re: Programm friert bei Download ein?
 
hab ich auch eben gefunden aber trotzdem danke :)
aber bei:
Delphi-Quellcode:
cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback)
sagt mir mein delphi 7 prof. das da kein = stehen darf sondern : aber das wär dann ja flasch und dann gibts auch nur fehler :cry:

Die Muhkuh 14. Jul 2008 13:58

Re: Programm friert bei Download ein?
 
Haste auch brav "type" davor geschrieben?

buster55 14. Jul 2008 14:03

Re: Programm friert bei Download ein?
 
ich bin die bravigkeit in person :mrgreen:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback)
bitte nicht schimpfen wenns falsch is :zwinker:

dominikkv 14. Jul 2008 14:07

Re: Programm friert bei Download ein?
 
Zitat:

Zitat von buster55
ich bin die bravigkeit in person :mrgreen:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback)
bitte nicht schimpfen wenns falsch is :zwinker:

FALSCH! SCHIMPF! :cyclops:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
  // ...
  public
  // ...
  end;

  cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback)
  // bla
  end;

buster55 14. Jul 2008 14:22

Re: Programm friert bei Download ein?
 
gemacht, danke aber jetzt kommt leider das :
[Error] Unit1.pas(74): Undeclared identifier: 'OnStartBinding'
[Error] Unit1.pas(74): Undeclared identifier: 'GetPriority'
[Error] Unit1.pas(74): Undeclared identifier: 'OnLowResource'
[Error] Unit1.pas(74): Undeclared identifier: 'OnProgress'
[Error] Unit1.pas(74): Undeclared identifier: 'OnStopBinding'
[Error] Unit1.pas(74): Undeclared identifier: 'GetBindInfo'
[Error] Unit1.pas(74): Undeclared identifier: 'OnDataAvailable'
[Error] Unit1.pas(74): Undeclared identifier: 'OnObjectAvailable'
[Error] Unit1.pas(74): Undeclared identifier: 'QueryInterface'
[Error] Unit1.pas(74): Undeclared identifier: '_AddRef'
[Error] Unit1.pas(74): Undeclared identifier: '_Release'
[Error] Unit1.pas(92): Undeclared identifier: '_AddRef'
...
...
... geht noch lang weiter ;-(


und das alles beim code:

Delphi-Quellcode:
  private
    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: 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;
    stdcall;
    function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall;


  public

   end;
   cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback)
  end;

Die Muhkuh 14. Jul 2008 14:27

Re: Programm friert bei Download ein?
 
Schau mal genau, wie Dominik es gezeigt hat.

Desweiteren nicht vergessen, die benötigten Units einzubinden.

buster55 14. Jul 2008 14:33

Re: Programm friert bei Download ein?
 
könnt iht mir nicht einfach zeigen was ich da falsch mache den meiner ansicht nach ist es genau so wie dominikkv
erst private dann public dann ein end; dann die klassendeklaration und nochmal ein end; :wall:

dominikkv 14. Jul 2008 14:42

Re: Programm friert bei Download ein?
 
Mit Type legst du einen neuen Typ fest, zB eine Klasse. Eine Klasse besteht grob gesagt aus dem:
Delphi-Quellcode:
type // Schlüsselwort
  TMeineKlasse = class(Vorfahr)
  // Felder, Methoden und Eigenschaften
  end;
Bei dir gibt es schon eine von der IDE angelegte Klasse namens TForm1.
Jetzt willst du eine neue Klasse unten drunter setzen.
Delphi-Quellcode:
type // Schlüsselwort
  TMeineKlasse = class(Vorfahr)
  // Felder, Methoden und Eigenschaften
  end;

  TMeineNeueKlasse = class(Vorfahr)
  // Felder, Methoden und Eigenschaften
  end;
Nicht vergessen das eine Klasse mit end; abgeschlossen wird :wink:

SaFu 14. Jul 2008 14:57

Re: Programm friert bei Download ein?
 
Und sowas kommt in die Code-Library, wo von vornherein der Code nicht stimmt. Traurig

buster55 14. Jul 2008 14:58

Re: Programm friert bei Download ein?
 
danke mein guter ich liebe dich :mrgreen: :mrgreen: :mrgreen:
ne im ernst hast mir gut geholfen, das kommt davon wenn man ~1/3 jahr nicht aktiv programmiert :!:

dominikkv 14. Jul 2008 15:00

Re: Programm friert bei Download ein?
 
Zitat:

Zitat von fuknersascha
Und sowas kommt in die Code-Library, wo von vornherein der Code nicht stimmt. Traurig

öhh... der stimmt doch -.-

SaFu 14. Jul 2008 15:13

Re: Programm friert bei Download ein?
 
Ich versuch das gerade auch aber dann bekomm ich das anscheinend nicht hin

SaFu 15. Jul 2008 10:13

Re: Programm friert bei Download ein?
 
Ich glaub da muss ich mich entschuldigen, der Code stimmt doch :oops:

buster55 15. Jul 2008 18:30

Re: Programm friert bei Download ein?
 
ich habe erneut probleme damit bitte mal auf:
http://www.delphipraxis.net/internal...t.php?t=138623
gehen
danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 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