Danke erstmal für eure tatkräftige Hilfe!
Dass sich die MAC-Adresse (normalerweise) nicht ändern kann, ist mir klar.
Vielleicht liegt der Fehler doch in der MacAddrToStr function, deshalb hier der Code:
Delphi-Quellcode:
type
TMacAddress = array [0..MAXLEN_PHYSADDR - 1] of Byte;
class function TAdapter.MacAddrToStr(const MacAddr: TMacAddress; AddrLen: Cardinal): String;
var
I: Integer;
begin
{ Convert MAC-Address to string for display purposes... }
Result := '';
if AddrLen = 0 then
begin
Result := '00-00-00-00-00-00';
Exit;
end;
for I := 1 to AddrLen do
Result := Result + IntToHex(MacAddr[I], 2) + '-';
Delete(Result, Length(Result), 1);
end;
Warum ich nicht glaube, dass dort der Fehler liegt?
Delphi-Quellcode:
{ Siehe mein bereits geposteter Code }
Adapter := GetAdapterByMACAddr(TMACAddress(pIfTable^.table[I].bPhysAddr),
pIfTable^.table[I].dwPhysAddrLen);
Weil in diesem Code bPhysAddr immer einen anderen Wert hat. Es ändert sich meinem Debugger zufolge immer der vorletzte Block, also z.B. 0,0,33,232,166,94,X,130, wobei sich immer X ändert. Das Programm wurde auch schon auf einem anderen Rechner getestet (dort stand mir allerdings kein Debugger zur Verfügung), auch dort "erkannte" mein Programm neue Netzwerkkarten, die sich nur in der MAC-Adresse unterschieden.
Da mir das Problem aber schon schlaflose Nächte bereitet, habe ich beschlossen den ganzen Code meines Projektes zur Verfügung zu stellen - vielleicht findet ihr ja den Fehler. Ich weiß echt nicht mehr weiter.
Falls ihr anderere Verbesserungen für mein Programm (es ist sicherlich unschwer festzustellen, dass es noch nicht fertig ist) habt, dann heraus damit, denn ich programmiere Delphi um zu lernen!
Danke,
Andreas
Andreas N.