Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.04;
Скачать: CL | DM;

Вниз

Чтение из реестра переменных с типом REG_MULTI_SZ   Найти похожие ветки 

 
Trimp ©   (2005-07-18 21:13) [0]

Здравствуйте мастера. Как можно прочитать из реестра переменную (defaultGateway), у которой тип REG_MULTI_SZ (многострочный текст)?
Заранее спасибо.


 
Fay ©   (2005-07-18 21:24) [1]

2 Trimp ©   (18.07.05 21:13)
В левую руку возьми исходники TRegistry
Правой жми на F1.

Максимум через час тебе будет Щястье.


 
Anatoly Podgoretsky ©   (2005-07-18 21:26) [2]

Trimp ©   (18.07.05 21:13)  
Ты другие то типы читать умеешь?


 
Trimp ©   (2005-07-18 21:39) [3]

2 Fay
Спасибо, здорово помогли уже во второй раз. Мне кажется, что такой совет эквивалентен ответу:"Не знаю". Я, когда не знаю, спрашиваю, вот и в этот раз сначала проверил все типы READ в исходниках TRegistry:
reg.ReadCurrency()
reg.ReadBinaryData()
reg.ReadBool()
reg.ReadDate()
reg.ReadDateTime()
reg.ReadFloat()
reg.ReadInteger()
reg.ReadString()
reg.ReadTime()
и не один из них не может читать REG_MULTI_SZ.


 
Trimp ©   (2005-07-18 21:42) [4]

2 Anatoly Podgoretsky
Умею читать String,byte,boolean,float,Integer и остальные перечисленные в [3]


 
Anatoly Podgoretsky ©   (2005-07-18 21:43) [5]

А при чем тут TRegistry и WinAPI?


 
Fay ©   (2005-07-18 21:44) [6]

2 Trimp ©   (18.07.05 21:39) [3]
Я не могу тебе помочь так как
1) Я не помню все API наизусть
2) Я не стану вспоминать с (делая, кстати, то, что я и посоветовал) специально для тебя.
3) Невозможно помочь тому, кто ничего не делает.

спасибо за внимание.


 
Trimp ©   (2005-07-18 22:04) [7]

2 Anatoly Podgoretsky
Ок, возможно я ошибся, в каком подфоруме мой вопрос будет уместней?

И всё же по существу кто-то может ответить?


 
Anatoly Podgoretsky ©   (2005-07-18 22:09) [8]

Что ты сделал для разрешения проблемы?
Как собираешься решать, от этого зависит и форум.


 
Джо ©   (2005-07-18 22:34) [9]


> [3] Trimp ©   (18.07.05 21:39)

Ну вот, зачем обманывать, сам же написал ReadBinaryData. Именно при помощи этого метода и читать.
Некогда переписывать на АПИ, но, с использованием TRegistry выглядеть будет примерно так.

//Класс-наследник от TRegistry, добавляющий новый метод чтения значений типа REG_MULTI_SZ

type
 TRegistryEx = class (TRegistry)
 private
 public
   function ReadLines (const KeyName: string; AStrings: TStrings): Integer;
 end;
///
implementation

function TRegistryEx.ReadLines(const KeyName: string; AStrings: TStrings): Integer;
var
 Buff: array of Char;
 I, Sz: Cardinal;
 Ch,PrevCh: Char;
 S: string;
begin
 Result := 0;
 AStrings.Clear;
 Sz := GetDataSize(KeyName);
 SetLength (Buff,Sz);
 ReadBinaryData(KeyName,Buff[0],Sz);
 // parse data
 PrevCh := #0;
 S := "";
 for I := 0 to Sz do
 begin
   Ch := Buff[I];
   if (Ch=#0) and (PrevCh=#0) then
      Break;
   if (Ch=#0) then
   begin
     AStrings.Add(S);
     S := "";
   end
   else
     S := S + Ch;
   PrevCh := Ch;
 end;
 Result := AStrings.Count
end;


------------------------------
Пример использования
------------------------------

procedure TForm3.Button1Click(Sender: TObject);
var
 RegEx: TRegistryEx;
 Lst: TStrings;
 I: Integer;
begin
 RegEx := TRegistryEx.Create;
 try
   RegEx.RootKey := HKEY_LOCAL_MACHINE;
   RegEx.OpenKey("SOFTWARE\NEW_SECTION",False);

   Lst := TStringList.Create;
   try
     RegEx.ReadLines("key1",Lst);
     for I := 0 to Lst.Count-1 do
       ShowMessage (Lst[I])
   finally
     Lst.Free;
   end;
 finally
   RegEx.Free;
 end;
end;


 
Trimp ©   (2005-07-18 23:09) [10]

2 Джо
Спасибо, нашёл свою ошибку. При проверке ReadBinaryData неправильно указывал третий атритбут (у тебя Sz).



Страницы: 1 вся ветка

Текущий архив: 2005.09.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
14-1123512095
root
2005-08-08 18:41
2005.09.04
Очень уж щикотливая тема :-)


9-1115613002
.cpp
2005-05-09 08:30
2005.09.04
Работа с JPG в Delphi


1-1123752006
BFG9k
2005-08-11 13:20
2005.09.04
Активная рамка


3-1121754307
Stanislav
2005-07-19 10:25
2005.09.04
Прерывание выполнения запроса


14-1123603445
Piter
2005-08-09 20:04
2005.09.04
Настройка SendMail?