Autor Beitrag
SiegfriedXX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Di 15.04.08 19:54 
Kann man mit Delphi im Internet z.b. eine .txt oder sonstige Datei abfragen ob sie eine andere Versionsnummer hat als die eigene Versionsdatei... oder vllt sogar Datum (erstelldatum bzw upload datum) abfragen und dann die daten runterladen??


(das runterladen hab ich alles da habs früher immer mit runterladen dann abfragen und dann wieder löschen wenn nicht.. der traffic der so entsteht ist enorm wenn das an die 10000 leute machen.. wie machen die richtigen firmen mit ihrem programmen das so???

irgendwelche andere tips??
bin für hilfe dankbar
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Di 15.04.08 20:06 
Die einfachste Möglichkeit wäre wohl mit TIdHTTP, die bei den Indys dabei ist. Einfach auf die Form ziehen und:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var
  str: string;
begin
  str := IdHTTP1.Get('http://www.google.de'); // hier deine URL eintragen
  // und jetzt halt deinen Vorstellungen
  // entsprechend parsen
end;


Gruß

Calculon
--

_________________
Hallo Mutti
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Di 15.04.08 20:42 
so wie ich das gerade versteh wir dder inhalt von der seite reingeladen??? ist das nicht genauso trafic ablastend als wenn man sie runterläd?? gibt es das war ja die eigendliche frage keine möglichkeit die versionsnummber abzufragen ohne viel traffic zu erzeugen??


wie gesagt 1000000000000 menschen fragen jedesmal bei programmstart ab ob es eine neue version gibt... (als beispiel im kopf einfach mal damit man sieht wenn das so viele leute immer machen das da bald der server tot ist.. bei so einer abfrage)
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Di 15.04.08 20:46 
Nun ja, wie willst du die Versionsdaten anders übertragen, als so?
Und zwischen "runterladen" und "anzeigen" ist der einzige Unterschied, dass das runtergeladene beim einen gespeichert und beim anderen angezeigt wird...

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Di 15.04.08 20:53 
mhm ok ich werd es auf jedenfall mal versuchen und den traffic im augebehalten.. vllt noch nen trick wie man die version alle 24 stunden prüft ab einer bestimmten uhrzeit?? also ich will das ungern bei formcreat z.b. reinbauen.. ideen?


EDIT:

hab das nu so gelöst das ich mit der Versionsnummer auch das Datum abspeicher und das dann einmal zum start überprüfe. wenn das passiert ist und das datum der datei älter ist als z.b. date() dann muss er die version überprüfen und abr auch gleichzeitig das neue datum in die datei abspeichern..


grob gesehen ist das eine doppelgemoppelte abfrage schwachsinn auf dem ersten blick doch

so verhindert man zumindest schonmal ein dauerndes abfragen an einem tag.. (also mit der lösung ist dann nur 1 abfrage der version pro tag möglich)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 16.04.08 05:03 
Wenn ich eine Update-Prüfung mache, dann habe ich im Internet ein php-Skript oder eine Textdatei, in der nur die Versionsinfo geliefert wird. Diese prüfe ich dann und wenn nötig lade ich dann die eigentliche Downloaddatei herunter. So muss die größere Updatedatei ausschließlich dann geladen werden, wenn anhand der Versionsinformation klar ist, dass das auch notwendig ist.

Und dabei entsteht ja nicht viel Traffic, jedenfalls nicht mehr als nötig.
chrisdrury
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Mi 16.04.08 08:49 
Vielleicht hilft Dir das weiter: www.tp-soft.de/index...rojectCode=INTUPDATE
Die Komponente TInternetUpdate benutze ich schon seit längerer Zeit...
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mi 16.04.08 11:47 
@ chrisdrury

was bewirkt denn genau diese funktion kannst du das eventuell etwas erläutern?



und an alle anderen ich glaub ich versteht nicht genau dasproblem

es kommt gerade darauf an WANN und WIE man das update prüft.. der befehl dafür ist klar nur wo und wann baut man ihn ein..

hier zwei beispiel..

ein user startet das programm (die version wird gleich beim start überprüft) und falls unterschied download.. der user startet das tool am tag vllt so 10-20 mal weiler öffter guckt und schließt.. das heißt also auch so viele überprüfungen bei einem user allein an einem tag..

nun das zweite beispiel.. ein user startet das programm updateversion wird überprüft schön und gut.. (auch wenn er es dann installieren sollte) was ist wenn der user das programm nun durchgehend anhat.. und pc sogut wie nie ausschaltet.. wann wird dann die version erneut überprüft??


mein lösungsweg bisher ist dazu:

das datum mit ins spiel zu bringen
1. einmal am tag maximal prüfen ob ein update vorhanden ist
2. nächsten tag wieder prüfen.. z.b. wenn es gerade neuer tag wird..


dumm dabei ist die ganze zeit ein timer mitlaufen zu lassen was recourcen frist.. da müsste es eine einfachere variante geben oder nicht?


ich rede erstmal rein vom logischen her nicht hier gleich mit quelltext ankommen den mach ich selber bzw falls mir bestimmte funktionen nicht einfallen könnt ihr da helfne aber sopweit sind wir bzw ich ja noch nicht
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 16.04.08 12:46 
Wozu einen Timer nehmen ???

Arbeiten deine User so wenig mit deinem Programm, dass man nicht typische Befehle verwenden könnte, um im Hintergrund die Überprüfung anzustoßen???

Außerdem: Einmal am Tag ist nicht ganz richtig: Mindestabstandszeit wäre besser ...

Also frühstens nach sagen wir 12 Stunden wieder schauen ... Wenn ich 23:59 grad geschaut hab, wird 00:01 sicherlich auch kein neues Update da sein ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
chrisdrury
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Mi 16.04.08 14:13 
user profile iconSiegfriedXX hat folgendes geschrieben:
@ chrisdrury

was bewirkt denn genau diese funktion kannst du das eventuell etwas erläutern?


Ich hänge Dir mal die Hilfe-Datei der Komponente an, die erläutert das Prinzip sehr gut.

user profile iconSiegfriedXX hat folgendes geschrieben:

und an alle anderen ich glaub ich versteht nicht genau dasproblem

es kommt gerade darauf an WANN und WIE man das update prüft.. der befehl dafür ist klar nur wo und wann baut man ihn ein..

Bei Programmstart das aktuelle Datum mit einem gespeichertem Datum (z.b. in eine Ini-Datei bei Programmende) vergleichen. Sind beide Daten gleich, passiert nichts, ist das aktuelle Datum neuer, läuft der Updateprozess an...
Einloggen, um Attachments anzusehen!
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mi 16.04.08 17:45 
die zeitabstände hört sich schön und leicht an (hatte die idee auch) nur an der umsetzung scheiterst da ich keine countdown funktion kenne.. die dann wieder von vorn anfängt wenn sie abgelaufen ist.. timer? die aktuelle Zeit abfragen und die abfrage dafür ist ja dann mal enorm da man mehrere abfragen benötigt verkompliziert alles nur mehr und mehr


und wenn er halt um 23:59 und um 0:00 das programm startet.. dann läd der user halt das 1 tag später runter ^^ sofern mr erstmal keine bessere möglichkeit zufüßen liegt.. eine perfekte für usersicht seite gelöste und für traffic und prozessor aufwand gelöste seite zu finden bleibt es dabei..


wenn du für den zeitabstand von z.b. 12 stunden eine idee hast die umsetzung dafür.. dann immer her damit
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 16.04.08 21:27 
Was spricht dagegen, einfach im OnIdle-Event der Application folgende Zeile einzufügen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Procedure TForm1.ApplicationIdle(Sender:Tobject);
begin
    CheckForUpdates(false);
end;


Und dann eine Methode CheckForUpdate zu implementieren, die etwa folgenden Source beinhaltet:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
Procedure CheckForUpdate(ForceUpdateCheck: Boolean);
begin
    //Read LastCheckDate from some storage ... (if necessary)

    If not ForceUpdateCheck Then
    Begin
        If Now - LastCheckDate < 0.5 Then
        Begin
            Exit; //No Update necessary
        end;
    end;

    LastCheckDate := Now;

    //Store LastCheckDate to some storage ... (and the cache)

    //Do whatever necessary for checking for the update!
end;


Dann noch CheckForUpdate an paar weitere Stellen setzen und du hast ein nettes Check-System ... Ach ja: ggf. für das Idlen schauen, dass Du nicht grad wegen jedem Mini-Idle-Zyklus von Platte das Update-Datum nachlädst, aber das ist ne reine Cache-Geschichte ...

Edit: Einen Kommentar kurz angepasst, zwecks Konsistenz mit Gemeintem

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.


Zuletzt bearbeitet von BenBE am Fr 18.04.08 07:39, insgesamt 1-mal bearbeitet
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 17.04.08 14:46 
was sind das bitte alles für funktionen?? ich hasse fertige funktionen wo man den inhalt von nicht mal kennt
einfach nur anwenden und fertig? <- so machen die leihen das

ich schreib fast alles selber (suchmasken filter überprüfungen abgleichungen umstruckturigungen usw.)


und englische kommentare? sieht mir abkopiert aus als selbst gemachten sorce code
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Do 17.04.08 14:58 
user profile iconSiegfriedXX hat folgendes geschrieben:
was sind das bitte alles für funktionen?? ich hasse fertige funktionen wo man den inhalt von nicht mal kennt
einfach nur anwenden und fertig? <- so machen die leihen da

Auf welche Funktionen beziehst du dich denn?

user profile iconSiegfriedXX hat folgendes geschrieben:
und englische kommentare? sieht mir abkopiert aus als selbst gemachten sorce code

Ich kommentier meine Programme größtenteils auch in Englisch...

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 17.04.08 15:03 
user profile iconSiegfriedXX hat folgendes geschrieben:
was sind das bitte alles für funktionen?? ich hasse fertige funktionen wo man den inhalt von nicht mal kennt
einfach nur anwenden und fertig? <- so machen die leihen das

Wenn Du das auf meinen Post beziehst: Hab ich grob erklärt, alles andre dazu steht in der Hilfe bzw. in den Kommentaren ...

user profile iconSiegfriedXX hat folgendes geschrieben:
ich schreib fast alles selber (suchmasken filter überprüfungen abgleichungen umstruckturigungen usw.)

Dann verwende bitte die Umschalttaste, sonst muss man noch Denken, du gehörst zu diesen Script-Kiddies, die alle immer durch PISA fallen ...

user profile iconSiegfriedXX hat folgendes geschrieben:
und englische kommentare? sieht mir abkopiert aus als selbst gemachten sorce code

Und weil wir grad bei Kommentaren sind: Ich kommentiere auch zu großen Teilen auf Englisch; es ist eher die Ausnahme, dass mal was auf Deutsch in meinem Source steht. Bezeichner übrigens Grundsätzlich Englisch - bei Deutschen Bezeichnern bekomm ich die Krätze!

Und Zwecks Abkopiert: Ich mach mir demnächst (auf jeden Fall für Dich!) nicht mehr die Mühe, einen Beispiel-Code zu schreiben ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
zongo-joe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 134

win xp prof
D3, D4, D7
BeitragVerfasst: Do 17.04.08 15:05 
Lieber SiegfriedXX, vielleicht wäre es gut, wenn Du Dich im Ton etwas zurückhältst, wenn andere Dir helfen. Das gibts es keine "fertige Funktion" in BenBes Lösung, das sind alles Variablen (abgesehen vllt von "now")
<edit> zu spät... </edit>
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 17.04.08 23:40 
"Script-Kiddies" nur weil man klein schreibt? einfach zeitlästig immer die umschalttaste zu drücken und noch darauf zu achten ob man gramatikalisch richtig schreibt als lieber zu versuchen das was man genau meint rüber zu bringen...


ok mit den funktionen ist das sone sache weiß nicht wieso du dich angegriffen fühlst
jedoch musst du nicht auch davon ausgehen das jeder deine beispiele gleich versteht

sind das bei dir im code variabeln und wenn ja wo sind diese deklariert?


und agressive ist glaub ich hier keiner auch wenn das vielleicht so rüberkam dann tuts mir leid
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 18.04.08 08:36 
Moin!

user profile iconSiegfriedXX hat folgendes geschrieben:
einfach zeitlästig immer die umschalttaste zu drücken und noch darauf zu achten ob man gramatikalisch richtig schreibt als lieber zu versuchen das was man genau meint rüber zu bringen...
Die Form, in der man was "rüberbringt", ist integraler Bestandteil dessen, "was man genau meint rüber zu bringen". :zwinker: Und was immer gern vergessen wird (ähm, eigentlich schon fast komplett abwesend ist): Du hast ein Problem und stellst Hürden auf, dir zu helfen - na, da ist man ja direkt motiviert, so jemandem seine Hilfe anzubieten... :?

---

Damit genug OT, bitte beim Thema bleiben! :mahn: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 18.04.08 11:34 
user profile iconSiegfriedXX hat folgendes geschrieben:
ok mit den funktionen ist das sone sache weiß nicht wieso du dich angegriffen fühlst
jedoch musst du nicht auch davon ausgehen das jeder deine beispiele gleich versteht

Wenn am Beispiel etwas nicht klar ist, dann hab ich nichts gegen konkrete Fragen dazu.

user profile iconSiegfriedXX hat folgendes geschrieben:
sind das bei dir im code variabeln und wenn ja wo sind diese deklariert?

Zu den Variablen: LastCheckDate ist vom Typ TDateTime, was allein schon aus der Verwendung der Funktion Now hervorgeht (zu der Du mehr Infos in der Hilfe findest).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
chrisdrury
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Fr 18.04.08 12:26 
user profile iconSiegfriedXX hat folgendes geschrieben:
die zeitabstände hört sich schön und leicht an (hatte die idee auch) nur an der umsetzung scheiterst da ich keine countdown funktion kenne.. die dann wieder von vorn anfängt wenn sie abgelaufen ist.. timer? die aktuelle Zeit abfragen und die abfrage dafür ist ja dann mal enorm da man mehrere abfragen benötigt verkompliziert alles nur mehr und mehr


und wenn er halt um 23:59 und um 0:00 das programm startet.. dann läd der user halt das 1 tag später runter ^^ sofern mr erstmal keine bessere möglichkeit zufüßen liegt.. eine perfekte für usersicht seite gelöste und für traffic und prozessor aufwand gelöste seite zu finden bleibt es dabei..


wenn du für den zeitabstand von z.b. 12 stunden eine idee hast die umsetzung dafür.. dann immer her damit

Also irgendwie hört sich das alles etwas konfus an... :wink:
Was willst Du denn nun wirklich?
Einmal am Tag nach einem Update schauen? Oder mehrmals? Oder zu einer bestimmten Uhrzeit? :?: