![]() |
AW: Delphi-Versionsnummer per IOTA-Service abfragen?
@himitsu
Das würde ich ja auch liebend gerne so machen, nur habe ich bzgl. der IOTA-Services noch keinen Weg dazu gefunden. Zumal ich ja bzgl. dieser IOTA-Dingens auch noch ziemlich am Anfang bin. Das werde ich dann etwas später schon genau so machen, wenn ich mich mal ein bisschen in diese OpenToolsApi reingewühlt habe. Im Augenblick komme ich aber so schneller voran. Allerdings, wenn wir eh schon gerade dabei sind, wäre die Frage ansonsten gewesen: Gibt es eine Möglichkeit mittels der IOTA-Services die exakte Position (in Pixel auf dem Screen) des ersten Chars des Quellcodes (also quasi der in Columne 1) festzustellen? Bzw. die Breite festzustellen, zwischen dem linken Rand des Editors (im Zweifel habe ich die Handle des Windows, in dem diese Editoren immer drinliegen (=TEditControl), und kann somit dessen Position per GetWindowPos ermitteln) und dem ersten Char im Editor. Das ist also der Bereich, indem diese Debuggerhaltepunkte eingezeichnet werden oder auch die Zeilennummern. Denn dieser Bereich ist zufälligerweise zwischen Delphi 10.4.1 u. 10.4.2 unterschiedlich breit. @stahli, danke, auf so einen o.ä. Tipp hätte ich dann gehofft, wenn ich diese Frage dann speziell zur Beseitigung dieses Problems irgendwann später mal gestellt hätte. Ich werde mir das natürlich mal etwas genauer ansehen (habe heute aber leider keine richtige Zeit mehr dazu). |
AW: Delphi-Versionsnummer per IOTA-Service abfragen?
GExperts führt dazu eine Liste der Versionsinfos diverser Executables und BPLs. Die wird benutzt, um diverse Bugs / Features einzelner Updates zu umschiffen. Unit GX_GetIdeVersion im Unterverzeichnis source\framework.
Sieht dann z.B. so aus:
Delphi-Quellcode:
In der Regel reicht es, wenn man CoreIde prüft, aber bei einigen älteren Versionen wurden durch ein Update / Patch nur einzele wichtige Dateien geändert, so dass man gezielt diese prüfen muss.
{
Delphi 10.4 Sydney File File Version Size Modified Time delphicoreide270.bpl 27.0.37889.9797 coreide270.bpl 27.0.37889.9797 bds.exe 27.0.37889.9797 dcldb270.bpl 27.0.37889.9797 Patch1 and Patch2 apparently did not change any of these versions and even those files the patches replaced still have the same version as the original files. WTF? Delphi 10.4.1 Sydney Update 1 File File Version Size Modified Time delphicoreide270.bpl 27.0.38860.1461 coreide270.bpl 27.0.38860.1461 bds.exe 27.0.38860.1461 dcldb270.bpl 27.0.38860.1461 Delphi 10.4.2 Sydney Update 2 File File Version Size Modified Time delphicoreide270.bpl 27.0.40680.4203 coreide270.bpl 27.0.40680.4203 bds.exe 27.0.40680.4203 dcldb270.bpl 27.0.40680.4203 } function GetRS104Version: TBorlandIdeVersion; const RegKey = 'Software\Embarcadero\BDS\21.0\CatalogRepository\Elements\10.4Patch2pro-10'; CoreIde2700: TVersionNumber = (Minor: 27; Major: 0; Build: 9797; Release: 37829); CoreIde2700UPd1: TVersionNumber = (Minor: 27; Major: 0; Build: 1461; Release: 38860); CoreIde2700UPd2: TVersionNumber = (Minor: 27; Major: 0; Build: 4203; Release: 40680); var RegValue: Integer; CoreIdeFileVersion: TVersionNumber; begin CoreIdeFileVersion := GetFileVersionNumber(GetIdeRootDirectory + 'Bin\coreide270.bpl'); if CompareVersionNumber(CoreIdeFileVersion, CoreIde2700UPd2) >= 0 then begin Result := ideRS104U2; end else if CompareVersionNumber(CoreIdeFileVersion, CoreIde2700UPd1) >= 0 then begin Result := ideRS104U1; end else begin // There was patch 2 for 10.4.0 which broke StringGrids in a new way // so we have to detect it. RegValue := TRegistry_ReadInteger(RegKey, 'Installed', 0, HKEY_CURRENT_USER); if RegValue <> 0 then Result := ideRS104P2 else Result := ideRS104; end; end; |
AW: Delphi-Versionsnummer per IOTA-Service abfragen?
Zitat:
Delphi-Quellcode:
function GetEditorServices: IOTAEditorServices;
begin Result := BorlandIDEServices as IOTAEditorServices; Assert(Assigned(Result)); end; function GetTopMostEditView: IOTAEditView; begin Result := GetEditorServices.TopView; end; function GetEditor: TWinControl; var view: IOTAEditView; begin view := GetTopMostEditView; Result := TWinControl(view.GetEditWindow.Form.FindComponent('Editor')); end; function GetGutterWidth: Integer; var editor: TWinControl; ctx: TRttiContext; begin editor := GetEditor; Result := ctx.GetType(editor.ClassType).GetProperty('LeftGutter').GetValue(editor).AsInteger; end; |
AW: Delphi-Versionsnummer per IOTA-Service abfragen?
Zitat:
Oberperfekt! Genau das was ich später dann gesucht hätte und jetzt schon gefunden habe :thumb: Besten Dank auch nochmal @all :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 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