Форум: "Основная";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];
ВнизПроблема с циклoм For To do. Найти похожие ветки
← →
slivka (2003-11-06 14:09) [0]Этот код предназдначен для поиска установленных в интернет адаптеров.
Но определяет он только последний устновленный.
Часть кода которая находится после этой строки выполняется только один раз
if (m = "ethernet")then else goto www;
а все переменные хранят значения относящиеся к последнему найденуму адаптеру.
Наверное я что-то с циклами не так сделал ?
procedure TForm1.Button4Click(Sender: TObject);
label www, qqq;
var
reg: TRegistry;
a: integer;
u: string;
m: string;
begin
for a := 0 to 11 do
begin
if ( a = 9 ) or ( a < 9 ) then else u := "00"+IntToStr(a); goto qqq;
begin
u := "000"+IntToStr(a);
end;
qqq:;
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey("SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"+u+"\Ndi\Interfaces",false);
m := reg.ReadString("LowerRange");
reg.CloseKey;
if (m = "ethernet")then else goto www;
begin
reg.OpenKey("SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"+u,false);
listbox1.Items.add(reg.ReadString("DriverDesc"));
reg.CloseKey;
end;
www:;
end;
reg.free;
end;
end.
← →
keymaster (2003-11-06 14:18) [1]Моя имха - ошибка тут:
if (m = "ethernet")then else goto www;
т.е. если m = "ethernet" то ничего не происходит,
а иначе топаем к www.
если не ошибаюсь, то надо так:
if (m = "ethernet")then
begin
reg. OpenKey("SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"+u,false);
listbox1.Items.add(reg.ReadString("DriverDesc"));
reg.CloseKey;
end;
reg.free;
а www как бы и не нужен...
end;
← →
dead1 (2003-11-06 14:26) [2]if a > 9 then
begin
u := "000"+IntToStr(a);
end else
u := "00"+IntToStr(a);
Тогда вообще без лэйбелов.
← →
slivka (2003-11-06 14:31) [3]Непомогло, Все равно определяется только последний.
а вот если убрать отсюда GOTO qqq;
for a := 0 to 11 do
begin
if ( a = 9 ) or ( a < 9 ) then else u := "00"+IntToStr(a); goto qqq;
begin
u := "000"+IntToStr(a);
end;
qqq:;
То определяется только первый установленный интернет адаптер.
← →
pasha_golub (2003-11-06 15:28) [4]Я конечно выскажу свое ИМХО, но ребяты Метки только усложняют отладку кода, перепиши без меток
← →
slivka (2003-11-06 15:35) [5]Окей спасибо, все переделал и заработало.
← →
zapped (2003-11-06 15:38) [6]выскажу-ка и я свою имху:
это
if ( a = 9 ) or ( a < 9 ) then
равно этому
if a <= 9 then
, что проще для понимания, а значит и эффективней для отладки...
и выходить из цикла по метке - дурной тон...
тем более, что это легко сделать иначе
присоединюсь к pasha_golub © (06.11.03 15:28) [4]
переделай без меток, забудь про них...
где-то читал: " если в коде ипользуются метки, значит, алгоритм построен неэффективно"...
и почитайте про процедуры continue и break
← →
zapped (2003-11-06 15:38) [7]опоздал :))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c