whes Geschrieben January 2, 2014 at 18:34 Geschrieben January 2, 2014 at 18:34 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 Zitieren
borg Geschrieben January 3, 2014 at 10:22 Geschrieben January 3, 2014 at 10:22 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. Zitieren
whes Geschrieben August 25, 2014 at 17:15 Autor Geschrieben August 25, 2014 at 17:15 Ist denn die Socket-Implementierung für MACOS X schon in Sicht? Beste Grüße whes Zitieren
photron Geschrieben August 26, 2014 at 14:52 Geschrieben August 26, 2014 at 14:52 Okay, hier eine erste Version zum testen.tinkerforge_delphi_bindings_2_1_2_40737439d7c1882d1395ec4a006bdceccd660fe4.zip Zitieren
whes Geschrieben August 28, 2014 at 07:58 Autor Geschrieben August 28, 2014 at 07:58 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 Zitieren
photron Geschrieben August 28, 2014 at 08:41 Geschrieben August 28, 2014 at 08:41 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. Zitieren
photron Geschrieben August 28, 2014 at 09:50 Geschrieben August 28, 2014 at 09:50 Hier die nächste Version zum testen. Diese verwendet jetzt getaddrinfo statt gethostbyname.tinkerforge_delphi_bindings_2_1_2_3e2a3debec6336db653a4f367e9a0b7bea21e433.zip Zitieren
Nic Geschrieben August 30, 2014 at 10:02 Geschrieben August 30, 2014 at 10:02 Ich bekomme mit der letzten Testversion unter Win7,x64 und dem betagten Delphi 7pro nur eine Fehlermeldung, siehe Screenshot. Zitieren
whes Geschrieben August 31, 2014 at 18:49 Autor Geschrieben August 31, 2014 at 18:49 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. Zitieren
photron Geschrieben September 1, 2014 at 08:21 Geschrieben September 1, 2014 at 08:21 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 Zitieren
whes Geschrieben September 2, 2014 at 18:23 Autor Geschrieben September 2, 2014 at 18:23 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 Zitieren
photron Geschrieben September 3, 2014 at 07:53 Geschrieben September 3, 2014 at 07:53 Hast du in Zeile 21 des ExampleStackStatus Beispiels die UID deines Master Bricks eingetragen: UID = 'ap8MjSchCcU'; { Change to your UID } Zitieren
whes Geschrieben September 3, 2014 at 18:48 Autor Geschrieben September 3, 2014 at 18:48 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. Zitieren
photron Geschrieben September 4, 2014 at 07:58 Geschrieben September 4, 2014 at 07:58 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. Zitieren
whes Geschrieben September 7, 2014 at 18:03 Autor Geschrieben September 7, 2014 at 18:03 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! Zitieren
photron Geschrieben September 8, 2014 at 11:45 Geschrieben September 8, 2014 at 11:45 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 Zitieren
Nic Geschrieben September 10, 2014 at 09:11 Geschrieben September 10, 2014 at 09:11 Letzte Testversion läuft mit Delphi 7pro, Win7x64 einwandfrei. Zitieren
whes Geschrieben September 25, 2014 at 07:32 Autor Geschrieben September 25, 2014 at 07:32 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 Zitieren
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.