Главная страница
    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.46 MB
Время: 0.013 c
5-1101835909
Ranger
2004-11-30 20:31
2005.10.09
Тестирование интерфейса времени проектирования


14-1127115316
КаПиБаРа
2005-09-19 11:35
2005.10.09
Почитал я некоторые ветки...


14-1126623608
u-12
2005-09-13 19:00
2005.10.09
DNS-server


3-1124798024
Ландграф Павел
2005-08-23 15:53
2005.10.09
Копирование данных из одного .mdb в другой .mdb


14-1126787890
stone
2005-09-15 16:38
2005.10.09
Откуда пошел компьютерный сленг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский