Autor |
Beitrag |
An(t)on Ym
Hält's aus hier
Beiträge: 7
|
Verfasst: Sa 27.06.09 16:47
Hallo.
Ich code gerade an einem kleinen Tool, was überpüft, ob sich eine Seite verändert hat.
Dazu ruft es diese Seite immer wieder auf, und überprüft ob sich im Quelltext ein bestimmter String befindet.
Leider funktioniert das nicht - bzw. nur beim ersten Besuch. Ich denke, dass er die Seite cached oder ein Cookie verhindert, dass er einen neuen Versuch starten kann.
Meine Frage daher:
Wie kann ich den Cache oder die Cookies von einem TWebBrowser löschen?
Vielen Dank und einen schönen Samstag wünsche ich,
Anton.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Sa 27.06.09 17:06
Da der TWebbrowser den Internet Explorer verwendet, könntest du einfach vom IE die Cookies und den Cache löschen. Das ist aber nicht der Hit.
Besser ist es, wenn du einfach für deine Aufgabe die Indy Http Komponente verwendest. Du brauchst ja nur den HTML Quelltext und musst die Seite nicht darstellen oder?
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
An(t)on Ym 
Hält's aus hier
Beiträge: 7
|
Verfasst: Sa 27.06.09 19:36
Erst einmal Danke für die Antwort.
Hab mir jetzt mal die Indy Komponente angeschaut und blick das leider gar nicht.
Ich arbeite mit Delphi 7 und habe nun keine Ahnung, wie ich mir den Quelltext downloaden soll.
Hättest du vielleicht eine kleine Hilfestellung parat?
Dankeschön und schönen Abend,
Anton.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: So 28.06.09 09:41
Also im Endeffekt müsstest du hier im Forum einiges dazu finden.
Hier mal die Kurzfassung:
Auf www.indyproject.org/ gehen und dort die Komponenten herunterladen. Also hier: indyproject.org/Sock...Installation.DE.aspx
Auf dieser Seite steht dann auch schon, was du machen musst um die Komponenten zu installieren.
Danach findest du in deiner Toolbox einen Haufen neue Komponenten. Davon ziehst du dir die idHTTP auf dein Formular und kannst dann mit z.b. s := idhttp1.get('http://www.google.de'); Den Quelltext der Google Seite in den String s laden.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.06.09 10:26
Wobei die Installation nicht einmal nötig ist. Es reicht die Pfade in den Bibliothekspfad aufzunehmen, dann kann man das schon benutzen. Nebenbei funktioniert es so dann auch problemlos in Turbo Delphi. Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| uses IdHttp;
var HttpLoader: TIdHttp; PageContents: String; begin HttpLoader := TIdHttp.Create; try PageContents := HttpLoader.Get('http://www.example.com'); finally HttpLoader.Free; end; end; |
|
|
An(t)on Ym 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 28.06.09 10:49
matze hat folgendes geschrieben : | Also im Endeffekt müsstest du hier im Forum einiges dazu finden.
Hier mal die Kurzfassung:
Auf www.indyproject.org/ gehen und dort die Komponenten herunterladen. Also hier: indyproject.org/Sock...Installation.DE.aspx
Auf dieser Seite steht dann auch schon, was du machen musst um die Komponenten zu installieren.
Danach findest du in deiner Toolbox einen Haufen neue Komponenten. Davon ziehst du dir die idHTTP auf dein Formular und kannst dann mit z.b. s := idhttp1.get('http://www.google.de'); Den Quelltext der Google Seite in den String s laden. |
Nunja: Beim Ausführen von
Delphi-Quelltext 1:
| quelltext := idhttp1.Get('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi?login=+' + lstAccounts.Items.Item[i].SubItems.Strings[0] + '&password=' + lstAccounts.Items.Item[i].SubItems.Strings[1]); |
krieg ich nen schicken Fehler:
IOhandler is not valid.
Dabei hab ich es genauso gemacht, wie du es geschrieben hast.
Gäbs vielleicht nicht doch die Möglichkeit, dem WebBrowser zu verbieten, Cache + Cookies zu speichern?
Danke fürs Lesen und schönen Sonntag,
Anton.
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.06.09 10:57
Sag doch gleich, dass es um Rapidshare geht...
Du musst für den Zugriff auf SSL auch noch OpenSLL einbauen.
www.delphi-forum.de/....php?p=567361#567361
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 28.06.09 13:15
Moin!
An(t)on Ym hat folgendes geschrieben : | Wie kann ich den Cache oder die Cookies von einem TWebBrowser löschen? |
matze hat folgendes geschrieben : | Da der TWebbrowser den Internet Explorer verwendet, könntest du einfach vom IE die Cookies und den Cache löschen. |
Um mal kurz die ursprüngliche Frage zu beantworten, so z.B.:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| unit IECache;
interface
uses Classes;
type TClearIECacheThread = class(TThread) private FCount: Integer; public constructor Create(const AOnTerminate: TNotifyEvent = NIL); procedure Execute; override; property Count: Integer read FCount; end;
implementation
uses WinINet;
constructor TClearIECacheThread.Create; begin inherited Create(FALSE); FreeOnTerminate := TRUE; OnTerminate := AOnTerminate; end;
procedure TClearIECacheThread.Execute; var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord; dwEntrySize: LongWord; begin dwEntrySize := 0; FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); try if (dwEntrySize > 0) then lpEntryInfo^.dwStructSize := dwEntrySize; hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); if (hCacheDir <> 0) then repeat if DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName) then Inc(FCount); FreeMem(lpEntryInfo, dwEntrySize); dwEntrySize := 0; FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if (dwEntrySize > 0) then lpEntryInfo^.dwStructSize := dwEntrySize; until (NOT FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) or Terminated; finally FreeMem(lpEntryInfo, dwEntrySize); end; FindCloseUrlCache(hCacheDir) end;
end. |
matze hat folgendes geschrieben : | Das ist aber nicht der Hit.
Besser ist es, wenn du einfach für deine Aufgabe die Indy Http Komponente verwendest. |
Das ist allerdings richtig.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 29.06.09 08:50
Klappts denn mittlerweile auch mit den Indys?
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
noobie123
      
Beiträge: 29
|
Verfasst: Di 15.02.11 22:14
hi, danke für die arbeit mit dieser unit.
ich habe win7, IE 9 Beta und TembeddedWB von bsalsa und habe auch das problem dass ich nicht den cache leeren kann.
ich wollte mal fragen wie ich denn diese unnit richtig aufrufe damit der cache gelöscht wird?
die unit hab ich schon bei den uses eingetragen, bloß wenn ich dann als befehlszeile folgendes eingebe werde ich überrolt mit befehlen:
IECache.TClearIECacheThread. ... ... ... ...
mfg
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 15.02.11 22:32
Moin!
noobie123 hat folgendes geschrieben : | ich wollte mal fragen wie ich denn diese unnit richtig aufrufe damit der cache gelöscht wird?IECache.TClearIECacheThread. ... ... ... ... |
Das ist es doch schon fast:
Delphi-Quelltext 1:
| TClearIECacheThread.Create; | für den ganz einfachen Fall. Wenn du wissen willst, wann das Ganze fertig ist, einfach eine entsprechenden Methode als Parameter mit übergeben.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|