AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi MAC Adresse umwandeln

MAC Adresse umwandeln

Ein Thema von Luckie · begonnen am 15. Jun 2008 · letzter Beitrag vom 16. Jun 2008
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

MAC Adresse umwandeln

  Alt 15. Jun 2008, 20:02
Ich habe die MAC Adresse in einer PULONG Variablen vorliegen. Wie bekomme ich die jetzt in eine lesbare Form?

Das Beipiel im SDK macht es so:
Code:
hr = SendARP (ipAddr, 0, pulMac, &ulLen);
    printf ("Return %08x, length %8d\n", hr, ulLen);
   
    size_t i, j;
    char * szMac = new char[ulLen*3];
    PBYTE pbHexMac = (PBYTE) pulMac;

    //
    // Convert the binary MAC address into human-readable
    //
    for (i = 0, j = 0; i < ulLen - 1; ++i) {
        j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
    }
   
    sprintf (szMac + j, "%02X", pbHexMac[i]);
    printf ("MAC address %s\n", szMac);
Aber leider reichen meine C-Kenntnisse nicht, um den Code nach Delphi zu übersetzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MAC Adresse umwandeln

  Alt 15. Jun 2008, 20:05
sprintf() sollte man durch Format() ersetzen können
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: MAC Adresse umwandeln

  Alt 15. Jun 2008, 20:10
Das ist nicht das Problem. Das Problem ist die Schleife an sich und was davor und danach kommt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: MAC Adresse umwandeln

  Alt 15. Jun 2008, 20:18
http://www.delphipraxis.net/internal...ct.php?t=76729
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: MAC Adresse umwandeln

  Alt 15. Jun 2008, 20:23
Hmpf, und ich dachte, ich mache mal was neues. Danke für den Link.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: MAC Adresse umwandeln

  Alt 15. Jun 2008, 23:22
Immernoch auf Kriegsfuß mit C/C++, Luckie?

Hier wird ein kleiner Trick benutzt, den du erst ab Tiburon auch in Delphi so benutzen kannst. Habe das lang und breit im JAPI-Blog erklärt und auch warum ich das Vorgehen von Borland fragwürdig finde.

Unter Delphi kannst du bisher im Prinzip nur PChar oder PAnsiChar zu diesem Zweck benutzen. PBYTE geht leider noch immer nicht. Was passiert ist, daß in der Zeile:
Code:
PBYTE pbHexMac = (PBYTE) pulMac;
der Pointer auf den ULONG in einen Pointer auf ein BYTE umgewandelt wird. Da BYTE und CHAR prinzipiell das gleiche sind (auf CPU-Ebene unter IA-32 und x64), und man in C/C++ einen Pointer auch als Array betrachten kann, geht die FOR-Schleife durch das Array und formatiert jeweils das Byte am Index i.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: MAC Adresse umwandeln

  Alt 16. Jun 2008, 08:16
Das war das eine und das andere war die Schleife, in deren Kopf zwei Variablen deklariert werden, nämlich i und j. Das kannte ich auch noch nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: MAC Adresse umwandeln

  Alt 16. Jun 2008, 11:37
Zitat von Luckie:
Das war das eine und das andere war die Schleife, in deren Kopf zwei Variablen deklariert werden, nämlich i und j. Das kannte ich auch noch nicht.
Die sind dort nicht deklariert, denn das ist nicht erlaubt (jedenfalls nicht mehr als eine - eine ist in C99 und C++ erlaubt). Die werden da nur benutzt. Und das ist übrigens in allen drei mit Semikolon abgetrennten Teilen erlaubt. Man hätte genauso gut auch das machen können:

Code:
// ...
    PBYTE pbHexMac = (PBYTE) pulMac;

    // 
    // Convert the binary MAC address into human-readable
    // 
    for (i = 0, j = 0; i < ulLen - 1; ++i, ++pbHexMac) { 
        j += sprintf (szMac + j, "%02X:", *pbHexMac);
    }
// ...
... oder eben eine Variation davon.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz