AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Frage zu MAC Adresse auslesen

Ein Thema von Mackhack · begonnen am 9. Mai 2007 · letzter Beitrag vom 9. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#1

Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:12
Hi DPler,

ich habe hier den Code in eine Unit gepackt und wollte den grad mal testweise benutzen.

Jedoch steht da jetzt immer nur eine Zahl in der Caption von meiner Form.

Weis jemand warum? Der Codeausschnitt ist aus der FormCreate Methode!

Delphi-Quellcode:
  [...]
  SL := TStringList.Create;
  for I := 0 to 5 do
  begin
    SL.Add(String(uGetMACAddress.getSystemMACAddresses[I]));
    Caption := SL.Text[I];
  end;
end;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:17
Zitat:
Jedoch steht da jetzt immer nur eine Zahl in der Caption von meiner Form.

Weis jemand warum?
Weil genau das im Quelltext steht

SL.Text Gibt den gesamten Inhalt einer Stringliste zurück ('zeile1'#13#10'zeile2'#13#10'zeile3'#13#10)
mit
SL.Text[i] bekommst du also nur das Zeischen Nummer i aus diesem String.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.193 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:18
Die MAC-Adresse ist ja auch eine Zahl. Nur ist eine Zahl wie 12343238 sehr schlecht lesbar, deshalb wird sie (für IP-V4) für die Eingabe/Anzeige in die Bytewerte aufgeteilt und mit : getrennt
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:20
Hi,

danke. Haette ich das ganze so gemacht

  Caption := SL.Text; ist die ganze Caption leer! Oder hab ich jetzt was uebersehen?
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:26
hast du dir mal im Debugger den Wert von sl.text anzeigen lassen? Oder hast du anstelle das in die Caption zu schreiben mal per showmessage ausgegeben?
Wenn du folgenden String einer Caption zuweist siehst du nichts mehr davon:
'Zeile1'#13#10'Zeile2'#13#10'Zeile3'#13#10'Zeile4' #13#10'Zeile5'#13#10

In der Caption wird daraus (X=nicht darstellbares zeichen): Zeile1XXZeile2XXZeile3XXZeile4XXZeile5XX
durch die Zeilenumbrüche (die nicht dargestellt werden) rutscht die Caption nach oben (also aus der Titelleiste raus) so das du davon nichts mehr siehst. Nutze einfach den Debugger etwas dann siehst du die richtigen Werte.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:31
Hi,

ich habe grad in der Zeit als du wohl schriebst den Debugger in der Tat verwendet und ich habe nach dem gesamten Durchlauf 3 vollstaendige MAC Adressen drin gehabt in Caption.

Das verstehe ich jetzt nicht wirklich. Ich habe doch nur einen Onboard LAN Adapter drin. Wenn ich aber mit der ShowMessage arbeite bekomme ich eine MAC angezeigt, dann 6 MAC's untereinander geschrieben in der ShowMessage.

Weis wer wo die anderen herkommen?
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:41
liefert dir denn GetSystemMacAdresses wirklich 6 Adressen zurück oder liegt es vielleicht einfach nur daran das du deine schleife hart von 0 bis 5 durchlaufen lässt?

Im übrigen hast du dir da ein riesen Speicherleck geschaffen.
Durch den Aufruf von GetSystemMacAdresses wird eine Stringlist initialisiert welche dir zurück gegeben wird. Diese gibst du allerdings nirgends frei sondern rufst stattdessen die Funktion sogar 6 mal auf ohne einmal die zurückgegebene Stringlist frei zu geben. Eben um so etwas zu vermeiden werden funktionen die Listen füllen in der Regel so declariert.
function GetSystemMacAdresses(ADestList: TStringList): Irgendwas; somit ist der Nutzer gezwungen die Liste(das Object) vorher anzulegen und weiß damit auch sofort das er sich um die Freigabe auch selbst kümmern muss. Es hindert dich niemand dran als Ergebnis die Stringliste auch als Funktionsergebnis zurück zu geben aber du solltest in einer Funktion keine Stringliste erstellen und zurückgeben.
Delphi-Quellcode:
function GetSystemMacAdresses(ADestList: TStringList): TStringList;
begin
  [...]
  result := ADestList;
end;
Generell sollte man in Funktionen nie ein Object erstellen welches per Result zurück gegeben wird.
Denn der Endanwender weiß dann nicht ob er sich selbst um die Freigabe kümmern muss oder ob die Freigabe von der Klasse gemanged wird.
Zudem kommt es auch des öfteren vor das man eine Funktion aufruft ohne das Funktionsergebnis zu verwenden (denn nicht alle werten Funktionsergebnisse aus um heraus zu finden ob der Aufruf erfolgreich war etc.).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:46
Zitat von SirThornberry:
liefert dir denn GetSystemMacAdresses wirklich 6 Adressen zurück oder liegt es vielleicht einfach nur daran das du deine schleife hart von 0 bis 5 durchlaufen lässt?
Wegen der Schleife die ich von 0 bis 5 laufen lasse! Aber was sind das dann fuer Werte? Zufallswerte? Und warum bekomme ich wenn das Obere Schleifenende 6 oder mehr ist einen Out of Bound Fehler? Ich hab ja mit 0 to 5 schon mehr MAC Adressen als ich in Wirklichkeit habe.

Zitat von SirThornberry:
Im übrigen hast du dir da ein riesen Speicherleck geschaffen.
Weis ich. Diese Funktion auch nicht von mir, hast aber recht

::Edit:: Und wie kann ich das sonst noch machen ausser mit einer for Schleife da ich ja wie gesagt nur eine MAC Adresse haben kann in meinem PC! Also am Besten das ganze Dynamisch falls mal ein PC da steht mit mehr als einer NIC!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 09:56
Vielleicht geht es so besser?

Delphi-Quellcode:
[...]
begin
  SL := TStringList.Create;
  SL.Assign(uGetMACAddress.getSystemMACAddresses);
  for i:=0 to Sl.count -1 do
    // Ausgabe mac Addresses
  SL.free;
end;
Aber das Speicherleck hast Du dann noch immer.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Frage zu MAC Adresse auslesen

  Alt 9. Mai 2007, 10:00
Danke Klaus.

Hier auch wieder. 6 mal ne ShowMessage mit insgesamt 6 MACs!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 18:30 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