Jump to content

[Delphi] Programme für MacOS X


Recommended Posts

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

Link to comment
Share on other sites

  • 7 months later...

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...