AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit delphi 2009 und alter function aus delphi 2007
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit delphi 2009 und alter function aus delphi 2007

Ein Thema von 5etH · begonnen am 5. Jun 2009 · letzter Beitrag vom 5. Jun 2009
Antwort Antwort
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
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Problem mit delphi 2009 und alter function aus delphi 20

  Alt 5. Jun 2009, 09:07
2009 benutzt standardmäßig Unicoe/WideStrings. Du solltest die Funktion für die Benutzung von WideStrings umschreiben und dann natürlich auch die Unicode Versionen der API-Funktionen nutzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#3

Re: Problem mit delphi 2009 und alter function aus delphi 20

  Alt 5. Jun 2009, 09:10
Welche zeilen im beigefügten Quellcode sind denn die Zeilen
235, 248, 253??

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
147 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Problem mit delphi 2009 und alter function aus delphi 20

  Alt 5. Jun 2009, 09:14
Sieht mir generell nach String Problemen aus. Wie Luckie schon sagte.
Wenn möglich UniCode-Strings verwenden und die Ansis ersetzten, da
die Probleme wahrscheinlich beim Schreiben eines Strings (seit D2009 Unicode-String, vorher Ansi-String)
in einen Ansi-String auftreten.
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

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

Re: Problem mit delphi 2009 und alter function aus delphi 20

  Alt 5. Jun 2009, 09:19
super vielen Dank das wars schon was würde ich nur ohne euch machen xD
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz