AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

array of WideChar leer?

Ein Thema von EConvertError · begonnen am 26. Okt 2006 · letzter Beitrag vom 27. Okt 2006
Antwort Antwort
EConvertError

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

array of WideChar leer?

  Alt 26. Okt 2006, 19:17
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]:
wszName: array [0..MAX_INTERFACE_NAME_LEN - 1] of WCHAR; Mein Code:
Delphi-Quellcode:
  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;
Alle anderen Daten sind in Ordnung. Einzig und allein wszName bereitet Sorgen. Wie komme ich an die Daten von wszName ran?

Vielen Dank für eure Hilfe,
Andreas
Andreas N.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: array of WideChar leer?

  Alt 26. Okt 2006, 19:23
Delphi-Quellcode:
function IsWideCharArrayEmpty(w: array of WideChar): Boolean;
begin
  Result := (length(w)=0) or (w[0] = #0); //relies on lazy bool evaluation!
end;
Da ich mit Widechars normalerweise nicht hantiere, weiß ich nicht, ob das so reicht.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
EConvertError

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

Re: array of WideChar leer?

  Alt 26. Okt 2006, 19:48
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
Andreas N.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: array of WideChar leer?

  Alt 26. Okt 2006, 19:53
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
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
EConvertError

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

Re: array of WideChar leer?

  Alt 26. Okt 2006, 19:59
Verstehe.

Na dann warte ich mal, ob noch jemand eine Idee hat.


Vielen Dank,
Andreas
Andreas N.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: array of WideChar leer?

  Alt 26. Okt 2006, 20:55
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?
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: array of WideChar leer?

  Alt 26. Okt 2006, 21:23
Nur am Rande:

Delphi-Quellcode:
 
if pIfTable^.table[I].wszName <> 'then
  ShowMessage('interface name: ' + pIfTable^.table[I].wszName);
Das ist völlig ausreichend.

Grüße vom marabu
  Mit Zitat antworten Zitat
EConvertError

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

Re: array of WideChar leer?

  Alt 27. Okt 2006, 14:22
Vielen Dank!

Das ist seltsam, aber damit muss ich wohl leben. Keiner meiner beiden Netzwerkadapter hat somit einen Namen.
Ich werde Description stattdessen verwenden.

Zitat von Flocke:
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?
Die restlichen Daten der Struktur werden ausgewertet und enthalten auch die korrekten Informationen.

Vielen Dank,
Andreas
Andreas N.
  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 16:24 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