Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Sekündlich wechselnde MAC Adresse!? (https://www.delphipraxis.net/56937-sekuendlich-wechselnde-mac-adresse.html)

EConvertError 14. Nov 2005 20:10

Re: Sekündlich wechselnde MAC Adresse!?
 
Verzeihung, diese Units gibt hier: ftp://delphi-jedi.org/api/IPHlpAPI.zip

Andreas

Lasse2002 14. Nov 2005 22:29

Re: Sekündlich wechselnde MAC Adresse!?
 
Versuchs mal damit:

Delphi-Quellcode:
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 := 0 to AddrLen-1 do // <-- hier sollte man besser von 0 bis AddrLen-1 zählen
    Result := Result + IntToHex(MacAddr[I], 2) + '-';
  Delete(Result, Length(Result), 1);
end;

himitsu 14. Nov 2005 23:57

Re: Sekündlich wechselnde MAC Adresse!?
 
Oder eine dieser beiden Varianten, wobei ich Letztere bevorzugen würde ^^

Und das der Index bei 0 beginnt, daß hat Lasse2002 schon versucht zu sagen ;)
Delphi-Quellcode:
TMacAddress = array [0..MAXLEN_PHYSADDR - 1] of Byte;
Delphi-Quellcode:
class function TAdapter.MacAddrToStr(const MacAddr: TMacAddress; AddrLen: Cardinal): String;
var
  I: Integer;
begin
  { Convert MAC-Address to string for display purposes... }
  if AddrLen = 0 then
  begin
    Result := '00-00-00-00-00-00';
    Exit;
  end;
  Result := IntToHex(MacAddr[0], 2);
  for I := 1 to AddrLen - 1 do
    Result := Result + '-' + IntToHex(MacAddr[I], 2);
end;
Delphi-Quellcode:
class function TAdapter.MacAddrToStr(const MacAddr: TMacAddress; AddrLen: Cardinal): String;
var
  I: Integer;
begin
  { Convert MAC-Address to string for display purposes... }
  if AddrLen > 0 then
  begin
    Result := IntToHex(MacAddr[0], 2);
    for I := 1 to AddrLen - 1 do
      Result := Result + '-' + IntToHex(MacAddr[I], 2);
  end
  else
    Result := '00-00-00-00-00-00';
end;

Allerdings dürfte sich, auf Grund des Indexfehlers, nur die letzte Zahl verändern und nicht die vorletzte, also wird es demnach noch ein weiteres Problem geben. :gruebel:

EConvertError 15. Nov 2005 18:38

Re: Sekündlich wechselnde MAC Adresse!?
 
Ich kann mir das nicht logisch erklären, aber durch ersetzen der MacAddrToString Funktion funktioniert es, obwohl sich die MAC-Adresse in dem Array, der MacAddrToString übergeben wird, ändert (eben die vorletzte Zahl). Trotzdem kommt jetzt immer die selbe MAC-Adresse heraus, folglich bin ich glücklich!

Vielen Dank für eure Hilfe,
Andreas

himitsu 15. Nov 2005 18:51

Re: Sekündlich wechselnde MAC Adresse!?
 
Bekommst du 'ne 4-stellige MAC raus?
Wenn ja, dann kann sich ruhig die vorletzte Stelle ändern, da sie ja nicht in den String einfließt ... ich dachte die vorletzte Stelle ändert sich in dem String und nicht im Array, folglich ist es OK, da die letzten 2 Stellen nicht definiert sind :)

EConvertError 18. Nov 2005 14:30

Re: Sekündlich wechselnde MAC Adresse!?
 
Nein, ich habe eine 6 stellige MAC Adresse, aber die ersten beiden Zahlen sind "00-00".
Ja, die Adresse hat sich im Array schon geändert.

Aber jetzt funktioniert ja Alles.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz