Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi WLan API Übersetztung ? (https://www.delphipraxis.net/79162-wlan-api-uebersetztung.html)

nitschchedu 9. Jan 2007 20:14

Re: WLan API Übersetztung ?
 
Ok Leute bin soweit Fertig jetzt lass ich nochmal Robert Marquardt drüber schauen dann gebe ich die Units hier frei Dokumentation und BSp Projekte zur anwendung kommen wenn ich mit meine Freunden unser Programmierer Wiki aufgebaut haben. ^^ Also warten wir mal ab was Robert Marquardt für so Fehler findet.

Robert Marquardt 10. Jan 2007 09:41

Re: WLan API Übersetztung ?
 
Sieht schlimm aus.
Erst mal waere eine anstaendige Formatierung der Sourcen angebracht.

nduCType.pas ist voll von ueberfluessigen Typdeklarationen. void laesst sich nicht in Delphi ausdruecken. pvoid = Pointer.
Es waere angebracht die Schreibweise von C zu uebernehmen, also PVOID nicht pvoid.

Die enums einfach zu uebernehmen kann boese schiefgehen. Ein {$MINENUMSIZE 4} muss in die Sourcen, da C immer 4-Byte Enums macht.

Bei einer Konversion ist es besser die Namen komplett zu uebernehmen. Der ndu-Prefix sollte also rausfliegen.
Auch die Delphi-Art des Typen mit T-Prefix sollte nur als zzusaetzlicher Typ aufteten.

Ganz uebel ist die Veraenderung des Wertes von NDU_DOT11_SSID_MAX_LENGTH.
So ist es richtig:
Delphi-Quellcode:
const
  DOT11_SSID_MAX_LENGTH = 32; //32 Bytes

type
  DOT11_SSID = packed record
    uSSIDLength: ULONG;
    ucSSID: array [0..DOT11_SSID_MAX_LENGTH-1] of UCHAR;
  end;
Ob es packed record ist kann ich nicht sagen. Die C-Header deuten eher an das nicht, da ein #pragma dazu fehlt.
Ich wuerde hier eher auf 8-Byte-Grenzen wetten.

Es empfiehlt sich die jedi-apilib zu benutzen (http://jedi-apilib.sf.net). Damit sollte mna zumindest nduCType.pas und nduWinNT.pas loswerden koennen.
Unangenehm ist das das Windows DDK noch kaum konvertiert ist. Da wartet noch viel Arbeit auf uns.

nitschchedu 10. Jan 2007 10:07

Re: WLan API Übersetztung ?
 
Hey beim einrücken habe ich mir mühe gegeben was für ne Delphi version benutzt du ? Ich benutzte jetzt 2006.

Zitat:

Zitat von Robert Marquardt
Sieht schlimm aus.
Erst mal waere eine anstaendige Formatierung der Sourcen angebracht.

Das hört sich so an wie bei meinen Kollecken mit dem Zend hab ich die Datei ist alles schön eingrückt. Hat er die Datei ist alles aus dem zusammen hang.


Zitat:

Zitat von Robert Marquardt
nduCType.pas ist voll von ueberfluessigen Typdeklarationen. void laesst sich nicht in Delphi ausdruecken. pvoid = Pointer.
Es waere angebracht die Schreibweise von C zu uebernehmen, also PVOID nicht pvoid.

Wie mache ich das dann wenn void kommt ?

Zitat:

Zitat von Robert Marquardt

Die enums einfach zu uebernehmen kann boese schiefgehen. Ein {$MINENUMSIZE 4} muss in die Sourcen, da C immer 4-Byte Enums macht.

Dazu kann ich nur eins sagen man hatt mir das schon mal gesagt aber wieder mal nicht richtig erklärt.

Zitat:

Zitat von Robert Marquardt
Bei einer Konversion ist es besser die Namen komplett zu uebernehmen. Der ndu-Prefix sollte also rausfliegen.
Auch die Delphi-Art des Typen mit T-Prefix sollte nur als zzusaetzlicher Typ aufteten.

Ich werds ndu für mich behalten und für euch rausmachen ok ^^.

Zitat:

Zitat von Robert Marquardt
Ganz uebel ist die Veraenderung des Wertes von NDU_DOT11_SSID_MAX_LENGTH.
So ist es richtig:
Delphi-Quellcode:
const
  DOT11_SSID_MAX_LENGTH = 32; //32 Bytes

type
  DOT11_SSID = packed record
    uSSIDLength: ULONG;
    ucSSID: array [0..DOT11_SSID_MAX_LENGTH-1] of UCHAR;
  end;
Ob es packed record ist kann ich nicht sagen. Die C-Header deuten eher an das nicht, da ein #pragma dazu fehlt.
Ich wuerde hier eher auf 8-Byte-Grenzen wetten.

Ich habe Packet record genohmen weil man das mir hier irgendwo gesagt hat natürlich wieder nicht richig erklärt. :?

Zitat:

Zitat von Robert Marquardt
Es empfiehlt sich die jedi-apilib zu benutzen (http://jedi-apilib.sf.net). Damit sollte mna zumindest nduCType.pas und nduWinNT.pas loswerden koennen.
Unangenehm ist das das Windows DDK noch kaum konvertiert ist. Da wartet noch viel Arbeit auf uns.

[/quote]

Ich werds ändern danke noch fürs drüber schauen wenn ich fertig bin würdest du es dir nochmal anschauen ?

Robert Marquardt 10. Jan 2007 10:54

Re: WLan API Übersetztung ?
 
Die Einrueckung wird durch Tabs versaut. Der erste Schritt einr Konversion sollte daher die Anwendung eines Detab-Tools sein.

Wenn void als Resultattyp einer Funktion kommt, so heisst das das es eine Prozedur ist. Kommt void als Parametertyp, so hat die Funktion keinen Parameter.
das bedeutet insgesamt das void nie als Typ konvertiert wird.

Das mit dem Packing ist schwierig. Frueher hat MS das immer klar in den Headern angegeben, aber die neueren APIs sind ueblicherweise ohne Angabe. Das bedeutet die Voreinstellung 8 des Visual Studio.

Ja, ich schau mir die Files dann nochmal an.

ste_ett 10. Jan 2007 11:01

Re: WLan API Übersetztung ?
 
edit

Sry, falscher Thread! :p

ste_ett 10. Jan 2007 11:02

Re: WLan API Übersetztung ?
 
hm, irgendwas passt hier gar nicht. :/

nitschchedu 10. Jan 2007 14:51

Re: WLan API Übersetztung ?
 
Habe mir die Jedi Units angeschaut was mich mal Interessiert sind die Schalter Befehle gibs da irgendwo ne Tut drüber ?
bsp:
Delphi-Quellcode:
{$WEAKPACKAGEUNIT}

Luckie 10. Jan 2007 15:28

Re: WLan API Übersetztung ?
 
Ja, in der Delphi Hilfe.

nitschchedu 14. Jan 2007 11:48

Re: WLan API Übersetztung ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey Leute nun haben wirs, also noch mal ein großes Danke Robert Marquardt der meine Units Überarbeitet hat.
Er hat zugar die Kommentare rein gemacht --> das wollt ich eigentlich machen :wink: Naja dann werde ich woll irgendwann
mal noch Deutsche Kommentare rein setzten, mal sehen.
Das Bsp Programm kommt noch, aber erst wenn das Pro-Wiki von mir und meinen Kumpels steht.

Ihr braucht für die Benutztung noch die Jedi Units http://jedi-apilib.sf.net.
Und die DLL WlanAPi.dll die es bei Microsoft gibt http://www.microsoft.com/downloads/d...DisplayLang=de
.
Im anhang die Units.

PS. Robert Marquardt wollst mir nich noch sagen wo meine Fehler Lagen und worauf ich achten muss ?

CodeX 14. Jan 2007 12:16

Re: WLan API Übersetztung ?
 
Super! Besten Dank! :D

Eine kurze Frage: Beim Download der WlanAPi.dll von MS kann man dies für unterschiedliche Sprachen machen. Sollte man hier die Sprache des Betriebssystems (deutsch wegen Kompatibilität) wählen oder die des zu entwickelnden Programms (englisch wegen Fehlermeldungen)?

Robert Marquardt 14. Jan 2007 12:24

Re: WLan API Übersetztung ?
 
Viele Fehler waren es nicht.
Den Funktionstyp hast du nicht versucht zu konvertieren. "pointer to function" in C ist auch nicht so leicht zu verstehen fuer einen Delphi-Programmierer.
Das mit dem {$MINENUMSIZE 4} hattest du auch etwas falsch verstanden. Das gilt von der ersten Anwendung bis zum Ende des Files.
Ich habe sicherheitshalber in Konstanten und passende Typdeklaration umgewandelt. Das ist dann auch mit alten Delphi-Versionen kompatibel.
An einer Stelle wurde BOOLEAN in Boolean konvertiert. Besser ist da ByteBool.
An einer Stelle wurde faelschlich ein variant record benutzt.
Die Kommentare habe ich nur teilweise eingesetzt.

Generell gilt bei Jedi (genaugenommen sind das meine Regeln):

Die Kommentare des Originals werden uebernommen. Nichts ist besser als das Original. Uebersetzungen koennen nur Fehler bringen.
Die Spaltenformatierung bei Konstanten sollte erhalten werden.
Bei Records gilt die Jedi-Formatierung nicht Spaltenformatierung.
Alle Namen sollten unveraendert uebernommen werden. Das gilt insbesondere auch fuer die Gross/Kleinschreibung. Ausnahme bei Kollision mit reservierten Worten.
Delphisierte Namen koennen zusaetzlich verwendet werden.
Unbedingt die Tabulatoren durch Leerzeichen ersetzen.

Es gibt noch viele weitere Regeln. Am besten Jedi-Apilib Files lesen.

nitschchedu 14. Jan 2007 13:41

Re: WLan API Übersetztung ?
 
Zitat:

Zitat von CodeX
Eine kurze Frage: Beim Download der WlanAPi.dll von MS kann man dies für unterschiedliche Sprachen machen. Sollte man hier die Sprache des Betriebssystems (deutsch wegen Kompatibilität) wählen oder die des zu entwickelnden Programms (englisch wegen Fehlermeldungen)?

Also ich habe sie mir in Deutsch rundergeladen das macht bei der DLL kein Unterschied.

Nochmal Danke Robert Marquardt ! ^^

MaxVol 10. Aug 2007 14:39

Re: WLan API Übersetztung ?
 
Hello

Sorry for English, but my German is very-very bad.
First of all I wish to thank all people, who took part in translation WLan headers to Delphi, it's great work, I could not find even partial translation anywhere else.

But when I has tried to use these headings, I have found, what not all works correctly. I have problems with getting of the status of wireless connections and when I looked headers, I have found, what not all identically with MSDN.
In MSDN WLAN_AVAILABLE_NETWORK structure is described so:

Delphi-Quellcode:
typedef struct _WLAN_AVAILABLE_NETWORK {
  WCHAR strProfileName[256];
  DOT11_SSID dot11Ssid;
  DOT11_BSS_TYPE dot11BssType;
  ULONG uNumberOfBssids;
  BOOL bNetworkConnectable;
  WLAN_REASON_CODE wlanNotConnectableReason;
  ULONG uNumberOfPhyTypes;
  DOT11_PHY_TYPE dot11PhyTypes[WLAN_MAX_PHY_TYPE_NUMBER];
  BOOL bMorePhyTypes;
  WLAN_SIGNAL_QUALITY wlanSignalQuality;
  BOOL bSecurityEnabled;
  DOT11_AUTH_ALGORITHM dot11DefaultAuthAlgorithm;
  DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm;
  DWORD dwFlags;
  DWORD dwReserved;
} WLAN_AVAILABLE_NETWORK,
But in headers it looks differently:

Delphi-Quellcode:
WLAN_AVAILABLE_NETWORK = record
  strProfileName: array [0..WLAN_MAX_NAME_LENGTH - 1] of WCHAR;
  dot11Ssid: DOT11_SSID;
  dot11BssType: DOT11_BSS_TYPE;
  uNumberOfBssids: ULONG;
  bNetworkConnectable: BOOL;
  wlanNotConnectableReason: WLAN_REASON_CODE;
  uDot11PhyType: ULONG;
  wlanSignalQuality: WLAN_SIGNAL_QUALITY;
  dot11RateSet: DOT11_RATE_SET;
  bSecurityEnabled: BOOL;
  dot11DefaultAuthAlgorithm: DOT11_AUTH_ALGORITHM;
  dot11DefaultCipherAlgorithm: DOT11_CIPHER_ALGORITHM;
  dwFlags: DWORD;
  dwReserved: DWORD;
end;
Differs even quantity of parametres, therefore I receive wrong values in many fields, for example in wlanSignalQuality and bSecurityEnabled.
I tried to correct headers itself, but have failed.
Maybe someone already have a corrected variant of headers or maybe I can download somewhere wlanapi.dll, which works correctly with current headers?

Thanks in advance,
Max.

nitschchedu 12. Aug 2007 13:11

Re: WLan API Übersetztung ?
 
You are right. I will amend it ^^.

MaxVol 13. Aug 2007 13:51

Re: WLan API Übersetztung ?
 
Zitat:

Zitat von nitschchedu
You are right. I will amend it ^^.

Many thanks!

nitschchedu 26. Aug 2007 18:58

Re: WLan API Übersetztung ?
 
Hallo leute,
es hatt sich ein Problem aufgetan ... wie schon angesprochen hat sich was in den Header geändert.
So also ich das nun beheben wollte, musste ich mit drinn feststellen das ich nicht die Aktuellen Header Dateien habe (ich weiß nicht was WLAN_MAX_PHY_TYPE_NUMBER für ne größe hat).
Ich würde doch bitten das mir mal jemandt die Aktuellen Header (C++) Dateien Postet, ich schau mal weiter ich noch was finde.

Florian H 26. Aug 2007 20:37

Re: WLan API Übersetztung ?
 
Zitat:

Zitat von nitschchedu
Das Bsp Programm kommt noch, aber erst wenn das Pro-Wiki von mir und meinen Kumpels steht.

wie siehts eigentlich damit aus?

CodeX 24. Okt 2007 18:53

Re: WLan API Übersetztung ?
 
Na, geht's voran? :)

nitschchedu 27. Okt 2007 18:06

Re: WLan API Übersetztung ?
 
Wie meinst du das :-D ?

Florian H 27. Okt 2007 19:12

Re: WLan API Übersetztung ?
 
Zitat:

Zitat von nitschchedu
[...]
Also erstmal viel Spass beim lesen und weiteres würd folgen ;-)


nitschchedu 27. Okt 2007 20:25

Re: WLan API Übersetztung ?
 
Ach du meinst wann ich das Tut weiter schreibe :wink: ... weiß ich noch nicht :gruebel: ... ich habe dafür gerade keine Zeit.

CodeX 28. Okt 2007 11:20

Re: WLan API Übersetztung ?
 
Ja, das Tutorial und vor allem die Anpassung der neuen Header. Oder ist das schon getan?
Auf Deiner WikiSeite kann man die Header übrigens momentan nicht herunterladen. Zumindest wird bei mir nur "[|Header(Units)]" angezeigt, statt eines Downloadlinks, den ich dort vermuten würde.
Nichtsdestotrotz, ich freue mich über Deine Arbeit an dieser Geschichte. Danke!

nitschchedu 30. Okt 2007 09:28

Re: WLan API Übersetztung ?
 
Wegen download schau ich noch nach .. so das er dann geht ;-) . Die Header hatte ich dieses Jahr schon angepasst (im Sommer).
Oder gibt es schon wieder ne Neue Version ? Wer ehr dazu kommt das ganze weiter zu Dokumentieren als ich möge dieses bitte in das Wiki schreiben (Einfach Account anlegen und los :-) ) PS. Ich kontrolliere das auch ... also kein mist machen in Wiki .. alles klar ;-)


