You are not logged in.
Pages: 1
after commit enhanced RetrieveSystemInfo e.g. running from a VM I received a runtime 217
Error:
ERegistryException exception message : Invalid data type for 'SystemBiosVersion'.
on then line
prod := SysUtils.Trim(ReadString('SystemBiosVersion'));The problem is that the key value is multi-line (REG_MULTI_SZ) and the readstring function can't read
this only happens if there is no "SystemProductName" key in the windows registry
Offline
A possible fix:
var
  buffer: string;
  len: Cardinal;      ...
      if OpenKeyReadOnly('\Hardware\Description\System') then begin
        if prod='' then begin
          len := GetDataSize('SystemBiosVersion'); //new
          SetLength(buffer, len); //new
          ReadBinaryData('SystemBiosVersion', Pointer(buffer)^, len); //new
          prod := UTF8ToString(Trim(StringReplaceAll(StringToUTF8(buffer), #0, ' '))); //new
        end;
        if prodver='' then begin
          prodver := SysUtils.Trim(ReadString('VideoBiosVersion'));
          i := Pos(#13,prodver);
          if i>0 then // e.g. multilines 'Oracle VM VirtualBox Version 5.2.33'
            SetLength(prodver,i-1);
        end;
      end;
      ....Offline
Please check https://synopse.info/fossil/info/6a4eec4faf
It should work as expected now, thanks to the new TWinRegistry object, which is REG_MULTI_SZ ready.
Offline
ab, thanks for the fix but the fossil commit was not for github.
The SynCommons.pas file has not been updated on github.
Offline
Pages: 1