Autor Beitrag
Shadowdragon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 143

Win 2000
Delphi 6 Pers., Delphi 7
BeitragVerfasst: Fr 18.04.03 18:32 
Hi!

Ich habe vor, ein Programm zu schreiben (schonmal gut so weit!).
Dieses Programm soll die Größe einer Datei, deren Pfad bereits angegeben ist (meinetwegen in dem String "pfad"), auslesen.
Nun wird per HTTP auf eine Datei auf einem Server zugegriffen und die Größe der beiden Dateien verglichen.

Auf Deutsch:
Ich habe eine Datei, die Spiel.exe heisst (als Beispiel).
Nun schreibe ich Änderungen daran und lade sie auf meinen Server hoch.
Jedesmal, wenn der Benutzer mein Programm ausführt, soll die Größe von Spiel.exe auf der Festplatte mit der auf dem Server verglichen werden.
Wenn die Dateigröße größer ist, soll Spiel.exe heruntergeladen werden (also ein Autopatcher sozusagen).

Fragen dazu:
1)
Wie sage ich meinem Programm, die Größe der Datei auszulesen (einerseits auf der Festplatte und dann auf dem HTTP-Server)?
2)
Welche Bedingungskette muss ich da nehmen? Beispiel:
ausblenden Quelltext
1:
2:
3:
IF dateigrößeHD < dateigrößeServer THEN
  idhttp1.get(...)
else (...)

Wie bekomme ich die Dateigrößen jetzt in die Integers? ^__^ ja ich bin ein Noob, ich weiss!
3)
Ganz einfache Frage: Wie sage ich meinem Programm, dass es dann am Ende Spiel.exe ausführen soll?


So, viel Text, viele Fragen, Danke für jede Antwort ^_^

MfG

Shadowdragon

_________________
Ein Programm gleicht dem Prinzip von Jenga:
Viele Bestandteile, wird nach oben hin immer besser, nach unten hin immer instabiler und wenn man was falsch macht klappt der ganze Mist zusammen.
Hansi@OMG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 304

Vista
Delphi 2006 Prof., Lazarus
BeitragVerfasst: Fr 18.04.03 19:57 
Also Zu 1:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function GetFileSize(const AFileName: String): Integer;
var
  F: TSearchRec;
begin
  Result:=-1;
  if FindFirst(AFileName,faAnyFile,F)=0 then
  begin
    Result := F.Size;
    FindClose(F);
  End;
end;

Wird aufgerufen durch:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var Datei1,datei2 : integer;
      Pfad1, Pfad2 : string;
begin
  Datei1:=GetFileSize(pfad1);
  Datei2:=GetFileSize(pfad2);
if Datei1 > Datei2 then idhttp1.get(...) else (...);
end;

Hierbei wird auch gleich verglichen, du brauchst dann nur noch die Anweisungen einfügen, des machst aber bitte selber.


Zu 3:
Such mal im Forum nach 'shellexecute'.
Und nicht vergessen ShellAPI in uses oben einzutragen.
Genaueres wirst du schon finden.
Shadowdragon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 143

Win 2000
Delphi 6 Pers., Delphi 7
BeitragVerfasst: Fr 18.04.03 19:58 
Danke ^^ probier ich gleich mal aus!

_________________
Ein Programm gleicht dem Prinzip von Jenga:
Viele Bestandteile, wird nach oben hin immer besser, nach unten hin immer instabiler und wenn man was falsch macht klappt der ganze Mist zusammen.
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Fr 18.04.03 20:12 
Hi,

mal was grundsätzliches. eine grössere *.exe muss ja nicht immer neuere Version bedeuten. Daher würde ich anders vorgehen:

Lege deiner spiel.exe eine ini-Datei bei in der die Versionnummer steht. Des Weiteren sollte sich eine ini-Datei auf dem Server befinden in der die aktuelle versionsnummer des patches steht.

Dein Auto-Patcher lädt diese ini-Datei zuerst runter, liest sie aus, vergleicht sie mit der Versionsnummer aus der Ini-Datei die auf der Festplatte des Anwenders liegt. Wenn die version vom Server neuer ist wird dann der Patch runtergeladen.

Beispiele hierzu solltest Du eigentlich finden wenn du mal googelst.

MFG

- Ernesto -
Shadowdragon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 143

Win 2000
Delphi 6 Pers., Delphi 7
BeitragVerfasst: Fr 18.04.03 20:17 
Ja doch, das is eine gute Idee!

Aber bei mir langt das eigentlich, denn bei mir ist ne größere .exe IMMER ne neuere Version....

Schreib die Datei in QBASIC, und es kommt eigentlich immer nur was dazu.

Daher... :wink:

_________________
Ein Programm gleicht dem Prinzip von Jenga:
Viele Bestandteile, wird nach oben hin immer besser, nach unten hin immer instabiler und wenn man was falsch macht klappt der ganze Mist zusammen.