![]() |
Zugriffsverletzung Idhttp.Get in verwendung mit Threads
Hallo erstma.
Ich hab ein kleines Problem, ich hab ein Programm geschrieben das in soweit fertig ist, aber leider andauernt einfriert und keine Rückmeldung mehr gibt. Es belastet die internetverbindung sehr, da sehrrrrrr viel Idhttp.get-Abfragen ausgeführt werden. Nun dacht ich mir, lager ich doch diese Abfragen in Threads aus um die stabilität des Programmes zu erhöhen. Doch leider musste ich nach einigem probieren festellen, das ich immer eine Zugriffsverletzung erhilt! Nun dacht ich mir, das ich einen fehler in der Einbindung gemacht habe und habe nun versucht einfach mal in einem völlig neuem Projekt per idhttp.Get mir den Qt einer Seite zu holen. Nunja Pustekuchen geht nicht krieg wie vorher ne Zugriffsverletzung. Nun aber genug gelabert und ich zeig euch einfach ma den wichtigen teil des Qt, aber mich bitte nicht gleich in der Luft zereißen, da ich noch nicht sooo viel mit Threads gearbeitet habe. Die Deklaration:
Code:
Aufruf des Threads:
ThreadArray: array of TMyThread;
Code:
Der Threadcode:
Setlength(ThreadArray, 1);
ThreadArray[0]:=TMyThread.Create(true); ThreadArray[0].Resume;
Code:
So ich weiß wirklich nicht was ich falsch gemacht habe, und ich hoffe ihr könnt mir helfen, achja hier noch die Zugriffsverletzung:
procedure TMyThread.Execute;
begin Synchronize(UpdateCaption); end; procedure TMyThread.UpdateCaption; var getqt :string; begin getqt := Idhttp1.Get('www.delphipraxis.net'); end;
Code:
Mfg goodvirus(ich hoffe der code ist ausreichen um mein problem zu lösen)
Expection der Klasse EAccessViolation aufgetren. Meldung: 'Zugriffsverletzung bei usw. im Modul 'Test.exe'
|
Re: Zugriffsverletzung Idhttp.Get in verwendung mit Threads
*push*
Währ echt schade wenns keine antwort geben würd... |
Re: Zugriffsverletzung Idhttp.Get in verwendung mit Threads
Hallo!
Irgendwie komme ich mit dem Problem nicht so ganz klar. Zunächst einmal: Ist das alles? Wenn Du nur hast:
Delphi-Quellcode:
dann führst Du allen Code im Hauptthread aus! Die Nutzung eines Threads ist dann flüssiger als Wasser - nämlich überflüssig.
procedure TMyThread.Execute;
begin Synchronize(UpdateCaption); end; Was soll das dann werden, wenn es fertig ist?
Delphi-Quellcode:
Der Code kann unmöglich alles sein - Du deklarierst eine lokale Variable, weist ihr einen Wert zu und benutzt das Ergebnis nie. Der Compiler sollte warnen, daß der Werrt nie benutzt wird und optimiert normalerweise dann den ganzen Aufruf raus.
procedure TMyThread.UpdateCaption;
var getqt :string; begin getqt := Idhttp1.Get('www.delphipraxis.net'); end; Es ist zunächst erforderlich, herauszufinden, wo genau der Fehler passiert. Also solltest Du den Thread-Code einmal im Einzelschritt-Modus durchgehen. Dann kannst Du ja den wirklich relevanten Teil posten. Zitat:
Gruß Dietmar Brüggendiek |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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