Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1213713463
Palladin
2008-06-17 18:37
2008.08.03
Opera Mobile


15-1213783704
ciborg
2008-06-18 14:08
2008.08.03
Как работают мьютексы


2-1215083265
TUserClass
2008-07-03 15:07
2008.08.03
Скопировать TListView в другой TListView..


15-1213607281
Ajax
2008-06-16 13:08
2008.08.03
Виртуальные рабочие столы на 2 мониторах


2-1214932363
Pasha L
2008-07-01 21:12
2008.08.03
Есть ли аналог FillChar, работающий с шагом более единицы





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