Entwickler-Ecke
Dateizugriff - Vergleich von Dateigrößen und Ausführen einer .exe
Shadowdragon - Fr 18.04.03 18:32
Titel: Vergleich von Dateigrößen und Ausführen einer .exe
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:
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
Hansi@OMG - Fr 18.04.03 19:57
Also Zu 1:
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:
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 - Fr 18.04.03 19:58
Danke ^^ probier ich gleich mal aus!
ErnestoChe - 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 - 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:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!