whes Posted January 2, 2014 at 06:34 PM Share Posted January 2, 2014 at 06:34 PM Hallo, ich verwende Delphi XE3. In dieser Programmierumgebung greift z.B. das Programm ExampleStackStatus auf die Unit IPConnection zu. Dort ist socket eine wesentliche Eigenschaft von Instanzen des Typs TIPConnection. Socket ist vom Typ TSocket. Dieser Typ ist in der mit Delphi XE3 mitgelieferten Unit Winapi.WinSock deklariert - für Windows! Versuche ich jedoch, dasselbe Programm für OSX zu compilieren, wird TSocket als undeklariert gemeldet. Deshalb meine Frage: Wird die Compilierung für MacOS X nicht unterstützt, oder gibt's doch eine Möglichkeit? Besten Dank für eure Hilfe whes Quote Link to comment Share on other sites More sharing options...
borg Posted January 3, 2014 at 10:22 AM Share Posted January 3, 2014 at 10:22 AM Mh, ich befürchte das wir die Delphi Bindings nur unter Windows und Linux (fpc) getestet haben. Das müssen wir uns genauer angucken, da muss für MacOS X vermutlich eine andere Socket-Implementierung her. Quote Link to comment Share on other sites More sharing options...
whes Posted August 25, 2014 at 05:15 PM Author Share Posted August 25, 2014 at 05:15 PM Ist denn die Socket-Implementierung für MACOS X schon in Sicht? Beste Grüße whes Quote Link to comment Share on other sites More sharing options...
photron Posted August 26, 2014 at 02:52 PM Share Posted August 26, 2014 at 02:52 PM Okay, hier eine erste Version zum testen.tinkerforge_delphi_bindings_2_1_2_40737439d7c1882d1395ec4a006bdceccd660fe4.zip Quote Link to comment Share on other sites More sharing options...
whes Posted August 28, 2014 at 07:58 AM Author Share Posted August 28, 2014 at 07:58 AM Danke, Photron! Hab's gleich mit ExampleStackStatus getestet. Leider ist die Compilierung daran gescheitert, dass in IPConnection.pas in der Zeile 700 der undeklarierte Bezeichner gethostbyname verwendet wird. Die Funktion gethostbyname ist in der Unit WinApi.WinSock deklariert, und diese wird in der Unit IPConnection für MSWINDOWS herangezogen, nicht aber für DELPHI_MACOS. (Die compilierte Unit (WinApi.WinSock.dcu) wäre in Delphi XE3 auch nur für die Zielplattformen Win32 und Win64, aber nicht für OSX32 verfügbar.) Beste Grüße whes Quote Link to comment Share on other sites More sharing options...
photron Posted August 28, 2014 at 08:41 AM Share Posted August 28, 2014 at 08:41 AM Hier unter Delphi XE6 kommt gethostbyname aus Posix.NetDB für OSX32. Mal sehen was ich da alternativ für XE3 nehmen kann, wenn gethostbyname da wirklich fehlt. Woher weißt du welche Funktionen in welchen Units sind? Aus der Dokumentation, oder gibts da eine Möglichkeit, dass die IDE mir für jede Unit, die eingebunden wird, das anzeigen kann? Für die Posix Module kann ich nur raten/annehmen welche Funktionen diese anbieten. Quote Link to comment Share on other sites More sharing options...
photron Posted August 28, 2014 at 09:50 AM Share Posted August 28, 2014 at 09:50 AM Hier die nächste Version zum testen. Diese verwendet jetzt getaddrinfo statt gethostbyname.tinkerforge_delphi_bindings_2_1_2_3e2a3debec6336db653a4f367e9a0b7bea21e433.zip Quote Link to comment Share on other sites More sharing options...
Nic Posted August 30, 2014 at 10:02 AM Share Posted August 30, 2014 at 10:02 AM Ich bekomme mit der letzten Testversion unter Win7,x64 und dem betagten Delphi 7pro nur eine Fehlermeldung, siehe Screenshot. Quote Link to comment Share on other sites More sharing options...
whes Posted August 31, 2014 at 06:49 PM Author Share Posted August 31, 2014 at 06:49 PM Hallo, Photron! So, das Compilieren klappt auch bei mir! Nun bin ich auf den Funktionstest gespannt; werde berichten. Besten Dank für deine Hilfe whes P.S. Ich bin so vorgegangen: In der IDE die Zielplattform Win32 oder Win64 wählen > im Quelltext von IPConnection.pas den Cursor über den Funktionsnamen (gethostbyname) setzen > rechte Maustaste drücken > 'Deklaration suchen'. Dann landest du im Quelltext der Unit WinApi.WinSock und siehst, dass die Funktion als external deklariert ist und auf die gleichnamige Funktion in ...\Windows\System32\wsock32.dll verweist. Quote Link to comment Share on other sites More sharing options...
photron Posted September 1, 2014 at 08:21 AM Share Posted September 1, 2014 at 08:21 AM Nic, danke für den Test. In der angehängten Version wird jetzt wieder der vorherige Code für Windows verwendet und der neue Code nur noch für nicht-Windows. whes, das 'Deklaration suchen' klappt hier bein manchen Funktionen, bei machen passiert nichts und manchmal kommt eine Fehlermeldung über fehlende Dateien. Etwas komisch, aber auch nicht so wichtig. Liegt wahrscheinlich an meiner Installation hier.tinkerforge_delphi_bindings_2_1_2_7d2e81f35aa7502fa2e6ed6fd47651cc373674ac.zip Quote Link to comment Share on other sites More sharing options...
whes Posted September 2, 2014 at 06:23 PM Author Share Posted September 2, 2014 at 06:23 PM Der Funktionstest mit ExampleStackStatus (unter OS X 10.9.3 mit BrickDaemon 2.1.1) hat leider im ersten Anlauf nicht funktioniert; der Aufruf produziert die Fehlermeldung ETimeoutException: Did not receive response in time for function ID 2. Beste Grüße whes Quote Link to comment Share on other sites More sharing options...
photron Posted September 3, 2014 at 07:53 AM Share Posted September 3, 2014 at 07:53 AM Hast du in Zeile 21 des ExampleStackStatus Beispiels die UID deines Master Bricks eingetragen: UID = 'ap8MjSchCcU'; { Change to your UID } Quote Link to comment Share on other sites More sharing options...
whes Posted September 3, 2014 at 06:48 PM Author Share Posted September 3, 2014 at 06:48 PM Ja. Für 32- oder 64-bit-Windows compiliert, lässt sich das Programm ja auch einwandfrei ausführen, nur eben nicht für MacOS X. Quote Link to comment Share on other sites More sharing options...
photron Posted September 4, 2014 at 07:58 AM Share Posted September 4, 2014 at 07:58 AM Hast den den Host auch entsprechend angegeben? Standardmäßig wird in den Beispielen immer localhost (127.0.0.1) verwendet. Die Beispiele verbinden sich also immer zu brickd auf dem lokalen Rechner und haben damit Zugriff auf die lokal per USB angeschlossenen Bricks. Wenn du das Beispiel also mit localhost auf Windows ausführst und der Master Brick auch an diesem Rechner angeschlossen ist dann klappt die Kommunikation. Wenn du das Beispiel aber mit localhost auf Mac OS X ausführst, dann muss der Master Brick auch am Mac angeschlossen sein und dort brickd laufen. Oder du muss im Beispiel die Host Einstellung auf die IP Adresse des Windows PCs ändern, um die dort angeschlossenen Bricks zu erreichen. Quote Link to comment Share on other sites More sharing options...
whes Posted September 7, 2014 at 06:03 PM Author Share Posted September 7, 2014 at 06:03 PM Ich habe alles noch mal der Reihe nach und in Ruhe ausgeführt: den Brick über USB an das MacBook angeschlossen; dort den Brick mit dem BrickViewer 2.1.2 mit HOST = 'localhost' und PORT = 4223 erfolgreich(!) connected; dann ExampleStackStatus mit denselben Einstellungen ausgeführt: dieselbe Fehlermeldung wie zuvor! Quote Link to comment Share on other sites More sharing options...
photron Posted September 8, 2014 at 11:45 AM Share Posted September 8, 2014 at 11:45 AM Ah, sorry, mein Fehler. Da waren noch zwei Bugs drin. Ich denke du hast schon alles richtig gemacht Hier noch eine Version zum testen, mit der sollte es jetzt endlich klappen.tinkerforge_delphi_bindings_2_1_2_eef9bdd8d1fcf525095bf3dfa2de32d8c14db322.zip Quote Link to comment Share on other sites More sharing options...
Nic Posted September 10, 2014 at 09:11 AM Share Posted September 10, 2014 at 09:11 AM Letzte Testversion läuft mit Delphi 7pro, Win7x64 einwandfrei. Quote Link to comment Share on other sites More sharing options...
whes Posted September 25, 2014 at 07:32 AM Author Share Posted September 25, 2014 at 07:32 AM Mit der letzten Testversion klappt's endlich auch unter MacOS X! Besten Dank an alle, die zur Lösung des Problems und zur Diskussion beigetragen haben. whes Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.