Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
ВнизНе могу добиться от функции работы Найти похожие ветки
← →
InfraRed (2007-01-18 01:26) [0]Задаю параметр для открытия ключа HKEY_USERS
То Функция RegEnumKeyEx возвращает список ключей
Задаю параметр для открытия ключа HKEY_LOCAL_MACHINE
Функция RegEnumKeyEx ни какого списка не возвращает видимую ошибку не возвращает - догнать не могу чево нехватает.procedure TForm1.Button1Click(Sender: TObject);
Var Rez: Integer;
Buff: Pointer;
i: integer;
Name: String;
BuffSise: Cardinal;
MyKey: HKEy;
begin
Rez:=RegConnectRegistry(PChar(edName.Text),HKEY_LOCAL_MACHINE,REMOT_KEY);
if Rez <> ERROR_SUCCESS then begin ShowMessage("Connection No!"); Exit; End;
ShowMessage("Connection Ok!");
try
Lst := TStringList.Create;
i:=0;
BuffSise:=1024;
GetMem(Buff,BuffSise);
while RegEnumKeyEx(REMOT_KEY,i,buff,BuffSise,Nil,NIl,Nil,Nil) = ERROR_SUCCESS do
begin
Application.ProcessMessages;
BuffSise:=1024;
SetLength(Name,BuffSise);
CopyMemory(@Name[1],Buff,BuffSise);
Lst.Add(Name);
Inc(i);
end;
Memo1.Lines.AddStrings(Lst);
finally
FreeMem(Buff,BuffSise);
RegCloseKey(REMOT_KEY);
Lst.Free;
end;
end;
← →
Джо © (2007-01-18 01:32) [1]Код не смотрел, но вместо
> if Rez <> ERROR_SUCCESS then begin ShowMessage("Connection
> No!");
используйif not .... then
RaiseLastOsError;
чтобы увидеть вразумительное сообщение об ошибке.
← →
InfraRed (2007-01-18 02:03) [2]Разобрался таки - проблема была в сетевых адаптерах.
← →
Германн © (2007-01-18 02:28) [3]
> InfraRed (18.01.07 02:03) [2]
>
> Разобрался таки - проблема была в сетевых адаптерах.
>
Ну так nobless oblige должно бы было заставить тебя "прояснить сию проблему" и выдать решение!
← →
infraRed (2007-01-18 12:05) [4]nobless oblige это кто есть такой?
← →
infraRed (2007-01-18 12:20) [5]> Джо © (18.01.07 01:32) [1]
- RaiseLastOsError ни чем не отличается от LastError
LastError - а получение оного мне ни очем не говорит, как извлеч причину ошибки? Допустим GetLastError = 997
← →
Джо © (2007-01-18 12:23) [6]> [5] infraRed (18.01.07 12:20)
> > Джо © (18.01.07 01:32) [1]
> - RaiseLastOsError ни чем не отличается от LastError
Оно отличается тем, что вызывает исключение с текстовым описанием ошибки, а не просто кодом.
← →
infraRed (2007-01-18 12:35) [7]Unit
SysUtils
Syntax
[Delphi] procedure RaiseLastOSError(); overload;
[Delphi] procedure RaiseLastOSError(LastError: Integer); overload;
Description
- вот в справке нашел в модуле систем нашел:
procedure RaiseLastOSError;
begin
RaiseLastOSError(GetLastError);
end;
какойбы нибудь примерчик как содерзание ошибка извлечЬ? или примерчик применения RaiseLastOSError очень плиз.
← →
Джо © (2007-01-18 12:38) [8]> какойбы нибудь примерчик как содерзание ошибка извлечЬ?
> или примерчик применения RaiseLastOSError очень плиз.
Примерчик в [1].
← →
infraRed (2007-01-18 12:46) [9]> Джо © (18.01.07 12:38) [8]
> Примерчик в [1].
И то правильно потому, что RegEnumKeyEx(REMOT_KEY,i,buff,BuffSise,Nil,NIl,Nil,Nil) = ERROR_SUCCESS
По спецификации возвращает только ERROR_SUCCESS если правильно работает, Но суть в том, что она возвращает правильные ответ, но работу не выполняет в одних случаях, а вдругих выполняет. Как же причину разыскать?
← →
Джо © (2007-01-18 12:53) [10]RegEnumKeyEx также (кроме кода ошибки) еще и может возвратить ERROR_NO_MORE_ITEMS и ERROR_MORE_DATA.
← →
Джо © (2007-01-18 12:55) [11]А в цикле while вообще не обрабатывается результат возврата, кроме как на ERROR_SUCCESS.
← →
Джо © (2007-01-18 13:07) [12]> Но суть в том, что она возвращает правильные ответ, но
> работу не выполняет в одних случаях, а вдругих выполняет
Кстати, что это значит? Т.е.: «работу не выполняет».
← →
InfraRed (2007-01-18 14:15) [13]> Джо © (18.01.07 13:07) [12]
> Кстати, что это значит? Т.е.: «работу не выполняет».
С этим я и пытаюсь разобраться.
Я сное дело, что машины в сетке я юзаю на vmware там несколько адаптеров один для vmnat vmhost-only
Вот когда остается включенным vmnat адаптер то происходит следующеее конект = ERROR_SUCCESS
Функция RegEnumKeyEx в цикле тоже = ERROR_SUCCESS Но данные пусты Буффер = 0
При включенных обоих адаптерах все происходит Ок! Но Можно просмотреть ключи первого уровня а Подключи уже не открываются в следующем коде:if RegOpenKeyEx(REMOT_KEY,PChar(edSubKey.text),0,KEY_QUERY_VALUE,SubKey) = ERROR_SUCCESS then begin
ShowMessage("Open Key Ok!");
RegEnumKeys(SubKey,"",Name); //from Uses Minireg.pas
Memo1.Text:=Name;
end
Некак не могу понять или это из за глюков vmware всетаки специфическая сеть. Или еще какие нибудь привелегии иметь надо в коде и как ошибку поймать тоже не понимаю пока.
← →
InfraRed (2007-01-18 19:16) [14]Vmware не причем. Тестировал на физической локалке функция:
RegOpenKeyEx(REMOT_KEY,PChar(edSubKey.text),0,KEY_QUERY_VALUE,SubKey)
не открывает ключи, Но соединение проходит ОК!
Функция RegEnumKeyEx может перечислить ключи в только текущем HKEY_LOCAL_MACHINE
Так и не пойму чего еще нехватает?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c