Edit: WTF die Header sind weg :-( .... ich lade sie neu hoch.
Edit: Ach ja nicht wundern wenn ihr die Variabeln nicht findet in der Header Version haben alle Constanten und Variabeln das Prefix "ndu" oder "Tndu" oder "NDU" die andere konnte ich auf die schnelle nicht finden.

nitschchedu 11. Nov 2007 14:54

Re: WLan API Übersetztung ?
 
Liste der Anhänge anzeigen (Anzahl: 2)
So hier mal nach langer Zeit ein kleines Beispiel. :???:
Siehe Anhang.

jogging_cat 20. Nov 2007 08:00

Re: WLan API Übersetztung ?
 
Zitat:

Zitat von nitschchedu
So hier mal nach langer Zeit ein kleines Beispiel. :???:
Siehe Anhang.

Hi nitschchedu,

ich bin neu hier aber auch ein wenig am Thema WLAN dran mit Delphi. Ich habe deine Übersetzung der WLAN-API und versuche da selber was auf die Beine zu stellen. Nur aus Hobby.
Ich programmiere eigentlich VB 6.0, aber soviel API mit VB ist zu stressig.
Da nehme ich lieber Delphi.

Funktioniert dein Beispiel? Ich kann mir zwar die Adapter anzeigen lassen, aber beim Button WLANSCAN erhalte ich nur eine Sanduhr. Was bedeutet Button1? Da erhalte ich auch nur eine Sanduhr?
Danach muss ich das Programm rauswerfen.
Evtl. ist das Wlan auf meinem Notebook nicht korrekt installiert. Mit IBM Access Connections klappt bei Wlan-Verbindungen (im BS) offenbar alles, aber nur mit der Windows-Einrichtung habe ich da einige Probleme. Insbesondere wird in Delphi die Callback-Procedure nicht aufgerufen.

Ich will demnächst zu einem anderen Notebook wechseln.

Sag mal deine Erfahrungen, evtl. können wir uns etwas mehr austauschen.

Tschüß jogging_cat

Mackhack 20. Nov 2007 08:03

Re: WLan API Übersetztung ?
 
Hi,

ist diese dll nicht bei Windows XP MCE 2005 mit dabei? Wollte es grad mal versuchen bei mir!

jogging_cat 20. Nov 2007 08:10

Re: WLan API Übersetztung ?
 
Für die WlanApi mit XP SP brauchst du 2 Pakete von Microsoft:

- MSXML6

- und das Paket WlanAPI
http://www.microsoft.com/downloads/d...1-158efd1ada50

Mackhack 20. Nov 2007 08:20

Re: WLan API Übersetztung ?
 
Hi,

fuer das XML 6 bekomme ich:

Zitat:

Installation of MSXML 6.0 Parser failed because a higher version already exists on this machine. To proceed,...
Das andere Paket wurde erfolgreich installiert! Und nu?

jogging_cat 20. Nov 2007 08:22

Re: WLan API Übersetztung ?
 
Nun solte es gehen.

nitschchedu 21. Nov 2007 10:26

Re: WLan API Übersetztung ?
 
Jo die Sanduhr ... das bedeutet du bist mit dem Wlan schon verbunden ! Das ist ein Bug meinerseits den ich auch schon mitbekommen habe :-D . Ich muss noch einbauen das wenn man schon verbunden ist nicht Scannen kann !
.... Und Button1 ist noch aus meinen Test der davor statt fand ... ich muss den noch Löschen (Ignoriere den einfach mal).

PS: Unter Open Source kannst auch den Quell Code sehen ;-)

Mackhack 21. Nov 2007 15:39

Re: WLan API Übersetztung ?
 
Zitat:

Zitat von nitschchedu
Jo die Sanduhr ... das bedeutet du bist mit dem Wlan schon verbunden ! Das ist ein Bug meinerseits den ich auch schon mitbekommen habe :-D . Ich muss noch einbauen das wenn man schon verbunden ist nicht Scannen kann !
.... Und Button1 ist noch aus meinen Test der davor statt fand ... ich muss den noch Löschen (Ignoriere den einfach mal).

PS: Unter Open Source kannst auch den Quell Code sehen ;-)

Bei mir Hagelt es halt leider weiterhin diese Fehler!

nitschchedu 21. Nov 2007 16:02

Re: WLan API Übersetztung ?
 
:wiejetzt:

.........

Kannst mir die mal alle Posten und was genau du gemacht hast ?! :-D (ich versuche sie zubeheben)

Mackhack 22. Nov 2007 19:58

Re: WLan API Übersetztung ?
 
Na die oben erwähnten!

nitschchedu 22. Nov 2007 21:10

Re: WLan API Übersetztung ?
 
Also:
1. Sicher stellen das die WLanAPI.DLL da ist liegt im "C:\WINDOWS\system32" dann noch schauen ob XML 6 installiert ist (aber ich glaube da ich das noch nicht benutze von der API aus geht es auch ohne).
2. Microsoft Client Verwenden (das bedeutet das Windows die Kontrolle über das WLan hat)
3. Nicht Verbunden sein, da sonst nicht im Bsp Gescannt werden kann.
4. Programm Starten und Wlan Geräte anzeigen
5. Gerät auswählen (Makieren in der Liste) und dann Scannen

So wenn du immer noch ein Fehler hast sag mir an welchen Punkt das ist :o

Wer noch am Projekt mitmachen will, soll es ruhig sagen :hello: (je mehr Leute um so besser wird das Projekt)

jogging_cat 3. Dez 2007 12:23

Re: WLan API Übersetztung ?
 
Zitat:

Zitat von nitschchedu
PS: Unter Open Source kannst auch den Quell Code sehen ;-)

Ich bin bisher in Foren nicht aktiv gewesen.

Wo ist denn Open Source?

Grüße jogging_cat


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr.
Seite 2 von 2     12   

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