Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Updater Errors :'( (https://www.delphipraxis.net/101048-updater-errors.html)

Berlinermauer 7. Okt 2007 17:15


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:
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.
Errors :

[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

BUG 7. Okt 2007 17:45

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:
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;
"Readln" kannst du nur auf Textdateien anwenden, die ersten beiden Fehler verschwinden, wenn du "File" durch "Text" ersetzt.

Delphi-Quellcode:
var
  Form1: TForm1;
  Version: Text;//File;
  Versionfrominternet: Text;//File;
  ReadenVersion: String;
  ReadenVersion2: String;
  SetupPath: TStream;
  SetUPonlinePath: File;
  TSTREAMONLINEVERSION: TStream;
Die Variable "CurrentDir" kennt er nicht, was soll sie denn beinhalten,
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

Berlinermauer 7. Okt 2007 18:17

Re: Updater Errors :'(
 
@ Current Dir :
das soll er nicht er solls in ./data/setup.exe starten !

und an den Rest THX :zwinker:

sirius 7. Okt 2007 18:20

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)

Berlinermauer 7. Okt 2007 18:25

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

sirius 7. Okt 2007 18:32

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)

Berlinermauer 9. Okt 2007 17:36

Re: Updater Errors :'(
 
So hab ich es jetzt :

Delphi-Quellcode:
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.
errors:
Zitat:

Erzeugen
[Fehler] Unit1.pas(663): Undefinierter Bezeichner: 'ShellExecute'
[Fehler] Unit1.pas(668): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(673): Deklaration erwartet, aber Dateiende gefunden
[Fataler Fehler] Project1.dpr(6): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

BUG 9. Okt 2007 18:39

Re: Updater Errors :'(
 
Hi Berlinermauer,

"ShellExecute" ist in der Unit "shellapi" deklariert.
Hast du die unter "uses" eingetragen.
Delphi-Quellcode:
uses {hier müsste schon eine Menge stehen} ..., shellapi;
Desweiteren fehlt vor "end.", das die Unit abschließt, ein "end;", welches die Funktion abschließt.

MfG,
Bug

Berlinermauer 10. Okt 2007 15:45

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:

Nuclear-Ping 10. Okt 2007 16:07

Re: Updater Errors :'(
 
Und bei Gelegenheit auch mal Delphi-Grundlagen lernen. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz