Autor |
Beitrag |
Sithlord
      
Beiträge: 172
|
Verfasst: Sa 12.07.08 22:10
Hallo !
Ich lade mit Hilfe von IDHTTP.get eine Seite herunter und speichere sie in einem String!
Diesen String durchsuche ich nach einem Satz mithilfe von POS !
Klappt auch ganz gut, aber ...
...Obwohl sich die Seite verändert hat und dieser Satz nicht mehr auf der Seite steht, wird angezeigt das er das steht.
Und wenn ich mit IDHTTP.get das ganze auch noch in einer html Datei speichere, bleibt diese Datei immer gleich, obwohl sich ja die quelle verändert hat!
Was mache ich falsch ?
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: So 13.07.08 03:11
Sithlord hat folgendes geschrieben: |
Was mache ich falsch ? |
du postest keinen quellcode.
gruss 
|
|
Sithlord 
      
Beiträge: 172
|
Verfasst: So 13.07.08 09:51
Ohja, sorry, war gestern so sauer darüber ^^, da hab ichs wohl vergessen :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| uses mmsystem; var check:integer;
var str:string; begin check:=1; str:=''; str:=idhttp.Get(edit1.text); sleep(600); if pos('Keine passenden Ergebnisse.',str) > 0 then check:=0; if check=1 then PlaySound('Ding', 0, SND_SYNC); |
Der Integer "check" ist global deklariert, da dieser noch woanders gebraucht wird
Und bitte keine meckereien zu meinem Quellcode - höchstens verbesserungen, da ich wie man bestimmt erkennt ein Anfänger bin in Sachen guter Quellcode
Mfg Sithlord
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|
Sithlord 
      
Beiträge: 172
|
Verfasst: So 13.07.08 13:15
Sorry für Doppelpost -
aber neuere Erkenntniss :
Das Problem liegt genau an dieser einen bestimmten Seite!
Obwohl sich der Quelltext nachweißlich ändert - bleibt er für IDhttp trotzdem gleich
Kann man mit der Webbrowserkomponente nicht was anfangen und das alles in einen String laden ?
Mfg Sithlord
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|
IceBube
      
Beiträge: 231
|
Verfasst: So 13.07.08 13:22
Mach mal so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| uses mmsystem; var check:integer;
var str:string; begin str:=idhttp.Get(edit1.text);
if pos('keine passenden ergebnisse.',LowerCase(str)) <> 0 then check:=0 else check := 1; if check=1 then PlaySound('Ding', 0, SND_SYNC); end; |
Edit: Vielleicht liegt es am "UserAgent" ??
User-Agent umstellen:
Delphi-Quelltext 1:
| idHttp.Request.UserAgent := 'IE7'; |
lg
Zuletzt bearbeitet von IceBube am So 13.07.08 13:30, insgesamt 1-mal bearbeitet
|
|
Sithlord 
      
Beiträge: 172
|
Verfasst: So 13.07.08 13:29
Danke - geht trotzdem nicht !
Wie gesagt - es geht mit stinknormalen Webpages, ich habe es im Intranet getestet
Aber Online (Firefox findet ihn mit integrierter Suche auf HTML Ebene wie auch auf Quelltextebene ) findet er es auch - aber IMMMER ! Auch wenn sich die Seite verändert hat, lädt idHTTP immer noch die alte Seite runter - die gar nicht mehr existiert (Per Browser nachgewiesen).
Das ist irgendwie komisch!
Edit:
Habe dein Code mal ins Oncreate Ereignis gepackt - geht trotzdem nicht !
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|
IceBube
      
Beiträge: 231
|
Verfasst: So 13.07.08 13:34
Naja ist komisch das er die alte Seite noch immer lädt, ich denke mir das kann am User-Agent liegen, aber ich weiß es nicht genau
Probier mal das vorher einzustellen:
Delphi-Quelltext 1: 2: 3: 4:
| idhttp.Request.UserAgent := 'IE'; idhttp.AllowCookies := False; idhttp.HandleRedirects := True; |
Edit: Kannst ma mal die Seite sagen? Dann kann ichs auch probieren! Oder ist die geheim? Du hast ja meine Talkbox könn ma chatten....
|
|
Sithlord 
      
Beiträge: 172
|
Verfasst: So 13.07.08 13:39
Kann man nicht die Twebbrowser Komponente in einen String laden ?
Das wäre glaube ich besser
Geht immer noch nicht!
Das ist komisch - obwohl sich die Seite nachweißlich ändert und der Satz gar nicht mehr da steht und ich eingeloggt bin - geht es nicht.
Edit :
Die Seite ist nur verfügbar, wenn man eingeloggt ist auf www.pcfreunde.de
Das sind die eigenen, ungelesenen Beiträge, ich hänge gleich mal Screenshoots an 
Einloggen, um Attachments anzusehen!
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|
IceBube
      
Beiträge: 231
|
Verfasst: So 13.07.08 13:45
Ich glaub schon nur weiß ich nicht genau wie - such mal bei Google!
Dadurch das du die einloggen musst, lädt er nicht die gewünschte Seite herunter. Da musst du mit Cookies arbeiten, und da kann ich dir leider nicht helfen
lg
|
|
Sithlord 
      
Beiträge: 172
|
Verfasst: So 13.07.08 13:48
Auch wenn ich mich nicht einlogge, zeigt er das an :
www.pcfreunde.de/for...68&btnApply.y=16
Das ist genau die seite- und selbst da steht nichts von "keine passende ergebnisse!
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|
IceBube
      
Beiträge: 231
|
Verfasst: So 13.07.08 13:54
Bei mir schon
Hier mein Quelltext:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function Find(Link:string):boolean; var idHttp : TidHttp; str:string; begin idhttp := TidHttp.Create(nil); idhttp.Request.UserAgent := 'IE9'; idhttp.AllowCookies := False; idhttp.HandleRedirects := True; str:=idhttp.Get(Link);
if pos('keine passenden ergebnisse.',LowerCase(str)) <> 0 then Result:= True else Result := False;
idhttp.Free; end;
Find(Die Linkadresse); |
Edit: Auch wenn ich eine andere Seite wähle wo das nicht darsteht wird funktioniert es..
Zuletzt bearbeitet von IceBube am So 13.07.08 14:09, insgesamt 1-mal bearbeitet
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: So 13.07.08 13:57
Irgendwie steht das sogar mehrmals da.
Einloggen, um Attachments anzusehen!
|
|
Sithlord 
      
Beiträge: 172
|
Verfasst: So 13.07.08 14:11
Oh ihr könnt sogar so darauf zugreifen ? Lusti xD
Naja, ok, ich werde den Code mal probieren!
Ja - steht zweimal da
Edit :
Hab nen Fehler gefunden :
Wenn man nicht eingeloggt ist, wird immer "Keine Ergebnisse" angezeigt
Daher kommt auch der Fehler, wie melde ich denn nun das Script automatisch an ?
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|
IceBube
      
Beiträge: 231
|
Verfasst: So 13.07.08 14:21
Komsich bei mir werden Ergebnisse angezeigt, wenn ich Bei Bereich wechle und dann Anwenden drücke?!?
Vielleicht funktioniert es über die URL:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function GetLink(account:string;page:integer;Kategorie:string):string; begin hLink := 'http://www.pcfreunde.de/forum/themenabfrage/?type=accountTopics&' page := 'page='+strToInt(Seite)+'&'; accID := 'accountId='+account+'&'; cat := 'categoryForumId='+ Kategorie+'&'; eLink := '&btnApply.x=70&btnApply.y=6'; Result := hLink+page+accID+cat+eLink; end;
Link := GetLink('50202',1,'F13'); |
|
|
Sithlord 
      
Beiträge: 172
|
Verfasst: So 13.07.08 14:30
Du brauchst den Bereich nicht mal zu wechseln
Mein Programm soll die eigenen, noch ungelesenen Beiträge anzeigen - wenn du auf Anwenden drückst, kommst du zu meinen ganzen Beiträgen, die ich geschrieben habe, es sollen jedoch nur die angezeigt werden, welche auch wirklich vom User noch ungelesen sind 
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|
IceBube
      
Beiträge: 231
|
Verfasst: So 13.07.08 15:27
Ok, versteh ich dann geht man auf Bereich "Alle" und dann werden die ganzen Themen aufgelistet...
dann ist ja eh alles klar oder?
www.pcfreunde.de/for...77&btnApply.y=12
^die einfach rausfiltern und schauen ob sie gelesen/ungelesen sind....
Info: Prüf den Bildnamen
lg
Edit: Wechseln muss man schon weil du ja mehrere Seiten hast!
|
|
Sithlord 
      
Beiträge: 172
|
Verfasst: So 13.07.08 15:40
Danke
So, ich habe mein Gehirn nochmal angestrengt und einen halbwegs umständlichen Weg gewählt - der aber zuverlässig geht ^^ .
Es geht ja auch nicht um Geschwindigkeit bei diesem Programm - hauptsache es macht "Ding" ^^.
Ok vielen dank an euch alle !
So bin ich zur lösung gekommen (Umständlich aber geht) :
1)Seite in TWebbrowser einlesen
2)Seitenquelltext nach Tmemo kopieren
3)Tmemo in String kopieren
4)String durchsuchen
5)Entprechende Meldung ausgeben
Das ganze dauert inklusive Laden der Seite 3-4 Sekunden, ist also relativ schnell 
_________________ Heut ist nicht alle Tage, ich hab wieder ein Problem, keine Frage...
|
|