Just installed RAD Studio Berlin 10.1 (architect) on a new system and trying to compile some existing code. Ran in to some run-time errors, and when I finally traced it it transpires that StdVCL32.dll and/or stdVCL40.dll are not registered on this system. I checked in the registry using the GUIDs from VCL.AXCtrls and no sign....
It is easy to demonstrate this using GetOleStrings.
Procedure Test_StdVCL;
var
SL: TStringList;
iStr: IStrings;
begin
SL:= TStringList.Create;
try
SL.Add('Hello');
GetOleStrings(SL, iStr); //BOOM, if StdVCL40.dll not registered
ShowMessage(IntToStr(iStr.Count));
finally
SL.Free;
iStr:= nil;
end;
end;
I realize that I need to deploy and register on a clients system. I was just not expecting to have to fight with registering core Delphi dlls that the installer might do. As far as I am aware this has always happened before.
Underlying this is TStringsAdapter.Create
constructor TStringsAdapter.Create(Strings: TStrings);
var
StdVcl: ITypeLib;
begin
OleCheck(LoadRegTypeLib(LIBID_STDVCL, 4, 0, 0, StdVcl));
inherited Create(StdVcl, IStrings);
FStrings := Strings;
end;
LoadRegTypeLib does not find the GUID in the registry, and StdVCL returns nil. The following line explodes.
Any ideas on why StdVCL is not registered as part of the installation?
Many thanks