AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy freeze Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Indy freeze Problem

Ein Thema von Novo · begonnen am 17. Feb 2009 · letzter Beitrag vom 21. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#1

Indy freeze Problem

  Alt 17. Feb 2009, 19:46
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!


GetRadioInfo wird im TimerGetRadioInfoTimer alle 10 Sekunden aufgerufen,
und GetRadioInfo ruft mehrmals function ThreadedHTTP auf, und da hängts!

Delphi-Quellcode:
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.
achja... und
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Indy freeze Problem

  Alt 17. Feb 2009, 20:06
Und wo genau denkst du jetzt, dass dein HTTP-Request threaded abläuft
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Indy freeze Problem

  Alt 17. Feb 2009, 20:33
Zitat von Meflin:
Und wo genau denkst du jetzt, dass dein HTTP-Request threaded abläuft
äh xD?
oh^^


so besser?

Delphi-Quellcode:
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;
... usw.
also für alle 4 extra Threaded function?
ist immernoch net besser
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

Re: Indy freeze Problem

  Alt 17. Feb 2009, 20:34
Nein. du erstellst immernoch nirgends einen Thread! Dazu müsstest du ein Exemplar von TThread erzeugen oder aber BeginThread verwenden
http://www.hsg-kl.de/faecher/inf/mat...eads/index.php
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Indy freeze Problem

  Alt 17. Feb 2009, 20:52
Zitat von Meflin:
Nein. du erstellst immernoch nirgends einen Thread! Dazu müsstest du ein Exemplar von TThread erzeugen oder aber BeginThread verwenden
http://www.hsg-kl.de/faecher/inf/mat...eads/index.php
aah so geht das ...
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
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Indy freeze Problem

  Alt 19. Feb 2009, 13:29
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
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Indy freeze Problem

  Alt 19. Feb 2009, 13:31
Nimm doch einfach Synapse:
http://www.ararat.cz/synapse/doku.php

die sind von Haus aus multithreaded...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Indy freeze Problem

  Alt 19. Feb 2009, 13:46
Zitat von Novo:
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
Dann machst du irgendwas falsch. Zeig uns doch mal den Code von deinem Thread.

@Meflin: Ich glaube nicht, dass eine andere Komponentensammlung was an dem Problem ändert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#9

Re: Indy freeze Problem

  Alt 19. Feb 2009, 13:48
Zitat von Luckie:
@Meflin: Ich glaube nicht, dass eine andere Komponentensammlung was an dem Problem ändert.
Klar, ein Download via Synapse läuft ansynchron, sprich sien Programm wartet nicht auf das Ende sprich es friert nicht ein. es sei denn du mientest mit Problem das mangelnde Verständnis der Threads
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Indy freeze Problem

  Alt 20. Feb 2009, 12:08
@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?
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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