Einzelnen Beitrag anzeigen

gelberkaktus

Registriert seit: 18. Mär 2012
Ort: Kölleda/Thüringen
16 Beiträge
 
Delphi 7 Personal
 
#1

Fehler beim ausführen eine Update-Funktion

  Alt 23. Mär 2012, 17:04
Wenn ich meine Anwendung ausführe erscheint immer folgende Fehlermeldung.
fehler.jpg

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)
  Mit Zitat antworten Zitat