Форум: "WinAPI";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
ВнизЧтение из реестра переменных с типом 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c