Einzelnen Beitrag anzeigen

Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit delphi 2009 und alter function aus delphi 2007

  Alt 5. Jun 2009, 08:57
Hallo Zusammen,

ich bin vor einiger Zeit auf Delphi 2009 umgestiegen.

wollte an einem Programm arbeiten, dass ich schon mit Delphi 2007 begonnen hatte und habe nun folgendes Problem.

Diese Function sollte eigentlich die Versionsinformationen des Programm auslesen was sie seid 2009 aber nichtmer tut.
Delphi-Quellcode:
Function GetFileInfo(Var aProductName, aCompanyName, aFileDescription, aLegalCopyright, aProductVersion: String; FileName: AnsiString): Boolean;
Var
  VersionInfoSize, VerInfoSize, GetInfoSizeJunk: DWORD;
  VersionInfo, Translation, InfoPointer: Pointer;
  VersionValue: AnsiString;
Begin
  Result := False;
  VerInfoSize := GetFileVersionInfoSize(PChar(FileName), GetInfoSizeJunk);
    // Wenn infos eingetragen
    If VerInfoSize > 0 Then
      Begin
        GetMem(VersionInfo, VerInfoSize);
          Try
            //Beziehen der Infos
            GetFileVersionInfo(PChar(FileName), 0, VerInfoSize, VersionInfo);

            VerQueryValue(
            VersionInfo, '\\VarFileInfo\\Translation', Translation, VerInfoSize);
            VersionValue :='\\StringFileInfo\\' +
            IntToHex(LoWord(LongInt(Translation^)), 4) +
            IntToHex(HiWord(LongInt(Translation^)), 4) + '\\';
            VersionInfoSize := 0;

            VerQueryValue(VersionInfo, PChar(VersionValue + 'ProductName'),
            InfoPointer, VersionInfoSize);
            aProductName := AnsiString(PChar(InfoPointer));

            VerQueryValue(VersionInfo, PChar(VersionValue + 'CompanyName'),
            InfoPointer, VersionInfoSize);
            aCompanyName := AnsiString(PChar(InfoPointer));

            VerQueryValue(VersionInfo, PChar(VersionValue + 'FileDescription'),
            InfoPointer, VersionInfoSize);
            aFileDescription := AnsiString(PChar(InfoPointer));

            VerQueryValue(VersionInfo, PChar(VersionValue + 'LegalCopyright'),
            InfoPointer, VersionInfoSize);
            aLegalCopyright := AnsiString(PChar(InfoPointer));

            VerQueryValue(VersionInfo, PChar(VersionValue + 'ProductVersion'),
            InfoPointer, VersionInfoSize);
            aProductVersion := AnsiString(PChar(InfoPointer));

          Finally
            FreeMem(VersionInfo);
          End;
      Result := (aCompanyName <> '') and (aCompanyName <> '');
    End;
End;
und das ist der Aufruf.
Delphi-Quellcode:
procedure TFRM_Main.N1Click(Sender: TObject);
Var
ProductName, CompanyName, FileDescription, LegalCopyright, ProductVersion : String;
Begin
  try
  Memo_UpVer.lines.LoadFromFile(Extractfilepath(paramstr(0))+'\Updater.ver');
  except

  end;
  GetFileInfo(ProductName, CompanyName, FileDescription, LegalCopyright, ProductVersion, Application.ExeName);
  MessageDlg('Produkt Name: '+ProductName+ #13#10'Firma: '+CompanyName+#13#10'Produktversion: '+ProductVersion+ #13#10'Datum: '+FileDescription+#13#10'Copyright: '+LegalCopyright +#13#10'Updaterversion: '+ Memo_UpVer.lines[0]+#13#10'Datum: '+ Memo_UpVer.lines[1] , mtInformation , [mbOk],0)
end;
desweiteren bekomme ich beim compilieren folgende meldungen als Hinweise.

[DCC Warnung] Main.pas(235): W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar

[DCC Warnung] Main.pas(248): W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'AnsiString'

[DCC Warnung] Main.pas(253): W1057 Implizite String-Umwandlung von 'AnsiString' zu 'string'


Ich hoffe sehr das ihr mir weiterhelfen könnt.
schonmal vielen Dank
Manu
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat