| Autor |
Beitrag |
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: So 16.04.06 12:51
Hallo!
Ich lese auf einer Seite die neuste Version meines Programms aus (x.x.x) und vergleiche sie dann mit der momentanen Version.
Mit ist vor kurzem das erste mal aufgefallen, dass es bei jemandem hieß das er die neuste Version hat, obwohl es sie aber nicht war!
Ich lese die neuste Version in eine lokale Variable und drin steht die falsche (aktuelle) Version (warscheinlich weil schon mal nach Updates überprüft worden ist und in der zwischenzeit die Version geändert wurde). Also muss das noch in irgendeinem Zwischenspeicher hängen..
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: So 16.04.06 12:52
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Born-to-Frag 
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: So 16.04.06 13:55
Ich habe hier etwas gefunden um den ganzen Chache zu löschen, aber ist das nicht ein bisschen umständlich nur um eine 5Byte große Textdatei neu laden zu können?
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: So 16.04.06 14:07
Zeig doch bitte mal deinen Code mit dem du das machst. Sonst kann man hier nur raten und dir nicht helfen !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Born-to-Frag 
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: So 16.04.06 14:12
Deswegen hab ich ja den Link gepostet  (Oder hast du ihn übersehn?)
Hier ist er also noch mal:
Delphi-Quelltext 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:
| uses WinInet;
procedure DeleteIECache; var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord; dwEntrySize: LongWord; begin dwEntrySize := 0; FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); if hCacheDir <> 0 then begin repeat DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName); 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); end; FreeMem(lpEntryInfo, dwEntrySize); FindCloseUrlCache(hCacheDir); end; |
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: So 16.04.06 14:53
nein den Quelltext mein ich nicht. Ich meine den, mit dem du die Verisonnummer ausliest.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Born-to-Frag 
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: So 16.04.06 14:57
Achsooo  ^^
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| NewVersion := IdHttp1.Get(VersionURL); if (NewVersion <> CurrentVersion) and (NewVersion <> '') then begin ... MessageBox(Hanlde, 'Update vorhanden!', 'Information', MB_OK or MB_ICONINFORMATION); end; |
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: So 16.04.06 16:42
Also als erstes würde ich mal einen try..except Block darum bauen.
Dann würde ich mir mal alle Werte anzeigen lassen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| try NewVersion := IdHttp1.Get(VersionURL); showmessage ('Version vom Server: ' + NewVersion + #13'Lkale Version: ' + CurrentVersion); if (NewVersion <> CurrentVersion) and (NewVersion <> '') then begin ... MessageBox(Hanlde, 'Update vorhanden!', 'Information', MB_OK or MB_ICONINFORMATION); end; except showmessage ('Fehler bei der HTTP Verbindung'); end; |
Schau mal, was da rauskommt, evtl hilft dir das schon weiter.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Born-to-Frag 
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: So 16.04.06 16:47
Hallo!
try .. except-Block hab ich alles drum, Exceptions treten keine auf, Version lasse ich mir auch anzeigen und NewVersion ist (nicht bei mir sondern bei manchen die versuchen zu updaten) = CurrentVersion.
Anscheinend tritt der Fehler nur auf, wenn schon mal vorher nach Updates geprüft wurde und dort die Version wirklich = der NewVersion war.
Also ist noch irgendwas im Cache, aber ich kann doch nicht den ganzen Cache löschen lassen
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: So 16.04.06 17:07
Auf www.euromind.com/iedelphi/ gibts da ne Komponente oder so, die sich mit dem IE Cache beschäftigt (einzelne Einträge und so). Etwas gewöhnungsbedürftig, aber es sollte gehen.
Da der Autor der Seite nix mehr macht, haben das andere weiterentwickelt und weitere Demos zu der ganzen Geschichte geschrieben. Such einfach mal auf www.torry.net nach EmbeddedWB, dort sollte was aktuelles kommen. Dort ist auch die Komponente mit dabei.
Gruß alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: So 16.04.06 17:43
tja das ist nur alles nutzlos.
Denn die INDY kompos nehmen keinen Cache her und schon gar nicht den IE Cache. Der Fehler muss woanders liegen.
Evtl. sinds irgendwo davorgestellte Leerzeichen ? Die kannst du mittels TRIMentfernen.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Born-to-Frag 
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: So 16.04.06 18:10
Nein, darauf achte ich schon, das was im Textfile steht ist garantiert richtig..
EDIT: Also irgendetwas muss im Cache oder wo auch immer sein weil manchmal ist auch das Update da drinne wenn es z.B. 2 gab  (Download ist sofort fertig und Version ändert sich nicht)
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 17.04.06 09:12
das kann aber im prinzip nicht sein, da es bei den Indys definitv keinen Cache gibt. Also entweder liegt das an dem Server bei dem du die Datei lädst. oder es liegt an deiner Programmierung. Ich vermute mal, dass du eine HTTP Komponente auf deinem Fprmular hast, die für mehrer Anfragen zuständig ist. Mach doch mal eine alleine nur für die Update anfrage.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mo 17.04.06 10:59
Du änderst nach einem Update aber schon CurrentVersion?
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Born-to-Frag 
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: Mo 17.04.06 14:20
Hallo!
matze hat folgendes geschrieben: | | Also entweder liegt das an dem Server bei dem du die Datei lädst. |
Nein, bei anderen leuten funktioniert es zur gleichen Zeit auch
matze hat folgendes geschrieben: | | Ich vermute mal, dass du eine HTTP Komponente auf deinem Fprmular hast, die für mehrer Anfragen zuständig ist. |
Die Komponente ist nur für das Update zuständig..
GTA-Place hat folgendes geschrieben: | | Du änderst nach einem Update aber schon CurrentVersion? |
Na das ist mir auch klar, aber bei manchen die schonmal ein Update gemacht haben, geht der Download rasend schnell obwohl sie nicht unbedingt DSL haben und das bei ~600KB .. Und was gedownloaded wird ist ne alte Version, auf dem Server liegt aber keine ältere Version mehr
An der Programmierung liegt es denke ich auch nicht
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mo 17.04.06 16:58
evtl zeigst du mal ein bisschen mehr von deinem code ? oder lädst mal das ganze Projekt hoch ?
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Born-to-Frag 
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: Sa 22.04.06 02:10
Hi!
Also ich hab das jetzt etwas länger getestet..
URLDownloadToFile verwendet anscheinend den Cache (Konnte ich bei nem Kumpel jetzt testen) den ich mit der oben geposteten Prozedur leeren kann. Bringt mir aber nichts, da ich das ja nicht benutze.
Das mir die Indys etwas falsches ausgeben, könnte vielleicht daran liegen, dass keine Administratorrechte vorhanden sind!? Ich bin mir noch nicht ganz sicher und muss mir das auch noch mal näher ansehen..
Das ist alles, wo ich die Variable NewVersion ändere (sie ist lokal), also kann da doch eigendlich nichts schief gehen!?
Delphi-Quelltext 1: 2:
| NewVersion := Form1.IdHttp1.Get(URL); |
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
Sy-
      
Beiträge: 177
|
Verfasst: Mo 24.04.06 12:46
Aaalso!
Versuchs mal mit deine.txt?time=3482348965
der wert muss sich dann immer variieren, so umgehst du den cache ganz easy.
Gruß
|
|