Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];
ВнизРабота с реестром Найти похожие ветки
← →
Саша (2008-07-01 21:20) [0]Подскажите, пожалуйста, как проверить существование определенного Строкового параметра в определенной ветке реестра.
← →
Сергей М. © (2008-07-01 21:25) [1]см. TRegistry.ReadПоБарабануКакойТип()
При несуществовании значения с запрашиваемым тобой именем метод возбудит исключение.
← →
Игорь Шевченко © (2008-07-01 22:07) [2]
> Подскажите, пожалуйста, как проверить существование определенного
> Строкового параметра в определенной ветке реестра.
valueexists ?
← →
Loginov Dmitry © (2008-07-01 23:44) [3]> При несуществовании значения с запрашиваемым тобой именем
> метод возбудит исключение.
У строк не возбуждает.
← →
Riply © (2008-07-01 23:54) [4]> [0] Саша (01.07.08 21:20)
> Подскажите, пожалуйста, как проверить существование определенного
> Строкового параметра в определенной ветке реестра.
Зависит от "в определенной ветке реестра".
В общем случае это невозможно (ну пусть будет: "довольно сложно").
Дело в том, что могут быть проблеммы с правами.
← →
Сергей М. © (2008-07-02 00:20) [5]
> У строк не возбуждает
Это почему же ?
Вот цитата из "генофонда":
function TRegistry.GetData(const Name: string; Buffer: Pointer;
BufSize: Integer; var RegData: TRegDataType): Integer;
var
DataType: Integer;
begin
DataType := REG_NONE;
if RegQueryValueEx(CurrentKey, PChar(Name), nil, @DataType, PByte(Buffer),
@BufSize) <> ERROR_SUCCESS then
raise ERegistryException.CreateResFmt(@SRegGetDataFailed, [Name]);
...
function TRegistry.ReadString(const Name: string): string;
var
Len: Integer;
RegData: TRegDataType;
begin
Len := GetDataSize(Name);
if Len > 0 then
begin
SetString(Result, nil, Len);
GetData(Name, PChar(Result), Len, RegData);
if (RegData = rdString) or (RegData = rdExpandString) then
SetLength(Result, StrLen(PChar(Result)))
else ReadError(Name);
← →
Loginov Dmitry © (2008-07-02 00:40) [6]> Вот цитата из "генофонда":
Если строковой переменной в реестре нет, то GetDataSize() вернет -1, а функция ReadString() - пустую строку.
Вот недостающий фрагмент функции ReadString():end
else Result := "";
end;
← →
Сергей М. © (2008-07-02 00:48) [7]
> Loginov Dmitry © (02.07.08 00:40) [6]
Да, ты прав.
Но логика эта довольно странная.
На месте
else Result := "";
по идее должно было быть
else ReadError(..);
← →
Loginov Dmitry © (2008-07-02 00:57) [8]> Но логика эта довольно странная.
Имхо, не более странная, чем NULL="" у Оракла и Парадокса :)
Что есть, то и используем, и на том спасибо! :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c