AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Subnetzmaske/ Server finden
Thema durchsuchen
Ansicht
Themen-Optionen

Subnetzmaske/ Server finden

Ein Thema von EConvertError · begonnen am 29. Sep 2003 · letzter Beitrag vom 27. Okt 2003
Antwort Antwort
Seite 2 von 2     12   
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Subnetzmaske/ Server finden

  Alt 1. Okt 2003, 17:06
Moin Andy,

Zitat von EConvertError:
Ich werde jetzt mal die Vorschläge von Christian Seehase ausprobieren und hoffen, dass es geht...
wenn Du Dir mal in dem genannten Thread durchliest wozu es gut war, und dass es funktioniert hat, würde es mich wundern, wenn es bei Dir nicht ginge.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#12

Re: Subnetzmaske/ Server finden

  Alt 22. Okt 2003, 19:54
Hallo nochmal!

Ich komme mir ein wenig blöd vor, weil ich noch einmal frage, aber:
Das mit dem AdaptersInfo hat bei mir nicht ganz funktioniert.

Wahrscheinlich liegt es an meinem eigenem Unwissen. Denn ich habe es nicht geschafft, die Subnetzmaske auszulesen, bzw. habe ich nur die eigene IP Adresse und irgendeine Maske (der Wert war 0.0.0.0, also definitiv nicht meine Subnetzmaske) herauslesen können.

WNetEnumResource ist, glaube ich, in meinem Fall nicht das Richtige, weil da doch nur die Rechner angezeigt werden, die auch in der Netzwerkumgebung sind. Oder täusche ich mich da?

Vielleicht könntet ihr mir noch einmal helfen?
Vielen Dank schon im voraus,
EConvertError
Andreas N.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Subnetzmaske/ Server finden

  Alt 22. Okt 2003, 21:21
Moin EConvertError,

wie hast Du's denn gemacht.
Ein bisschen Source wäre ganz hilfreich.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#14

Re: Subnetzmaske/ Server finden

  Alt 23. Okt 2003, 17:02
Ich habe mir den Code von hier genommen: GETADAPTERSINFO

Diese beiden habe ich herauslesen können:

Delphi-Quellcode:
IpAddress : IP_ADDRESS_STRING;
IpMask : IP_MASK_STRING;
Der Rest war mir nicht wirklich klar (ich bitte um Entschuldigung, aber mir der API habe ich bis jetzt eher weniger gemacht).

Wie gesagt; ich bräuchte die Subnetzmaske (IpMask wars nicht).

mfg
EConvertError
Andreas N.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Subnetzmaske/ Server finden

  Alt 23. Okt 2003, 17:31
Moin EConvertError,

Zitat von EConvertError:
Wie gesagt; ich bräuchte die Subnetzmaske (IpMask wars nicht).
Im Prinzip schon, aber da wo Gatewaylist steht, muss IpAddressList stehen:

Hier mal die Repeat Until Schleife aus dem Beispiel (die zu ändernden Stellen rot)

Code:
        repeat
          iasWork := pAdapterWork.[color=red]IpAddressList[/color];
          while iasWork.Next <> nil do
          begin
            cobGateway.Items.Add(trim(iasWork.[color=red]IpMask[/color].acString));
            iasWork := iasWork.Next^;
          end;
          cobGateway.Items.Add(trim(iasWork.[color=red]IpMask[/color].acString));
          pAdapterWork := pAdapterWork.Next;
        until pAdapterWork = nil;
