Cześć
Mam pewien problemik
Otóż zrobiłem procedurkę wyświetlającą dane dotyczącą szybkości transferu dla
zainstalowanych kart sieciowych.
Dla jasności dodam że skorzystałem z unitu IPhlpAPI.pas (dostępnego w necie)
który to importuje funkcje z biblioteki IPHLPAPI.DLL
I w oparciu o powyższe moja procedura wygląda mniej więcej tak:
//Pobieranie i wyświetlanie danych
procedure TFormTransfer.WyswietlDane(Mib :IPhlpAPI.TMIBIFArray);
var
x :Integer;
tmp :Real;
begin
for x:= low(mib) to High(mib) do
with mib[x] do
begin
with Adapter[x] do
begin
//pobieranie danych...
Szybkosc:= (dwInOctets - PrevCountIn);
inc(TotalIn,Szybkosc);
if Szybkosc > 0 then inc(ActivecountIn);
PrevCountIn:= dwInOctets;
Wysylanie:= dwOutOctets - PrevCountOut;
inc(TotalOut,Wysylanie);
if Wysylanie > 0 then inc(ActivecountOut);
PrevCountOut:= dwOutOctets;
if Szybkosc > SzybkoscSred then SzybkoscSred:= Szybkosc;
if Wysylanie > WysylanieSred then WysylanieSred:= Wysylanie;
//szybkość pobierania...
tmp:= Szybkosc/1000; //zamiana na KB
Label1.Caption:= FormatFloat('0.0', tmp) +' KBs'; //wyświetla szybkość
//średnia szybkość pobierania
tmp:= SzybkoscSred/1000;
Label2.Caption:= FormatFloat('0', tmp) +' KBs'; //wyświetla średnią
//szybkość wysyłania...
tmp:= Wysylanie/1000; //zamiana na KB
Label3.Caption:= FormatFloat('0.0', tmp) +' KBs'; //wyświetla szybkość
//średnia szybkość wysyłania
tmp:= WysylanieSred/1000;
Label4.Caption:= FormatFloat('0', tmp) +' KBs'; //wyświetla średnią
end;
end;
end;
Problem tkwi w lini dotyczącej pobierania numeru karty (index) :
//tu przelatuje mi wszystkie indexy
for x:= low(mib) to High(mib) do
Otóż w Win98 wszystko gra - pętla przelatuje dajmy na to karty od 0..3
98 ma to do siebie że jako aktywną karte ustawia index dla niej najwyższy znaczy
w tym przypadku 3 no i dane wyświetlane w labelach będą dotyczyły aktywnej karty o indeksie 3 (jest OK)
Ale testowałem program pod XP - i tu sęk :/
karta która była aktywna pod 98 - otrzymała index 1
i wszystko mi się wali ponieważ jako ostatnia (3) ustawiła mi się karta modemowa
która nie jest aktywna
Więc mam pytanie - Jak pobrać index aktywnej karty sieciowej tak abym nie musiał używać pętli przelatującej wszystkie karty tylko od razu mógł zrobić taki
zapis:
with mib[tu_numer_aktywnej_karty] do
begin
//itd...
PS. Pomyliłem się wysyłając ten post w rubrykach "Temat" i "Auto" - po prostu
zamieniłem wpisy i wyszło głupawo.
W związku z tym mam prośbę:
Czy imć Pan Admin który wywalił za ten tyciusieńki błąd mój post mógłby pomagać
userom korzystającym z tego serwisu - czy woli się nadymać jak indor który wszelkie tajniki programowania wyssał z mlekiem matki (oby nie pękł) i czuć się Bogiem kasując wszystko jeśli trafi mu się zły humor.
<font color="blue">//wiesz co to sa tagi < delphi > ? - lofix</span>