AGB  ·  Datenschutz  ·  Impressum  







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

array [0..0] ?

Ein Thema von nitschchedu · begonnen am 31. Aug 2007 · letzter Beitrag vom 2. Sep 2007
Antwort Antwort
Seite 1 von 3  1 23      
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#1

array [0..0] ?

  Alt 31. Aug 2007, 14:28
Also aus meiner WlanAPI habe ich aus der Übersetztung ein Array das so ist:

Network: array[0..0] of Tndu_WLAN_AVAILABLE_NETWORK; Jetzt ist aber immer nur ein Feld drin

Ich habe mal Test weiße das so gemacht

Network: array[0..2] of Tndu_WLAN_AVAILABLE_NETWORK; Und da waren nun 3 Feld ausgfühlt.

Wie bekomme ich das hin das das mit dem array[0..0] richtig klapt ?
Programmieren ..... .
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: array [0..0] ?

  Alt 31. Aug 2007, 14:30
Was willst du den erreichen 0..0 heißt nunmal nur 1 Element
Markus Kinzler
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: array [0..0] ?

  Alt 31. Aug 2007, 14:31
Hi,

was ist genau dein Problem? wenn du myArray = array[0..0] deklarierst, hast du nur ein feld, und zwar myArray[0] deklarierst du hingegen myArray = array[0..2] hast du drei felder myArray[0] myArray[1] myArray[2] Gruß

[edit=schöner machen /]
Ansgar
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#4

Re: array [0..0] ?

  Alt 31. Aug 2007, 14:34
Also in C++ sa es so aus:

