ERLEDIGT:Nach Updates prüfen
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
ERLEDIGT:Nach Updates prüfen
hallo,
ich habe eine Frage.
Wie mache ich das, dass ich über das Web nach updates Uuche und wenn welche da sind,Runterlade???
Ich habe nichts wirkliches Gefunden.
Bitte helft mir!
ich habe eine Frage.
Wie mache ich das, dass ich über das Web nach updates Uuche und wenn welche da sind,Runterlade???
Ich habe nichts wirkliches Gefunden.
Bitte helft mir!
Zuletzt geändert von ts230 am Di 23. Dez 2008, 03:00, insgesamt 1-mal geändert.
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
-
- Beiträge: 423
- Registriert: Di 5. Feb 2008, 12:45
- OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
- CPU-Target: 64Bit
- Kontaktdaten:
Re: Nach Updates prüfen
hmmm also ich mache es so, dass ich eine Textdatei mit der Versionnummer auf meinem Server habe und die runterlade. Dann vergleiche ich die Nummer mit der aktuellen Versionsnummer. Wie man das macht hatten wir schon:
http://www.lazarusforum.de/viewtopic.php?f=26&t=1012" onclick="window.open(this.href);return false;
Ähnlich kannst du es dann mit deinem Programm selber machen.
Gruß Alexander
http://www.lazarusforum.de/viewtopic.php?f=26&t=1012" onclick="window.open(this.href);return false;
Ähnlich kannst du es dann mit deinem Programm selber machen.
Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu
www.alexanderroth.eu
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Nach Updates prüfen
Ich habe mir was zusammengebastelt.
Aber wie lese ich ein TStringList aus(also die 1. Zeile?)
Aber wie lese ich ein TStringList aus(also die 1. Zeile?)
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Nach Updates prüfen
Also ein bisschen eigenverantwortliche Suche wäre schon nett.
Über den Index der Strings-Eigenschaft, für die erste Zeile also:
Über den Index der Strings-Eigenschaft, für die erste Zeile also:
Code: Alles auswählen
Stringlist.Strings[0];
Johannes
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Nach Updates prüfen
Gut,
ich brauche jetzt nur noch eine Funktion zum Downloaden des Files.
Mit TStringList wirds bestimmt nicht gehen,da das File ja aus HEX-Werten besteht.
Die würden dann als Zeichen interpretirt werden und wenn der HEX-Wert nicht als Zeichen
Vorhanden ist,gibts Ärger
Der Prozess des Downloads sollt in einer TProgressBar angezeigt werden.
So sieht jetzt meine Überprüfung aus(Version ist als Konstante definiert):
ich brauche jetzt nur noch eine Funktion zum Downloaden des Files.
Mit TStringList wirds bestimmt nicht gehen,da das File ja aus HEX-Werten besteht.
Die würden dann als Zeichen interpretirt werden und wenn der HEX-Wert nicht als Zeichen
Vorhanden ist,gibts Ärger

Der Prozess des Downloads sollt in einer TProgressBar angezeigt werden.
So sieht jetzt meine Überprüfung aus(Version ist als Konstante definiert):
Code: Alles auswählen
uses httpsend
...
procedure TForm1.FormShow(Sender: TObject);
var t:TStringList;
begin
with THTTPSend.Create do
begin
if HTTPMethod('GET','http://tiersendung.ti.funpic.de/tristan/territorium.txt') then
try
t:= TStringList.Create;
t.LoadFromStream(Document);
If t.Strings[0] = '0.0.1' then
begin
StatusBar1.Panels[2].Text:='Version '+Version+' ist aktuell';
StatusBar1.Panels[2].Bevel:=pbLowered;
end
else
begin
StatusBar1.Panels[2].Text:='Update zu Version '+t.Strings[0]+' gefunden!';
StatusBar1.Panels[2].Bevel:=pbRaised;
UpButton.Visible:=true;
end;
t.Free;
except
MessageDlg('Fehler','Es konnte keine Verbindung zum Internet hergestellt werden.',mtError,[mbOk],'');
end;
Free;
end;
end;
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
Re: Nach Updates prüfen
Wie meinst du das?ts230 hat geschrieben:Gut,
ich brauche jetzt nur noch eine Funktion zum Downloaden des Files.
Das kannst du doch direkt mit Document.SaveToFile(); machen.
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Nach Updates prüfen
Ja aber ein anderes binäres file.
Und ich müß dem User anzeigen,wie weit der Download ist.
Und ich müß dem User anzeigen,wie weit der Download ist.

Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
Re: Nach Updates prüfen
ts230 hat geschrieben:Ja aber ein anderes binäres file.
Na und? Document ist ein MemoryStream. Da kann alles drin sein.
http://synapse.ararat.cz/doku.php/public:howto:onstatus" onclick="window.open(this.href);return false;ts230 hat geschrieben:Und ich müß dem User anzeigen,wie weit der Download ist.
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Nach Updates prüfen
ja ber wenn ich
krige ich das:
ERROR:Wrong number of Parameters specified for call to "SockCallBack"
FATAL:There were 1 errors compiling module,stopping
Meine CallBack ist das:
Code: Alles auswählen
Timer1.Enabled:=true;//Timer1 Verarbeitet alles in die ProgressBar da ich in der CallBack nicht auf Komponenten zugreifen kann
with THTTPSend.Create do
begin
if HTTPMethod('GET',BinOrt) then
try
Sock.OnStatus := SockCallBack;
Document.SaveToFile('TS');
except
MessageDlg('Fehler','Es konnte leider kein Download gestartet werden.',mtError,[mbOk],'');
end;
Free;
end;
ERROR:Wrong number of Parameters specified for call to "SockCallBack"
FATAL:There were 1 errors compiling module,stopping
Meine CallBack ist das:
Code: Alles auswählen
procedure SockCallBack(Sender: TObject; Reason: THookSocketReason;const Value: string);
begin
Val:=StrToIntDef(Value, -1);//Kann nicht auf Komponente zugreifen,schreibe is in Val
end;
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
Re: Nach Updates prüfen
Sock.OnStatus := @SockCallBack;
oder delphi Modus einschalten {$mode delphi} statt {$mode objfpc}
oder delphi Modus einschalten {$mode delphi} statt {$mode objfpc}
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Nach Updates prüfen
Geht beides nicht.
Bei dem Pointer-Ding krig ich das:
Bei dem Pointer-Ding krig ich das:
Code: Alles auswählen
[color=#FF0000]update.pas(122,18)ERROR:incompatible types: got "Pointer" expected "<procedure variable type of procedure(TObject,THookSocketReason,const AnsiString) of object;Register> "
update.pas:FATAL:There were 1 Errors compiling module,stopping[/color]
Zuletzt geändert von ts230 am Mo 22. Dez 2008, 17:51, insgesamt 1-mal geändert.
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Nach Updates prüfen
SockCallBack(Sender: TObject; Reason: THookSocketReason;const Value: string)
wie wäre es, dort auch was anzugeben?
wie wäre es, dort auch was anzugeben?
Johannes
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Nach Updates prüfen
Aber woher soll ich dann die Daten krigen?
Auf der Seite steht es genau so
Das ist das einzige was nicht will.
Der eigentliche Download geht supi:freu:.
Auf der Seite steht es genau so

Code: Alles auswählen
Sock.OnStatus:=SockCallBack;
Der eigentliche Download geht supi:freu:.
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Nach Updates prüfen
kann es sein das du beide lösungen von theo kombiniert hast ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 109
- Registriert: Sa 20. Dez 2008, 20:42
- OS, Lazarus, FPC: Linux (L 0.9.24)
- CPU-Target: 32Bit
- Wohnort: San Jose,CA
- Kontaktdaten:
Re: Nach Updates prüfen
Nö.
Hier ist mein ganzes File:
Hier ist mein ganzes File:
Code: Alles auswählen
unit UpDateForm;
{$mode delphi}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, ComCtrls, ExtCtrls, memds, DbCtrls,httpsend;
type
{ TUpForm }
THookSocketReason = (
HR_ResolvingBegin,
HR_ResolvingEnd,
HR_SocketCreate,
HR_SocketClose,
HR_Bind,
HR_Connect,
HR_CanRead,
HR_CanWrite,
HR_Listen,
HR_Accept,
HR_ReadCount,
HR_WriteCount,
HR_Wait,
HR_Error
);
TUpForm = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Button1: TButton;
CheckBox1: TCheckBox;
Edit1: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
ProgressBar1: TProgressBar;
ProgressBar2: TProgressBar;
SelectDirectoryDialog1: TSelectDirectoryDialog;
Timer1: TTimer;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure CheckBox1Change(Sender: TObject);
procedure CheckGroup1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
UpForm: TUpForm;
BinOrt:String;
Val:integer;
{ TUpForm }
implementation
procedure CopyFile(Source, Destination: string;Pbar:TProgressBar);
var
FromF, ToF: file of byte;
Buffer: array[0..4096] of char;
NumRead: integer;
FileLength: longint;
begin
AssignFile(FromF, Source);
reset(FromF);
AssignFile(ToF, Destination);
rewrite(ToF);
FileLength := FileSize(FromF);
with Pbar do
begin
Min := 0;
Max := FileLength;
while FileLength > 0 do
begin
BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF, Buffer[0], NumRead);
Position := Position + NumRead;
end;
CloseFile(FromF);
CloseFile(ToF);
end;
end;
procedure TUpForm.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure SockCallBack(Sender: TObject; Reason: THookSocketReason;const Value: string); begin
Val:=StrToIntDef(Value, -1);
end;
procedure TUpForm.BitBtn1Click(Sender:TObject);
begin
BitBtn1.Enabled:=false;
BitBtn2.Enabled:=false;
BitBtn3.Enabled:=false;
BitBtn4.Enabled:=false;
ShowMessage('Folgende Dinge werden gemacht:'+#13+'Download der Software');
Timer1.Enabled:=true;
with THTTPSend.Create do
Sock.OnStatus := SockCallBack;
begin
if HTTPMethod('GET',BinOrt) then
try
Document.SaveToFile('TS');
except
MessageDlg('Fehler','Es konnte leider kein Download gestartet werden.',mtError,[mbOk],'');
end;
Free;
end;
end;
procedure TUpForm.BitBtn3Click(Sender:TObject);
begin
BitBtn1.Enabled:=false;
BitBtn2.Enabled:=false;
BitBtn3.Enabled:=false;
BitBtn4.Enabled:=false;
ShowMessage('Folgende Dinge werden gemacht:'+#13+'Download der Software'+#13+'Installieren');
If CheckBox1.Checked = true then
begin
try
Application.ProcessMessages;
CopyFile('feuerfiech.ini',Edit1.Text+'feuerfiech.ini',ProgressBar2);
except
MessageDlg('Fehler','Konnte feuerfiech.xml nicht kopieren'+#13+'Bitte probieren sie Manuelles Kopieren in den backup-Ordner.',mtError,[mbOk],'');
end;
ShowMessage('backup beendet.'+#13+'Starte verbleibende Aktionen...');
end;
end;
procedure TUpForm.Button1Click(Sender: TObject);
begin
SelectDirectoryDialog1.Execute;
Edit1.text:=SelectDirectoryDialog1.FileName;
end;
procedure TUpForm.CheckBox1Change(Sender: TObject);
begin
Edit1.Enabled:=CheckBox1.Checked;
Button1.Enabled:=CheckBox1.Checked;
end;
procedure TUpForm.CheckGroup1Click(Sender: TObject);
begin
end;
procedure TUpForm.FormCreate(Sender: TObject);
begin
end;
procedure TUpForm.FormShow(Sender: TObject);
var t:TStringList;
i:integer;
begin
BitBtn1.Enabled:=true;
BitBtn2.Enabled:=true;
BitBtn3.Enabled:=true;
BitBtn4.Enabled:=true;
memo1.Clear;
with THTTPSend.Create do
begin
if HTTPMethod('GET','http://tiersendung.ti.funpic.de/tristan/territorium_desc.txt') then
try
t:= TStringList.Create;
t.LoadFromStream(Document);
i:=0;
Application.ProcessMessages;
For i:=0 to 50 do
Memo1.Lines.Add(t.Strings[i]);
except
MessageDlg('Fehler','Es konnte keine Verbindung zum Internet hergestellt werden.',mtError,[mbOk],'');
end;
Label3.Caption:='0/'+t.Strings[51]+' Kb';
BinOrt:=t.Strings[53];
try
Progressbar1.max:=strtoint(t.Strings[52]);
except
MessageDlg('Fehler','Die Datei ist falsch aufgebaut.'+#13+'Das bedeutet,das die Fortschrittsanzeige nicht gehen wird.',mtError,[mbOk],'');
end;
t.Free;
Free;
end;
end;
procedure TUpForm.Timer1Timer(Sender: TObject);
begin
Timer1.Interval:=30;
ProgressBar1.Position:=Val;
end;
initialization
{$I updateform.lrs}
end.
Code: Alles auswählen
If beitragHilfreich then leseitdurch()else volle_ignoranz();