Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

реестр!!! [D7, WinXP]


vamp_avp ©   (2007-10-11 10:27:00) 

Привет всем!
Пытаюсь из реестра достать данные типа мультистринг
и ничего не получается
может быть кто-нибуть подскажет
как это можно сделать
ЗАРАНЕЕ БЛАГОДАРЕН!


vamp_avp   (2007-10-11 15:31:00) [1]

var
Registry: TRegistry;
s: string;
i, l: Integer;
begin
Registry := TRegistry.Create(KEY_READ);
try
  Registry.RootKey := HKEY_LOCAL_MACHINE;
  Registry.OpenKey('HARDWARE\description\System', False);
  l := Registry.GetDataSize('SystemBiosVersion');
  SetLength(s, l);
  Registry.ReadBinaryData('SystemBiosVersion', s[1], l);
  for i := 1 to l - 2 do
    if s[i] = #0 then
      s[i] := ',';
  Memo1.Lines.Text := s;
finally
  Registry.Free;
end;

так получается точно только что попробовал
ОГРОМНОЕ спасибо!


vamp_avp   (2007-10-11 15:21:00) [2]

Огромно спасибо!
замечание понял
учту на будущеееееее!!!!!


koha   (2007-10-11 13:23:00) [3]

function RegGetMultiString(RootKey: HKEY; Name: String; Var Value: String): boolean;
var
 Buf: Pointer;
 BufSize: Cardinal;
begin
 Result := False;
 if RegGetValue(RootKey, Name, REG_MULTI_SZ, Buf, BufSize) then
 begin
   Dec(BufSize);
   SetLength(Value, BufSize);
   if BufSize > 0 then
     CopyMemory(@Value[1], Buf, BufSize);
   FreeMem(Buf);
   Result := True;
 end;
end;


koha   (2007-10-11 13:22:00) [4]

требуется API

function RegSetMultiString(RootKey: HKEY; Name: String; Value: String): boolean;
begin
 Result := RegSetValue(RootKey, Name, REG_MULTI_SZ, PChar(Value + #0#0), Length(Value) + 2);
end;


koha   (2007-10-11 13:15:00) [5]

> [4] vamp_avp   (11.10.07 11:31)


> А тем кто не знает такого
> просьба не писать, раз не знаешь
> (а в описании написано ХР)


- а вдруг узнает.... ты же ведь не знаешь, как прочитать, а пишиш.


MBo   (2007-10-11 13:10:00) [6]

>через ReadBinaryData не получается
не верю


var
 Registry: TRegistry;
 s: string;
 i, l: Integer;
begin
 Registry := TRegistry.Create(KEY_READ);
 try
   Registry.RootKey := HKEY_LOCAL_MACHINE;
   Registry.OpenKey('HARDWARE\description\System', False);
   l := Registry.GetDataSize('SystemBiosVersion');
   SetLength(s, l);
   Registry.ReadBinaryData('SystemBiosVersion', s[1], l);
   for i := 1 to l - 2 do
     if s[i] = #0 then
       s[i] := ',';
   Memo1.Lines.Text := s;
 finally
   Registry.Free;
 end;


evvcom   (2007-10-11 13:04:00) [7]

Ладно, не кипятись. Мне обычно regedit-а хватало, а он такого не знает. Посмотрел regedt32, этот знает.
Попробуй RegQueryValueEx тогда.


vamp_avp   (2007-10-11 12:04:00) [8]

Блин парни не получается
HKEY_LOCAL_MACHINE\HARDWARE\description\System
SystemBiosVersion тип мультистринг
если не верите можете сами посмотреть
через ReadBinaryData не получается
может кто еще подскажет
ЗАРАНЕЕ БЛАГОДАРЕН!!!!


vamp_avp   (2007-10-11 11:31:00) [9]

Всем спасибо!
А тем кто не знает такого
просьба не писать, раз не знаешь
(а в описании написано ХР)


evvcom   (2007-10-11 11:22:00) [10]


> из реестра достать данные типа мультистринг

Блин, такого типа данных в реестре не знаю. Это что? Новая ОС какая с таким реестром? :)


Anatoly Podgoretsky   (2007-10-11 10:38:00) [11]

> vamp_avp  (11.10.2007 10:27:00)  [0]

Надо писать наследника от TRegistry или работать напрямую с АПИ


MBo   (2007-10-11 10:35:00) [12]

TRegistry.ReadBinaryData и поделить по нуль-терминаторах


Наверх

Титульная страница Поиск, карта сайта Написать письмо