Autor Beitrag
omexlu
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 29.12.10 01:28 
Hallo ,

Ich bin blutiger Anfänger in sachen DELPHI jedoch hab ich die letzten Tage an meinem ersten Programm gesessen und schon etwas hinbekommen.
Nun wollte ich dass wenn mann das Programm aufruft das programm checkt ob es update dazu gibt.
hatte jetzt die möglichkeit probiert dass mann im Programm eine const eingibbt mit der version.
Mit idhttp hab ich dann geprüft ob die version <> mit der version ist die im web ist (einfach ne version.txt) auf web hochgeladen.

Aber irgendwie ist das ganze irgendwie bissl buggy und funktioniert nicht immer wie es soll.
Weiss jemand was mann da noch machen könnte?

Es soll nur prüfen ob eine neue Version verfügbar ist und ein showmessage anzeigen.

Bitte um Rat
Danke
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 29.12.10 01:34 
vielleicht suchst Du sowas
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
implementation
uses WinInet;

{$R *.dfm}

function GetInetURLAsString(const fileURL: string): string;
const
//  C_BufferSize = 1024;
  C_BufferSize = 4096;
var
  AUrl: string;
  hSession, hURL: HInternet;
  Buffer: array[0..C_BufferSize] of Byte;
  BufferLen: DWORD;
  strHeader: String;
  strPageContent: TStringStream;
begin
  Result := '';
  if pos('http://',lowercase(fileURL))=0 then AUrl:='http://'+fileURL else AUrl := fileURL;
  hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nilnil0);
  try
    strHeader := 'Accept-Charset: utf-8'#13#10;
    hURL := InternetOpenURL(hSession, PChar(AUrl), PChar(strHeader), Length(strHeader), 00);
    try
      strPageContent := TStringStream.Create('', TEncoding.Default);
      try
        BufferLen := 1;
        while BufferLen>0 do
          begin
          if  InternetReadFile(hURL, @Buffer[0], SizeOf(Buffer), BufferLen) then
              if BufferLen > 0 then strPageContent.WriteBuffer(Buffer[0], BufferLen)
          end;
        Result := strPageContent.DataString;
      finally
        strPageContent.Free;
      end;
    finally
      InternetCloseHandle(hURL);
    end
  finally
    InternetCloseHandle(hSession);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := GetInetURLAsString('www.google.de');
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
qr123de
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 29.12.10 01:40 
TDownloadAction geht viel besser, als soviel Code.

Einen ähnlichen Beitrag gibt es gerade in der DP (crosspost):
www.delphipraxis.net...n-ueberpruefung.html
omexlu Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 29.12.10 01:43 
Hallo ,

Danke bummmi für dein Code aber irgendwie kann ich da nicht rauslesen was genau der macht und so ?
Sry bin erst 2 Tage bei Delphi dabei

Was genau macht der code und wie geh ich am besten damit um ?
Danke
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 29.12.10 02:34 
@qr123de
wir verwenden DownLoadURL auch, allerdings will man gegf. nicht dem Umweg über eine Datei gehen, zudem gab es IMHO dort ein Problem mit offen bleibenden Ports.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
implementation
uses ExtActns;
{$R *.dfm}
Function GetTempDir:String;
var
p:Pchar;
begin
  p:=stralloc(255);
  GetTempPath(255,p);
  Result:=p;
  strdispose(p);
end;

Function MakeSaveURL(const AURL:String):String;
begin
  if Pos('http',LowerCase(AURL))=0 then Result := 'http://' +AURL else Result := AURL;
end;


function DownloadURLToFile(const AURL, AFileName : TFileName) : boolean;
begin
  Result:=True;

  with TDownLoadURL.Create(nildo
  try
    URL :=  MakeSaveURL(AURL);
    Filename := AFileName;
    try
      ExecuteTarget(nil);
    except
      Result:=False;
    end;
  finally
    Free;
  end;
end;


@omexlu

Du kannst De genanten Funktionen z.B. in eine tools.pas packen
oberhalb von Implemetation fügst die die Prozedur/Fuktionsrümpfe ein.
Die Tools.pas nimmst Du in die uses Deines Programmes auf.
Der Teil
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := GetInetURLAsString('www.google.de');
end;


wäre jetzt ein Beispiel für die Verwendung meiner Routine. Du würdest die URL Deiner Textdatei im Web eingeben, den Inhalt in einen String oder eine Stringlist packen und auswerten ob in der Datei Informationen enthalten sind die ein Update erforderlich machen.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
omexlu Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 29.12.10 02:58 
Diese Codes sind aber um etwas zu downloaden oder ?
Nicht um Version zu prüfen?

Danke
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 29.12.10 04:20 
Zum version überprüfen musst du ja auch mal was runterladen oder? Und zwar die neuste versionsnummer. Sonst weiß dein programm ja nicht obs ne neue version gibt oder nicht.

Wobei ich dir raten würde hier im forum nach einem updater zu suchen.user profile iconjaenicke hat da einen sehr guten geschrieben, den sjupdater wenn ich mich nicht irre.

Lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 29.12.10 06:40 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat da einen sehr guten geschrieben, den sjupdater wenn ich mich nicht irre.
Danke für die Blumen, aber ganz so gut ist er noch nicht. :mrgreen:
Bei versionsspezifischen Updates einzelner Dateien ist noch ein Bug drin und ich bin noch nicht dazu gekommen die Echtheit der Updates durch ein Zertifikat zu validieren (wenn das denn gewünscht ist).
Dafür integriert er sich komplett in die Programm-Exe und kommt auch mit der UAC klar.

Zu finden ist er hier:
www.delphi-forum.de/viewtopic.php?t=94339
omexlu Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 29.12.10 22:38 
Gibt es einen Code mit dem mann eine Datei aus dem Programm heraus herunterladen kann
ausblenden Delphi-Quelltext
1:
shellexecute(application.handle,'open',pchar('http://****/exe/***.exe'),nil,nil,sw_shownormal);					
ist nicht so schön ?

Danke

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 29.12.10 22:55 
Wie wäre es, wenn du dir die Antworten einmal anschauen würdest... :roll:

Da wurden bereits Möglichkeiten wie diese genannt:
www.delphi-forum.de/....php?p=627983#627983
omexlu Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 29.12.10 23:16 
Sry ich blick da nur nicht durch....
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 30.12.10 05:36 
Was genau verstehst du denn nicht? Wenn du nicht nachfragst, wenn du etwas nicht verstehst und auch nichts dazu findest, kann dir auch niemand dabei helfen.