Code:
typedef struct _WLAN_INTERFACE_INFO_LIST {
    DWORD dwNumberOfItems;
    DWORD dwIndex;

#ifdef __midl
    [unique, size_is(dwNumberOfItems)] WLAN_INTERFACE_INFO InterfaceInfo[*];
#else
    WLAN_INTERFACE_INFO InterfaceInfo[1];
#endif
Man gab mir den hniweiß ich solle es so übersetzten:

Network: array[0..0] of Tndu_WLAN_AVAILABLE_NETWORK; Ich war in der Annahme das da mehr als nur ein Feld kommt !?
Programmieren ..... .
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: array [0..0] ?

  Alt 31. Aug 2007, 14:39
jetzt glaube ich ein bisschen zu wissen, worauf du hinaus willst... kenne mich in c halt gar nicht aus

mit mehr Felder meinst du dwNumberOfItems und dwIndex?

dann brauchst du aber eigentlich kein array, irgendwas ist da falsch glaub ich...

versuch doch mal
Delphi-Quellcode:
var
  Network: Tndu_WLAN_AVAILABLE_NETWORK;
begin
  tu was mit Network.dwNumberOfItems;
  tu was mit Network.dwIndex;
end;
Ansgar
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: array [0..0] ?

  Alt 31. Aug 2007, 14:43
Es handelt sich um eine dynamische Struktur
Delphi-Quellcode:
type
    WLAN_INTERFACE_INFO_LIST = Record
        dwNumberOfItems: Cardinal;
        dwIndex: Array of Cardinal
    end;
...
Network: WLAN_INTERFACE_INFO_LIST;
 
setLength( network.dwindex, network.dwNumberOfItems);
Markus Kinzler
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#7

Re: array [0..0] ?

  Alt 31. Aug 2007, 14:49
Und wie würde das hier aussehen ?


Delphi-Quellcode:

// Deklaration
Pndu_WLAN_PROFILE_INFO_LIST = ^Tndu_WLAN_PROFILE_INFO_LIST;
  PPndu_WLAN_PROFILE_INFO_LIST = ^Pndu_WLAN_PROFILE_INFO_LIST;
  Tndu_WLAN_PROFILE_INFO_LIST = record
     dwNumberOfItems: DWORD;
    dwIndex: DWORD;
    ProfileInfo: array[0..0] of Tndu_WLAN_PROFILE_INFO;
  end;

function WlanGetAvailableNetworkList(hClientHandle: Handle;
     const pInterfaceGuid: PGUID; dwFlags: DWORD; pReserved: PVOID;
    var pAvailableNetworkList: Pndu_WLAN_AVAILABLE_NETWORK_LIST): DWORD; stdcall;


...

// Aufruf
var
  netzworklist: Pndu_WLAN_AVAILABLE_NETWORK_LIST;
....
begin
   back := WlanGetAvailableNetworkList(hClient,
     @pInterface.InterfaceInfo[0].InterfaceGuid,
    NDU_WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES,
    nil, netzworklist);
end;
Programmieren ..... .
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: array [0..0] ?

  Alt 31. Aug 2007, 14:51
Diese Deklaration kann so richtig sein. Es ist der prinzipielle Hinweis, dass es sich um ein statisches Array handelt, von dem man allerdings die Länge nicht kennt. Meistens steht die Länge an einer anderen Stelle (wie man an deinem C-Code auch sieht).

du kannst jetzt auf verschiedene Art an den Feldinhalt kommen:
1. Du definierst dir ein statisches Array, was groß genug ist, und benutzt eben nur die ersten NumberOfItems Elemente.
2. Du nimmst einen Pointer von WLAN_INTERFACE_INFO und gehst damit durch die Liste.


2. ist meistens schöner und könnte so aussehen:
Delphi-Quellcode:
type PINTERFACE_INFO=^INTERFACE_INFO
     INTERFACE_INF0=packed record
      //...was auch immer
end;
type WLAN_INTERFACE_INFO_LIST=packed record
      dwNumberOfItems:DWORD;
      dwIndex:DWORD;
      WLAN_INTERFACE_INFO:array[0..0] of INTERFACE_INFO;
end;

//...

var i:integer;
    PInfo:PInterface_Info;
begin
  PInfo:=@InfoList.WLAN_Interface_Info;
  for i:=1 to InfoList.numberofitems do
  begin
    PInfo^.xyz
    //zugriff auf das Feld
     
    inc(PInfo); //aufs nächste Feld schieben
  end;
end;
Je nach Gegebenheit gibt es auch noch andere Lösungen...
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#9

Re: array [0..0] ?

  Alt 31. Aug 2007, 15:03
Diese Zuweißung geht nicht wirklich
PInfo:=@InfoList.WLAN_Interface_Info; Mein Code:
Delphi-Quellcode:
 Pndu_WLAN_AVAILABLE_NETWORK_LIST = ^Tndu_WLAN_AVAILABLE_NETWORK_LIST;
  PPndu_WLAN_AVAILABLE_NETWORK_LIST = ^Pndu_WLAN_AVAILABLE_NETWORK_LIST;
  Tndu_WLAN_AVAILABLE_NETWORK_LIST = record
     dwNumberOfItems: DWORD;
    dwIndex: DWORD;
    Network: array[0..0] of Tndu_WLAN_AVAILABLE_NETWORK;
  end;



var
 netzworklist: Pndu_WLAN_AVAILABLE_NETWORK_LIST;
 Netzwork: Tndu_WLAN_AVAILABLE_NETWORK;
begin
....
  netzworklist := WlanAllocateMemory(SizeOf(Tndu_WLAN_AVAILABLE_NETWORK_LIST));

  back := WlanGetAvailableNetworkList(hClient,
     @pInterface.InterfaceInfo[0].InterfaceGuid,
    //NDU_WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES,
    0,
    nil, netzworklist);


  Netzwork := @netzworklist^.Network; <---

  for i := 0 to netzworklist^.dwNumberOfItems - 1 do
  begin
     Memo1.Lines.Add(Netzwork.strProfileName);
    inc(Netzwork);
  end;
Fehler beim "<---" = Inkompatiple Typen
Programmieren ..... .
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: array [0..0] ?

  Alt 31. Aug 2007, 15:08
da fehlt anscheinend noch ein [0] dahinter und evtl noch ein pointer(...) drumrum
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 05:23 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