![]() |
AW: Delphi 10.2 Tokyo Starter
Es gelingt mir nicht die VersionInfo einzulesen.
Ich habe mit beiden Infostrings ausprobiert, aber es liegt anscheinlich an was anderen. Hat jemand eine Idee, warum die Funktion in Delphi 10 nicht funktioniert? Danke in Voraus, Toni Diese Prozedur funktioniert unter Delphi 7:
Delphi-Quellcode:
Procedure SetupProgramVersionData;
const InfoNum = 10; InfoStr: array[1..InfoNum] of string = (* *) ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFileName', 'ProductName', 'ProductVersion', 'Comments'); (* ('Firmenname', 'Beschreibung', 'Dateiversion', 'InternerName', 'Copyright', 'Warenzeichen', 'Originaldateiname', 'Produktname', 'Produktversion', 'Kommentare'); *) var S: string; n, Len, i: DWORD; Buf: PChar; Value: PChar; ValueStr: array[1..InfoNum] of string; begin // SetupProgramVersionData S := Application.ExeName; n := GetFileVersionInfoSize(PChar(S), n); if n > 0 then begin Buf := AllocMem(n); GetFileVersionInfo(PChar(S), 0, n, Buf); for i := 1 to InfoNum do if VerQueryValue(Buf, PChar('StringFileInfo\040704E4\' + InfoStr[i]), Pointer(Value), Len) then begin ValueStr[i] := Value; end; FreeMem(Buf, n); end; // SetupProgramVersionData |
AW: Delphi 10.2 Tokyo Starter
Versuchs mal hiermit
Delphi-Quellcode:
Geht sicher schöner. Könnt ihr ja vielleicht schöner machen, ich wüsste nicht wie. Aber es funktioniert perfekt von Windows XP bis Windows 10.function getVersionInfo(FileName, InfoStr: string; const withBuild: Boolean = False): string; var VersionInfoSize, VerInfoSize, GetInfoSizeJunk: DWORD; VersionInfo, Translation, InfoPointer: Pointer; VersionValue, tmpRes: string; begin Result := ''; VerInfoSize := GetFileVersionInfoSize(PChar(FileName), GetInfoSizeJunk); if VerInfoSize > 0 then begin GetMem(VersionInfo, VerInfoSize); try GetFileVersionInfo(PChar(FileName), 0, VerInfoSize, VersionInfo); VerQueryValue(VersionInfo, '\\VarFileInfo\\Translation', Translation, VerInfoSize); VersionValue := '\\StringFileInfo\\' + IntToHex(LoWord(Integer(Translation^)), 4) + IntToHex(HiWord(Integer(Translation^)), 4) + '\\'; VersionInfoSize := 0; if InfoStr = 'Build' then begin VerQueryValue(VersionInfo, PChar(VersionValue + 'FileVersion'), InfoPointer, VersionInfoSize); tmpRes := PChar(InfoPointer); tmpRes := Copy(tmpRes, LastDelimiter('.', tmpRes) + 1, Length(tmpRes)); end else begin VerQueryValue(VersionInfo, PChar(VersionValue + InfoStr), InfoPointer, VersionInfoSize); tmpRes := PChar(InfoPointer); if (InfoStr = 'FileVersion') and (not withBuild) then tmpRes := Copy(tmpRes, 1, LastDelimiter('.', tmpRes) - 1); end; Result := tmpRes; finally FreeMem(VersionInfo); end; end; end; ... := getVersionInfo(ParamStr(0), 'FileVersion'); ... := getVersionInfo(ParamStr(0), 'LegalCopyright'); ... := getVersionInfo(ParamStr(0), 'Build'); |
AW: Delphi 10.2 Tokyo Starter
Vielen Dank!
Ich habe es nicht ganz übernommen, sondern nur die Hex-Konstante 040704E4 in 040904E4 (das ist das Ergebnis von IntToHex(LoWord(Integer(Translation^)), 4) + IntToHex(HiWord(Integer(Translation^)), 4) ) angepasst. Ich habe eine weitere Frage bezüglich Conditional Compilation. In Borland Delphi 7 konnte man unter Project/Options $DEFINE 'name' eintragen. Im Delphi 10 wird diese Anweisung beim übersetzen ignoriert. Wie macht man es beim Delphi 10 richtig? Danke in Voraus, Toni |
AW: Delphi 10.2 Tokyo Starter
Zitat:
|
AW: Delphi 10.2 Tokyo Starter
Gibt es in Delöphi 10 Schnittstelle zu EXCEL (eigentlich Office?) ?
Falls ja, wie wird in Delphi 10 mit EXCEL gearbeitet. Im Delphi7 gab es Schnittstellen-Dateien für Office mit Deklarationen von Konstanten und Funktionsaufrufen. Danke in Voraus, Toni |
AW: Delphi 10.2 Tokyo Starter
Die Office-Komponenten sind noch dabei (zumindest waren sie das um XE 7 herum noch), man muss sie aber von Hand installieren:
![]() |
AW: Delphi 10.2 Tokyo Starter
Zitat:
|
AW: Delphi 10.2 Tokyo Starter
Zitat:
|
AW: Delphi 10.2 Tokyo Starter
Gibt es die Beschreibung von Delphi 10.2 Tokyo Starter Features ?
|
AW: Delphi 10.2 Tokyo Starter
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz