Registriert seit: 18. Mär 2012
Ort: Kölleda/Thüringen
16 Beiträge
Delphi 7 Personal
|
Fehler beim ausführen eine Update-Funktion
23. Mär 2012, 17:04
Wenn ich meine Anwendung ausführe erscheint immer folgende Fehlermeldung.
Dies geschieht beim ausführen von folgendem code, welcher updates suchen soll
Delphi-Quellcode:
procedure TForm1.updatesuch;
var nn, version:string;
begin
//prüft ob eine internetverbindung besteht
if IsOnline('mylittlerechner.funpic.de') then
begin
//ermittelt die aktuelle Version des Programms
version:= AboutBox.GetFileVersion(Paramstr(0));
//ermittelt den pfad (Appdata - einstellungen)zum speichern der gedownloadeden datei
nn:= GetEnvVarValue('AppData');
//downloaded die datei
if DownloadFile('http://mylittlerechner.my.funpic.de/mcversion/version.txt',(nn + '\versionneu.txt')) then
begin
//wenn erfolgreich dann wird diese in einem dialog angezeigt
// hier tritt der fehler auf
UpDialog.Memo1.Lines.LoadFromFile((nn + '\versionneu.txt'));
//vergleicht programmversion mit ermittelter version
if UpDialog.Memo1.Lines[0] <> version then
begin
//macht den dialog sichtbar wo gesagt wird "update gefunden"
UpDialog.Visible:= true;
end;
end;
end;
end;
dabei habe ich folgende funktionen benutzt
Delphi-Quellcode:
//downloaded datei
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
except
Result := False;
end;
end;
//prüft ob internet da anhand einer webseite
function IsOnline(Server: String): Boolean;
var
wsaData: TWSAData;
begin
WSAStartUp(MAKEWORD(1, 1), wsaData);
Result := (GetHostByName(PChar(Server)) <> nil);
WSACleanUp;
end;
//sucht appdata-pfad
function GetEnvVarValue(const VarName: string): string;
var
BufSize: Integer; // buffer size required for value
begin
// Get required buffer size (inc. terminal #0)
BufSize := GetEnvironmentVariable(PChar(VarName), nil, 0);
if BufSize > 0 then
begin
// Read env var value into result string
SetLength(Result, BufSize - 1);
GetEnvironmentVariable(PChar(VarName),
PChar(Result), BufSize);
end
else
// No such environment variable
Result := '';
end;
//version herausfinden
function TAboutBox.GetFileVersion(Path: string): string;
var
lpVerInfo: pointer;
rVerValue: PVSFixedFileInfo;
dwInfoSize: cardinal;
dwValueSize: cardinal;
dwDummy: cardinal;
lpstrPath: pchar;
begin
if Trim(Path) = EmptyStr then
lpstrPath := pchar(ParamStr(0))
else
lpstrPath := pchar(Path);
dwInfoSize := GetFileVersionInfoSize(lpstrPath, dwDummy);
if dwInfoSize = 0 then
begin
Result := 'unbekannt';
Exit;
end;
GetMem(lpVerInfo, dwInfoSize);
GetFileVersionInfo(lpstrPath, 0, dwInfoSize, lpVerInfo);
VerQueryValue(lpVerInfo, '\', pointer(rVerValue), dwValueSize);
with rVerValue^ do
begin
Result := IntTostr(dwFileVersionMS shr 16);
Result := Result + '.' + IntTostr(dwFileVersionMS and $FFFF);
Result := Result + '.' + IntTostr(dwFileVersionLS shr 16);
end;
FreeMem(lpVerInfo, dwInfoSize);
end;
Delphi-Quellcode:
uses
SysUtils, StdCtrls, FileCtrl, ShellApi,
WinSock, ShlObj, ActiveX, URLMon;
"Ohne konkrete Symbole ist der Computer bloß ein Haufen Schrott."
Neil Postman
Geändert von gelberkaktus (23. Mär 2012 um 20:04 Uhr)
|
|
Zitat
|