![]() |
Indy freeze Problem
Hi,
ich lese mit Indy.get(URL) Internetseiten aus, und werte die Informationen aus. Das soll es alle 10 Sekunden über einen Timer machen. Das Problem ist, dass dann alle 10 Sekunden die Form für 3 Sekunden freezed! idAntiFreeze bringt auch nichts! Jetzt habe ich das so gemacht, als Thread, es freezed immernoch! :wiejetzt: GetRadioInfo wird im TimerGetRadioInfoTimer alle 10 Sekunden aufgerufen, und GetRadioInfo ruft mehrmals function ThreadedHTTP auf, und da hängts!
Delphi-Quellcode:
achja... und :dp:
unit MainU;
//... blabla function readout(text, vorne, hinten: string): string; var astring: string; begin astring := copy(text, Pos(vorne, text) + length(Vorne), PosEx(hinten, text, Pos(vorne, text)) - Pos(vorne, text) - length(vorne)); result := astring; end; function StringsucheVor(Quelle,anfang,ende:string):string; var i,k,erstestelle: longint ; ergebnis : String; begin i := 0 ; k := length(anfang); ergebnis := ''; ersteStelle := pos(anfang,Quelle); if ersteStelle <> 0 then begin while copy(Quelle,erstestelle+k+i,1) <> ende do begin ergebnis := ergebnis + copy(Quelle,erstestelle+k+i,1); inc(i); end; end; result := ergebnis; end; function ThreadedHTTP(URL:string):string; var cHttp : TidHTTP; QuellCode : string; begin cHttp := TidHTTP.Create (Nil); Try QuellCode := cHttp.Get(URL); Finally cHttp.Free; result := QuellCode; End End; procedure GetRadioInfo; var //Quellcode der Homepage QuellCodeTechnobase : string; QuellCodeTrancebase : string; QuellCodeHardbase : string; QuellCodeHousetime : string; //Technobase TechnobaseModerator : string; TechnobaseShow : string; TechnobaseStyle : string; TechnobaseListener : string; TechnobaseTrack : string; //Trancebase TrancebaseModerator : string; TrancebaseShow : string; TrancebaseStyle : string; TrancebaseListener : string; TrancebaseTrack : string; //Hardbase HardbaseModerator : string; HardbaseShow : string; HardbaseStyle : string; HardbaseListener : string; HardbaseTrack : string; //Housetime HousetimeModerator : string; HousetimeShow : string; HousetimeStyle : string; HousetimeListener : string; HousetimeTrack : string; begin QuellCodeTechnobase := ThreadedHTTP('http://www.technobase.fm'); QuellCodeTrancebase := ThreadedHTTP('http://www.trancebase.fm'); QuellCodeHardbase := ThreadedHTTP('http://www.hardbase.fm'); QuellCodeHousetime := ThreadedHTTP('http://www.housetime.fm'); TechnobaseListener := StringSucheVor(QuellCodeTechnobase, 'TechnoBase</a>:</td><td>', '<'); frmMain.lblTechnobaseListener.caption := TechnobaseListener; TechnobaseModerator := StringSucheVor(QuellCodeTechnobase, 'target="_top"><span style="color:#FFDD82">', '<'); frmMain.lblTechnobaseModerator.Caption := TechnobaseModerator; TechnobaseShow := StringSucheVor(QuellCodeTechnobase, '/span></a><span style="color:#DFB649"> mit "', '"'); frmMain.lblTechnobaseShow.Caption := TechnobaseShow; TechnobaseStyle := StringSucheVor(QuellCodeTechnobase, '"</span><span style="color:#DFB649"> (', ')'); frmMain.lblTechnobaseStyle.Caption := TechnobaseStyle; TechnobaseTrack := StringSucheVor(QuellCodeTechnobase, '<div style="width:345px;float:left; margin-top:11px; overflow:hidden">', '<'); frmMain.lblTechnobaseTrack.Caption := Trim(TechnobaseTrack); //--- HardbaseListener := StringSucheVor(QuellCodeHardbase, 'HardBase</a>:</td><td>', '<'); frmMain.lblHardbaseListener.caption := HardbaseListener; HardbaseModerator := StringSucheVor(QuellCodeHardbase, 'target="_top">', '<'); frmMain.lblHardbaseModerator.caption := HardbaseModerator; HardbaseShow := StringSucheVor(QuellCodeHardbase, '</a> mit "', '"'); frmMain.lblHardbaseShow.caption := HardbaseShow; HardbaseStyle := StringSucheVor(QuellCodeHardbase, '" (', ')'); frmMain.lblHardbaseStyle.caption := HardbaseStyle; HardbaseTrack := StringSucheVor(QuellCodeHardbase, '<div style="width:345px;float:left; margin-top:11px; overflow:hidden">', '<'); frmMain.lblHardbaseTrack.Caption := Trim(HardbaseTrack); //--- HousetimeListener := StringSucheVor(QuellCodeHousetime, 'HouseTime</a>:</td><td>', '<'); frmMain.lblHousetimeListener.caption := HousetimeListener; HousetimeModerator := StringSucheVor(QuellCodeHousetime, 'target="_top">', '<'); frmMain.lblHousetimeModerator.Caption := HousetimeModerator; HousetimeShow := StringSucheVor(QuellCodeHousetime, '</a> mit "', '"'); frmMain.lblHousetimeShow.Caption := HousetimeShow; HousetimeStyle := StringSucheVor(QuellCodeHousetime, '" (', ')'); frmMain.lblHousetimeStyle.Caption := HousetimeStyle; HousetimeTrack := StringSucheVor(QuellCodeHousetime, '<div style="width:345px;float:left; margin-top:11px; overflow:hidden">', '<'); frmMain.lblHousetimeTrack.Caption := Trim(HousetimeTrack); //--- TrancebaseListener := StringSucheVor(QuellCodeTrancebase, 'TranceBase</a>:</td><td>', '<'); frmMain.lblTrancebaseListener.caption := TrancebaseListener; TrancebaseModerator := StringSucheVor(QuellCodeTrancebase, 'target="_top">', '<'); frmMain.lblTrancebaseModerator.Caption := TrancebaseModerator; TrancebaseShow := StringSucheVor(QuellCodeTrancebase, '</a> mit "', '"'); frmMain.lblTrancebaseShow.Caption := TrancebaseShow; TrancebaseStyle := StringSucheVor(QuellCodeTrancebase, '" (', ')'); frmMain.lblTrancebaseStyle.Caption := TrancebaseStyle; TrancebaseTrack := StringSucheVor(QuellCodeTrancebase, '<div style="width:345px;float:left; margin-top:11px; overflow:hidden">', '<'); frmMain.lblTrancebaseTrack.Caption := Trim(TrancebaseTrack); end; procedure TfrmMain.TimerGetRadioInfoTimer(Sender: TObject); begin GetRadioInfo; end; end. |
Re: Indy freeze Problem
Und wo genau denkst du jetzt, dass dein HTTP-Request threaded abläuft :gruebel:
|
Re: Indy freeze Problem
Zitat:
oh^^ :duck: so besser?
Delphi-Quellcode:
... usw.
function ThreadedHTTPTechnobase():string;
var cHttp : TidHTTP; QuellCode : string; begin cHttp := TidHTTP.Create (Nil); Try QuellCode := cHttp.Get([url]http://www.technobase.fm[/url]); Finally cHttp.Free; result := QuellCode; End End; also für alle 4 extra Threaded function? ist immernoch net besser :coder: |
Re: Indy freeze Problem
Nein. du erstellst immernoch nirgends einen Thread! Dazu müsstest du ein Exemplar von TThread erzeugen oder aber BeginThread verwenden ;)
![]() |
Re: Indy freeze Problem
Zitat:
Muss erstmal wieder Delphi und alle Komponenten neu installieren, ich erstelle nämlich gerade eine Windows Se7en Komponente, diese hat mir aber beim Installieren alle anderen Komponenten geschrottet xD. Nacher teste ich es mal! EDIT: Hmm habs imemrnoch nicht so ganz Verstanden, wie das mit dem Thread funktioniert! Anhand der Beep Demo auf der Seite da hab ichs verstanden, wenn ich das mit Indy mache, gehts immernoch nicht :S Morgen 2. Versuch GN8 |
Re: Indy freeze Problem
Hm also irgendwie funktioniert mein Thread nicht.
Ich kann es zwar threaded machen, allersings kann ich dann dem Thread keine URL oder sowas übergeben, da das dann trotzdem freezed |
Re: Indy freeze Problem
Nimm doch einfach Synapse:
![]() die sind von Haus aus multithreaded... |
Re: Indy freeze Problem
Zitat:
@Meflin: Ich glaube nicht, dass eine andere Komponentensammlung was an dem Problem ändert. |
Re: Indy freeze Problem
Zitat:
|
Re: Indy freeze Problem
@Luckie
Kannst du mir einen Thread machen, das: idHTTP.create result := idhttp.get(URL) also ein Thread als Funktion die ich mit de mParameter (der URL) aufrufen kann oder ich mache halt 4 eigene Threads mit jeweils einer anderen URL also ich muss: Quellcode einer URL holen per POS StringSucheVor die Infos aus dem Quellcode rausholen Die Infos auf einem Label Anzeigen und das mehrmals mit verschiedenen URLS und Suchparameter wie soll ich das Theraded machen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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