Ich muss doch nochmal konkreter nachfragen.
So sieht mein Code-Ausschnitt zum Auslesen der Adressen aus (Aufs Nötigste zurechtgekürzt, aber zum Nachvollziehen, sollte das ausreichend sein):
Delphi-Quellcode:
var
adapter, a : PIP_ADAPTER_ADDRESSES;
BUFFER, ERROR : DWORD;
UnicastAddress : PIP_ADAPTER_UNICAST_ADDRESS;
begin
ERROR := GetAdaptersAddresses(0, 0, nil, nil, @buffer);
if error <> ERROR_BUFFER_OVERFLOW then
ShowMessage('Memory');
adapter := AllocMem(buffer);
ERROR := GetAdaptersAddresses(0, 0, nil, adapter, @buffer);
if ERROR = ERROR_SUCCESS then
begin
a := adapter;
while a <> nil do
begin
Memo1.Lines.Add(a.FriendlyName);
UnicastAddress := a.FirstUnicastAddress;
while UnicastAddress <> nil do
begin
Memo1.Lines.Add('[' + UnicastAddress.Address.lpSockaddr.sa_data + ']');
UnicastAddress := UnicastAddress.Next;
end;
end;
end;
Die Ausgabe von sa_data bringt nichts lesbares zum Vorschein. Wenn ich es debugge, steht sowas wie (#0, #0, #0, #0, #0, #0, ' ', #1, #13, '¸', '…', '£', #8, 'Ó') drin.
Woran liegt das?