ich habe 2 Funktionen. Die eine ist zum auslesen der Macadresse. Dabei kann man per Parameter angeben die wievielte Macadresse ausgelesen werden soll (falls mehrere Netzwerkkarten eingebaut sind). In der Funktion wird ob ich überhaupt 5 Netzwerkkarten habe wenn ich die 5te auslesen möchte.
Von dieser Funktion abgeleitet habe ich mir eine neue gebaut die zu 100% identich ist (nur das result der Funktion ist von einem anderen Typ) und mir die Anzahl der Netzwerkkarten zurück gibt. Diese funktion liefert mir allerdings ein falsches ergebnis (Ergebnis ist auch ab und zu mal ein anderes)
Funktion zum zählen
Delphi-Quellcode:
function GetMacAddressCount: Byte;
var
AdapterList: TLanaEnum;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB); //<== Bis einschließlich dieser zeile ist die Funktion gleich der anderen
result := Byte(AdapterList.length); //Ergebnis weicht von dem ab, welches in der anderen Funktion beim Debuggen angezeigt wird
end;
Funktion für die Macadresse
Delphi-Quellcode:
function GetMACAddress(ANewworkcardIndex: Byte = 0): string;
var
AdapterList: TLanaEnum;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB); //<== Bis einschließlich dieser zeile ist die Funktion gleich der anderen
if Byte(AdapterList.length) > ANewworkcardIndex then
Result := GetAdapterInfo(AdapterList.lana[ANewworkcardIndex])
else
Result := 'mac not found';
end;
[Edit]Hab die Frage vergessen
Wo liegt der Fehler?[/Edit]