Not sure if this is the correct forum. I am using Inno and within the scripting portion I cannot figure out how to convert a cardinal value into a string so it can be displayed in a MsgBox() so I can verify the value.
When I convert the cardinal using something like b := IntToStr(a) then MsgBox(b) it displays a huge number (decimal representation)??

Essentially I am trying to use the GetFileVersion() function in in Inno to get the file version of a DLL and then dislpay the version in a MsgBox(). I havent been able to figure out how to convert the cardinal into a string properly


6 Years
Discussion Span
Last Post by Rockpile

Ok maybe more information, I am attempting to get the version info od msi.dll. When i rt clk > view the properties of the file the version info says it is version 5.0xx.. but when I run the IntToStr() function on the cardinal it returns a number like 32456000 ???


That link helped, thank you. I needed to break out the upper and lower bits of the cardinals to get the proper version numbers using 'shr 16' and 'and $FFFF'

function GetVersionNumbers(const Filename: String; var VersionMS, VersionLS: Cardinal): Boolean;

I ended up using something close to the following...

myfile : string;
MS, LS : cardinal;
V1, V2, V3 V4 : dword;

myfile := 'c:\windows\system32\msi.dll'

GetVersionNumbers(myfile, MS, LS);

V1 := MS shr 16;
V2 := MS and $FFFF;
V3 := LS shr 16;
V4 := LS and $FFFF;

MsgBox(IntToStr(V1)+'.'+IntToStr(V2)+'.'+IntToStr(V3)+'.'+IntToStr(V4), mbInformation, MB_OK);

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.