AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Gleiche Funktionen->anderes Ergebnis (macadressen...ERLEDIGT
Thema durchsuchen
Ansicht
Themen-Optionen

Gleiche Funktionen->anderes Ergebnis (macadressen...ERLEDIGT

Ein Thema von SirThornberry · begonnen am 11. Jan 2005 · letzter Beitrag vom 11. Jan 2005
Antwort Antwort
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Gleiche Funktionen->anderes Ergebnis (macadressen...ERLED

  Alt 11. Jan 2005, 13:48
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]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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: Gleiche Funktionen->anderes Ergebnis (macadressen zä

  Alt 11. Jan 2005, 14:29
Hab den Fehler gefunden.

Der Rückgabewert von "NetBios" war 7 was so viel heißt wie "illegal buffer address". Trotz dessen das der Buffer verwendet wurde und laut debugger nicht weg optimiert wurde hat es nicht funktioniert. Deswegen hab ich einfach aus "TLanaEnum" ein "^TLanaEnum" gemacht und selbst mit "new" speicher dafür angefordert. Und siehe da - es funktioniert.

abgeänderter Source der Funktion:
Delphi-Quellcode:
var AdapterList: ^TLanaEnum;
    NCB: TNCB;
begin
  new(AdapterList);
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := Char(NCBENUM);
  NCB.ncb_buffer := PChar(AdapterList);
  NCB.ncb_length := SizeOf(AdapterList^);
  Netbios(@NCB);
  Result := Byte(AdapterList.length);
  dispose(AdapterList);
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:51 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