Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Как сохранить 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
2-1125629460
-=snoop=-
2005-09-02 06:51
2005.10.09
не могу написать запрос!


14-1126857838
ocean
2005-09-16 12:03
2005.10.09
Упрямство


6-1118655176
Dimitrij
2005-06-13 13:32
2005.10.09
работа с FTP


2-1125595328
фелина
2005-09-01 21:22
2005.10.09
ColorDiloag


2-1125520480
tamara
2005-09-01 00:34
2005.10.09
align left ,align right





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский