procedure TForm1.BiosInfo; const Subkey: string = ''Hardware\description\system''; var hkSB: HKEY; rType: LongInt; ValueSize, OrigSize: Longint; ValueBuf: array[0..1000] of char; procedure ParseValueBuf(const VersionType: string); var I, Line: Cardinal; S: string; begin i := 0; Line := 0; while ValueBuf[i] <> #0 do begin S := StrPas(@ValueBuf[i]); // move the Pchar into a string Inc(Line); Memo1.Lines.Append(Format(''%s Line %d = %s'', [VersionType, Line, S])); // add it to a Memo inc(i, Length(S) + 1); // to point to next sz, or to #0 if at end end; end;
begin if RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar(Subkey), 0, KEY_READ, hkSB) = ERROR_SUCCESS then try OrigSize := sizeof(ValueBuf); ValueSize := OrigSize; rType := REG_MULTI_SZ; if RegQueryValueEx(hkSB, ''SystemBiosVersion'', nil, @rType, @ValueBuf, @ValueSize) = ERROR_SUCCESS then ParseValueBuf(''System BIOS Version'');
ValueSize := OrigSize; rType := REG_SZ; if RegQueryValueEx(hkSB, ''SystemBIOSDate'', nil, @rType, @ValueBuf, @ValueSize) = ERROR_SUCCESS then Memo1.Lines.Append(''System BIOS Date '' + ValueBuf);
ValueSize := OrigSize; rType := REG_MULTI_SZ; if RegQueryValueEx(hkSB, ''VideoBiosVersion'', nil, @rType, @ValueBuf, @ValueSize) = ERROR_SUCCESS then ParseValueBuf(''Video BIOS Version'');
ValueSize := OrigSize; rType := REG_SZ; if RegQueryValueEx(hkSB, ''VideoBIOSDate'', nil, @rType, @ValueBuf, @ValueSize) = ERROR_SUCCESS then Memo1.Lines.Append(''Video BIOS Date '' + ValueBuf); finally RegCloseKey(hkSB); end; end;