Einzelnen Beitrag anzeigen

S4SH1981

Registriert seit: 13. Jul 2007
59 Beiträge
 
#1

DLL mehrere Strings auslesen

  Alt 15. Mär 2009, 16:54
Hallo zusammen,

habe mal wieder ein Problem mit meiner DLL Datei.
Meine DLL soll mir die Netzwerkadapter auslesen.
Das tut sie soweit auch.
Nur das Problem ist, dass ich 4 Netzwerkadapter in meinem Rechner habe:
W-LAN
LAN
Bluetooth
FireWire

Meine DLL sieht so aus:
Delphi-Quellcode:
library GetNetworkAdapters;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }

  

uses
  sharemem,
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  ExtCtrls,
  StdCtrls,
  Winsock,
  IpRtrMib,
  IpHlpApi,
  IpTypes,
  IpIfConst;

{$R *.res}

function GetNetworkAdapter: string;
var
  MibRow: TMibIfRow;
  IntfTable: PMibIfTable;
  Size: DWORD;
  I: Integer;
begin
  Size := 0;
  If GetIfTable(nil, Size, True) <> ERROR_INSUFFICIENT_BUFFER then Exit;
  IntfTable := AllocMem(Size);
  Try
    If GetIfTable(IntfTable, Size, True) = NO_ERROR then
      For I := 0 to IntfTable^.dwNumEntries -1 do
        begin
          {$R-}
          MibRow := IntfTable.Table[I];
          result := (PChar(@MibRow.bDescr[0]) + ' @ ' + InttoStr(MibRow.dwSpeed div 1000000)+ ' MBit/s'
            );
          {$R+}
        end;
  Finally
    FreeMem(IntfTable);
  end;
end;

exports
   GetNetworkAdapter;

begin
end.
Wie bekomme ich nun in meinem Programm alle Adapter in einer z.B. Combobox angezeigt?
Bisher nutze ich ComboBox1.Items.Add(getnetworkadapter); und es wird mir nur ein beliebiger Adapter gezeigt.
  Mit Zitat antworten Zitat