Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: CL | DM;

Вниз

Как сохранить TColor в реестре?   Найти похожие ветки 

 
Иван Семенов   (2005-08-28 16:21) [0]

Есть запись:
type Colored = record
Font, Borders, GradTop, GradBot : TColor;
 end;

colors : colored;

Как сохранить colors в реестре, а потом прочитать? В описании TRegIniFile нашел только запись Integer, Boolean, String.


 
begin...end ©   (2005-08-28 16:44) [1]

> Иван Семенов   (28.08.05 16:21)

Используйте класс TRegistry и его метод WriteBinaryData.

var
 colors: colored;
 Registry: TRegistry;
begin
 ... // Создаём экземпляр Registry, переходим на нужный ключ
 Registry.WriteBinaryData("...", colors, sizeof(colors));
 ...
end.


 
Иван Семенов   (2005-08-28 17:12) [2]

Спасибо. Попробую.
А это единственный вариант?


 
begin...end ©   (2005-08-28 17:20) [3]

> Иван Семенов   (28.08.05 17:12) [2]

> А это единственный вариант?

Нет. Можно ещё напрямую использовать API-функции для работы с реестром. Но вряд ли это будет проще. А с помощью TRegIniFile, этого сделать нельзя.


 
Anatoly Podgoretsky ©   (2005-08-28 18:09) [4]

Иван Семенов   (28.08.05 17:12) [2]
Нет, более того это неудачный вариант, используй WriteInteger, соответветсвенно для каждой части по отдельности. А для удобства можно сделать подключ Colors


 
Иван Семенов   (2005-08-28 20:26) [5]

Ой. А если запись такая:
type Colored = record
Font, Borders, GradTop, GradBot : TColor;
Value : Integer;
Name : String;
end;
colors : Colored;


То поля Value и String могут быть разного размера. Как тогда прочитать запись из реестра?
Делаю так:

Reg := TRegistry.Create;
 try
   Reg.RootKey := HKEY_CURRENT_USER;  
   if Reg.OpenKey("\Software\MySoft\Parameters", True) then begin
   Reg.ReadBinaryData("SettValue", colors, sizeof(colors));
   Reg.CloseKey;
   end;
 finally
   Reg.Free;
  end;

Но похоже, размерчик не тот? Можно пример как записать и прочитать запись с неизвестным размером. Или что я не так делаю?


 
Иван Семенов   (2005-08-28 20:27) [6]

>>Anatoly Podgoretsky

А как записать TColor в integer?


 
Anatoly Podgoretsky ©   (2005-08-28 20:33) [7]

Reg.WriteInteger("Font", Colored.Font);
...
Reg.WriteInteger("GradBot", Colored.GradBot);


 
Anatoly Podgoretsky ©   (2005-08-28 20:36) [8]

Иван Семенов   (28.08.05 20:26) [5]
Это не пойдет - Name это не данные, а указатель на данные, точно также записывать отдельно.


 
Иван Семенов   (2005-08-28 20:39) [9]

>>Anatoly Podgoretsky

Спасибо! Переделаю.



Страницы: 1 вся ветка

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.098 c
1-1126656874
igor-567
2005-09-14 04:14
2005.10.09
Время в местном формате


14-1126612790
McSimm
2005-09-13 15:59
2005.10.09
тест


14-1127286631
IceBeerg
2005-09-21 11:10
2005.10.09
За F1 ились?


1-1127132157
kolos_rus
2005-09-19 16:15
2005.10.09
Есть ли разница где подключить модуль?


14-1126255437
Заинтересованный
2005-09-09 12:43
2005.10.09
Не могу скачать пример к статье, к кому обратиться?