Текущий архив: 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