Zitat von EConvertError:
(ich bitte um Entschuldigung, aber mir der API habe ich bis jetzt eher weniger gemacht).
Kein Problem. Am Besten kannst Du Dich hier mit den Einzelheiten vertraut machen, wenn Du Dir das PSDK herunterlädst, soweit das möglich ist (ca. 350 MB, wenn's komplett sein soll), oder unter msdn.microsoft.com nachschlägst.
Da sind die meisten Dinge genau dokumentiert.
Was jetzt nicht heissen soll, dass Du nicht mehr fragen sollst. Vor allem, wer den Umgang mit dem PSDK nicht gewohnt ist wird manchmal (oft?) Schwierigkeiten haben das passende zu finden.

In diesem Falle kannst Du ja mal sehen, ob Du mit der Dokumentation zu den hier verwendeten Datentypen klarkommst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#16

Re: Subnetzmaske/ Server finden

  Alt 26. Okt 2003, 17:52
Vielen Dank, dass ihr mir immer noch zur Seite steht!

Also ich habe jetzt einmal all das rot Markierte umgeändert, jedoch kommt bei mir eine Fehlermeldung:

Inkompatible Typen: 'IP_ADDR_STRING' und 'PIP_ADAPTER_INFO'

...und das in der folgender Zeile:
iasWork := pAdapterWork.IpAddressList; Bin schon total verzweifelt!

mfg,
EConvertError

PS: Beim MSDN hatte ich auch kein Glück.
Andreas N.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Subnetzmaske/ Server finden

  Alt 26. Okt 2003, 18:13
Moin EConvertError,

hier noch mal das Original komplett

Code:
const
  MAX_ADAPTER_DESCRIPTION_LENGTH = 128; // arb.
  MAX_ADAPTER_NAME_LENGTH        = 256; // arb.
  MAX_ADAPTER_ADDRESS_LENGTH     = 8;  // arb.

type
  PIP_ADDRESS_STRING = ^IP_ADDRESS_STRING;
  IP_ADDRESS_STRING =
    packed record
      acString : array [1..16] of Char;
    end;

  PIP_MASK_STRING = ^PIP_MASK_STRING;
  IP_MASK_STRING = IP_ADDRESS_STRING;

  PIP_ADDR_STRING = ^IP_ADDR_STRING;
  IP_ADDR_STRING =
    packed record
      Next     : PIP_ADDR_STRING;
      IpAddress : IP_ADDRESS_STRING;
      IpMask   : IP_MASK_STRING;
      Context  : DWORD;
    end;

  time_t = int64;

  PIP_ADAPTER_INFO = ^IP_ADAPTER_INFO;
  IP_ADAPTER_INFO =
    packed record
      Next               : PIP_ADAPTER_INFO;
      ComboIndex         : DWORD;
      AdapterName        : array [1..MAX_ADAPTER_NAME_LENGTH+4] of Char ;
      Description        : array [1..MAX_ADAPTER_DESCRIPTION_LENGTH+4] of Char;
      AddressLength      : UINT;
      Address            : array [1..MAX_ADAPTER_ADDRESS_LENGTH] of Byte;
      Index              : DWORD;
      dwType             : UINT;
      DhcpEnabled        : UINT;
      CurrentIpAddress   : PIP_ADDR_STRING;
      IpAddressList      : IP_ADDR_STRING;
      GatewayList        : IP_ADDR_STRING;
      DhcpServer         : IP_ADDR_STRING;
      HaveWins           : Boolean;
      PrimaryWinsServer  : IP_ADDR_STRING;
      SecondaryWinsServer : IP_ADDR_STRING;
      LeaseObtained      : time_t;
      LeaseExpires       : time_t;
    end;

function GetAdaptersInfo(const pAdapterInfo : PIP_ADAPTER_INFO;const pOutBufLen : PULONG) : DWORD; stdcall; external 'IPHLPAPI.DLL' name 'GetAdaptersInfo';

implementation

{$R *.DFM}

procedure TForm1.FormShow(Sender: TObject);

var
  dwResult    : DWORD;
  dwLen       : DWORD;
  pAdapterWork : PIP_ADAPTER_INFO;
  pAdapterList : PIP_ADAPTER_INFO;
  iasWork     : IP_ADDR_STRING;

begin
  pAdapterList := nil;
  dwLen       := 0;
  dwResult    := GetAdaptersInfo(pAdapterList,@dwLen);
  if dwResult = ERROR_BUFFER_OVERFLOW then
  begin
    pAdapterList := AllocMem(dwLen);
    try
      dwResult := GetAdaptersInfo(pAdapterList,@dwLen);
      if dwResult = ERROR_SUCCESS then
      begin
        pAdapterWork := pAdapterList;
        cobGateway.Clear;
        repeat
          ShowMessage(trim(pAdapterWork.Description));
          iasWork := pAdapterWork.GatewayList; [color=red]// auf GatewayList durch IpAddressList austauschen[/color]
          while iasWork.Next <> nil do
          begin
            cobGateway.Items.Add(trim(iasWork.IpAddress.acString)); [color=red]// und hier IpAddress durch IpMask[/color]
            iasWork := iasWork.Next^;
          end;
          cobGateway.Items.Add(trim(iasWork.IpAddress.acString)); [color=red]// hier auch IpAddress durch IpMask tauschen[/color]
          pAdapterWork := pAdapterWork.Next;
        until pAdapterWork = nil;
        if cobGateway.Items.Count > 0 then
        begin
          cobGateway.ItemIndex := 0;
        end;
      end;
    finally
      FreeMem(pAdapterList,dwLen);
    end;
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#18

Re: Subnetzmaske/ Server finden

  Alt 26. Okt 2003, 18:27
Vielen Dank, Chris!

Es funktioniert!

Danke noch mal,
EConvertError
Andreas N.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: Subnetzmaske/ Server finden

  Alt 26. Okt 2003, 18:52
Moin EConvertError,

prima, aber könntest Du mal sagen, warum es vorher nicht ging.
Da war doch kein Unterschied.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#20

Re: Subnetzmaske/ Server finden

  Alt 27. Okt 2003, 18:18
Hi!

Ehrlich gesagt habe ich keine Ahnung.

Zitat:
Da war doch kein Unterschied.
Beim den roten Stellen sicher nicht, aber irgendwo wird dann doch etwas anders gewesen sein. Ich war auch ziemlich verwundert, als es dann funktionierte.
Angesichts der Mathematik- Schularbeit übermorgen werde ich die genaue Überprüfung der beiden Versionen verschieben, und mich einfach nur freuen dass es funktioniert.

Danke noch mal,
EConvertError
Andreas N.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:16 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