![]() |
Updater Errors :'(
Hi ich hab einen Updater gemacht doch blick ich die errors nicht
deklaration :
Delphi-Quellcode:
Version: File;
Versionfrominternet: File; ReadenVersion: String; ReadenVersion2: String; SetupPath: TStream; SetUPonlinePath: File; TSTREAMONLINEVERSION: TStream;
Delphi-Quellcode:
Errors :
procedure TForm1.FormCreate(Sender: TObject);
begin TSTREAMONLINEVERSION := TFileStream.Create('./data/OnlineVersion.ini', fmCreate); try Downloader.Get('http://www.gooooogle.de/Version.ini',TSTREAMONLINEVERSION); finally end; assignfile(Version,'./data/BatchMakerVersion.ini'); rewrite(Version); // Öffne die Datei für den Schreib-Modus ReadLn(Version,ReadenVersion); CloseFile(Version); assignfile(Versionfrominternet,'./data/OnlineVersion.ini'); rewrite(Versionfrominternet); // Öffne Datei für den Schreib Modus ReadLn(Versionfrominternet,ReadenVersion2); CloseFile(Versionfrominternet); If ReadenVersion < ReadenVersion2 then begin// Wenn die Version im Internet neuer ist ... // Frag benutzer nach Aktion und wenn Ja, dann update If MessageDlg('Es sind Updates vorhanden ! Sollen diese Jetzt Gedownloadet werden ?', mtConfirmation, [mbyes, mbno], 0) = mrYes then begin // Benutzer Stimmt zu ! SetupPath := TFileStream.Create('./data/setup.exe', fmCreate); try Downloader.Get('http://www.goooogle.de/BatchMaker/setup.exe',SetupPath); finally SetupPath.Free; // Gedownloadet ... MessageDlg ('Das Update Wurde Erfolgreich Heruntergeladen ... Der Installer führt sie durch das Update','Erfolg !'); ShellExecute(Handle, nil, SetupPath, nil, PChar(CurrentDir), SW_NORMAL); // Starte die Setup.exe Form1.Close end end Else // Benutzer möchte kein Update MessageDlg('Abgebrochen. Sie Werden beim nächsten Start von Windows nocheinmal gefragt.', mtInformation, [mbOK], 0) Else // Computer hat die Neuste Version end; end. [Fehler] Unit1.pas(645): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'String' [Fehler] Unit1.pas(649): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'String' [Fehler] Unit1.pas(662): Inkompatible Typen: 'TMsgDlgType' und 'String' [Fehler] Unit1.pas(663): Undefinierter Bezeichner: 'ShellExecute' [Fehler] Unit1.pas(663): Undefinierter Bezeichner: 'CurrentDir' [Fehler] Unit1.pas(669): 'END' erwartet, aber 'ELSE' gefunden [Fehler] Unit1.pas(672): '.' erwartet, aber ';' gefunden :dp: :duck: EDIT : Echte Links entfernt |
Re: Updater Errors :'(
Hi Berlinermauer,
ich hab deinen Code mal formatiert (Ordnung muss sein :) ) und dabei gleich den vorletzten Fehler gefunden/berichtigt. Dir fehlte ein "end;" und ein "else" war zuviel ...
Delphi-Quellcode:
"Readln" kannst du nur auf Textdateien anwenden, die ersten beiden Fehler verschwinden, wenn du "File" durch "Text" ersetzt.
procedure TForm1.FormCreate(Sender: TObject);
begin TSTREAMONLINEVERSION := TFileStream.Create('./data/OnlineVersion.ini', fmCreate); try Downloader.Get('http://www.gooooogle.de/Version.ini',TSTREAMONLINEVERSION); finally end; assignfile(Version,'./data/BatchMakerVersion.ini'); rewrite(Version); // Öffne die Datei für den Schreib-Modus ReadLn(Version, ReadenVersion); CloseFile(Version); assignfile(Versionfrominternet,'./data/OnlineVersion.ini'); rewrite(Versionfrominternet); // Öffne Datei für den Schreib Modus ReadLn(Versionfrominternet,ReadenVersion2); CloseFile(Versionfrominternet); If ReadenVersion < ReadenVersion2 then // Wenn die Version im Internet neuer ist ... begin // Frag benutzer nach Aktion und wenn Ja, dann update If MessageDlg('Es sind Updates vorhanden ! Sollen diese Jetzt Gedownloadet werden ?', mtConfirmation, [mbyes, mbno], 0) = mrYes then begin SetupPath := TFileStream.Create('./data/setup.exe', fmCreate); try Downloader.Get('http://www.goooogle.de/BatchMaker/setup.exe',SetupPath); finally SetupPath.Free; // Gedownloadet ... MessageDlg ('Das Update Wurde Erfolgreich Heruntergeladen ... Der Installer führt sie durch das Update','Erfolg !'); ShellExecute(Handle, nil, SetupPath, nil, PChar(CurrentDir), SW_NORMAL); // Starte die Setup.exe Form1.Close end; end Else MessageDlg('Abgebrochen. Sie Werden beim nächsten Start von Windows nocheinmal gefragt.', mtInformation, [mbOK], 0) end; end;
Delphi-Quellcode:
Die Variable "CurrentDir" kennt er nicht, was soll sie denn beinhalten,
var
Form1: TForm1; Version: Text;//File; Versionfrominternet: Text;//File; ReadenVersion: String; ReadenVersion2: String; SetupPath: TStream; SetUPonlinePath: File; TSTREAMONLINEVERSION: TStream; eventuell lässt sie sich durch "ExtractFilePath(Application.exename)" ersetzen. Hast du die Unit eingebunden, die "ShellExecute" enthält? Ich hoffe dir geholfen zu haben, MfG, Bug |
Re: Updater Errors :'(
@ Current Dir :
das soll er nicht er solls in ./data/setup.exe starten ! und an den Rest THX :zwinker: |
Re: Updater Errors :'(
Eine finally ohne Inhalt bringt auch nix.
Eine Datei mit rewrite zu öffnen und danach readln zu machen bringt auch nix (weil datei ist ja leer) |
Re: Updater Errors :'(
wir würde das dann aussehen ? Also wenn die Bugs behoben wären ... das finally bekomm ich ja raus aber wie kann ich das machen ich dachte rewrite öffnet die Datei für den Schreib Modus oder so
|
Re: Updater Errors :'(
rewrite legt eine Datei neu and (und löscht die bestehende)
reset öffnet zum lesen und zum schreiben readln ist aus Datei lesen writeln in Datei schreiben Evtl. solltest du besser dir eine hübsche Klasse suchen (Tfilestream oder TInifile) |
Re: Updater Errors :'(
So hab ich es jetzt :
Delphi-Quellcode:
errors:
procedure TForm1.FormCreate(Sender: TObject);
begin TSTREAMONLINEVERSION := TFileStream.Create('./data/OnlineVersion.ini', fmCreate); try Downloader.Get('http://www.gooogle.de/BatchMaker/Version.ini',TSTREAMONLINEVERSION); finally end; assignfile(Version,'./data/BatchMakerVersion.ini'); reset(Version); // Öffne die Datei für den Schreib-Modus ReadLn(Version, ReadenVersion); CloseFile(Version); assignfile(Versionfrominternet,'./data/OnlineVersion.ini'); reset(Versionfrominternet); // Öffne Datei für den Schreib Modus ReadLn(Versionfrominternet,ReadenVersion2); CloseFile(Versionfrominternet); If ReadenVersion < ReadenVersion2 then // Wenn die Version im Internet neuer ist ... begin // Frag benutzer nach Aktion und wenn Ja, dann update If MessageDlg('Es sind Updates vorhanden ! Sollen diese Jetzt Gedownloadet werden ?', mtConfirmation, [mbyes, mbno], 0) = mrYes then begin SetupPath := TFileStream.Create('./data/setup.exe', fmCreate); try Downloader.Get('http://www.gooogle.de/BatchMaker/setup.exe',SetupPath); // Gedownloadet ... except ShowMessage('Entweder Haben sie Kein Internet oder der Hoster hat mich gekickt ^^;)'); // sage dem user dass die datei nicht gedownloaded hat können end; ShowMessage('Das Update Wurde Erfolgreich Heruntergeladen ... Der Installer führt sie durch das Update'); ShellExecute(Handle, nil, SetupPath, nil, PChar('./'), SW_NORMAL); // Starte die Setup.exe Form1.Close end; end Else MessageDlg('Abgebrochen. Sie Werden beim nächsten Start von Windows nocheinmal gefragt.', mtInformation, [mbOK], 0); end. Zitat:
|
Re: Updater Errors :'(
Hi Berlinermauer,
"ShellExecute" ist in der Unit "shellapi" deklariert. Hast du die unter "uses" eingetragen.
Delphi-Quellcode:
Desweiteren fehlt vor "end.", das die Unit abschließt, ein "end;", welches die Funktion abschließt.
uses {hier müsste schon eine Menge stehen} ..., shellapi;
MfG, Bug |
Re: Updater Errors :'(
ich Danke euch 1000 Mal Leute ! Luv U ^^
Ihr seid gut :dp: achja ich leibe die Smiles :dancer: :stupid: und am liebsten den ^^ :zwinker: |
Re: Updater Errors :'(
Und bei Gelegenheit auch mal Delphi-Grundlagen lernen. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz