![]() |
array of WideChar leer?
Hallo!
Ich hole mir mit der Funktion GetIfTable die Daten meiner Netzwerkadapter. Dazu nutze ich die IpHlpApi mit den JEDI-Header-Files. Leider komme ich aber nicht an pIfTable^.table[I].wszName ran. Egal was ich mache, ich erhalte immer einen leeren String. Der Typ von pIfTable^.table[I]:
Delphi-Quellcode:
Mein Code:
wszName: array [0..MAX_INTERFACE_NAME_LEN - 1] of WCHAR;
Delphi-Quellcode:
Alle anderen Daten sind in Ordnung. Einzig und allein wszName bereitet Sorgen. Wie komme ich an die Daten von wszName ran?
try
pIfTable := AllocMem(Size); if GetIfTable(pIfTable, Size, True) = ERROR_SUCCESS then for I := 0 to pIfTable^.dwNumEntries - 1 do begin pIfTable^.table[I].wszName // <-- Das will ich auswerten. end; finally FreeMem(pIfTable); end; Vielen Dank für eure Hilfe, Andreas |
Re: array of WideChar leer?
Delphi-Quellcode:
Da ich mit Widechars normalerweise nicht hantiere, weiß ich nicht, ob das so reicht.
function IsWideCharArrayEmpty(w: array of WideChar): Boolean;
begin Result := (length(w)=0) or (w[0] = #0); //relies on lazy bool evaluation! end; |
Re: array of WideChar leer?
Vielen Dank!
Das ist interessant. Wenn ich deine Funktion auf mein array anwende, erhalte ich "true". Ich verstehe nicht, wie das array leer sein kann? Ist es normal, dass Netzwerkschnittstellen keinen Namen haben? Ich werde wohl Description stattdessen verwenden, denn da bekomme ich einen vernünftigen Wert... Danke, Andreas |
Re: array of WideChar leer?
Ich gehe davon aus, dass auch bei Widechars ein Null-Char (#0? #0#0?) als Terminator benutzt wird. Wenn aber Delphi jetzt nur hergeht, und den Widechar, der sich aus den zwei Bytes "#0#xx" zusammensetzt, nur auf das erste byte überprüft - dann ist natürlich Schicht im Schacht. Warte also besser, bis himitsu oder ein ähnlich kompetenter user sich der Sache annimmt ;)
|
Re: array of WideChar leer?
Verstehe.
Na dann warte ich mal, ob noch jemand eine Idee hat. :wink: Vielen Dank, Andreas |
Re: array of WideChar leer?
Auch bei Unicode (WideChar) wird das Stringende mit #0 markiert, es steht also kein Name drin. Vielleicht ist das ja auch korrekt so. Schon mal die restlichen Daten der Struktur ausgewertet?
|
Re: array of WideChar leer?
Nur am Rande:
Delphi-Quellcode:
Das ist völlig ausreichend.if pIfTable^.table[I].wszName <> '' then ShowMessage('interface name: ' + pIfTable^.table[I].wszName); Grüße vom marabu |
Re: array of WideChar leer?
Vielen Dank!
Das ist seltsam, aber damit muss ich wohl leben. Keiner meiner beiden Netzwerkadapter hat somit einen Namen. :gruebel: Ich werde Description stattdessen verwenden. Zitat:
Vielen Dank, Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz