Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Geschrieben

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

Geschrieben

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.

  • 7 months later...
Geschrieben
  • Autor

Ist denn die Socket-Implementierung für MACOS X schon in Sicht?

 

Beste Grüße

 

whes

Geschrieben
  • Autor

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

Geschrieben

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.

Geschrieben

Ich bekomme mit der letzten Testversion unter Win7,x64 und dem betagten Delphi 7pro nur eine Fehlermeldung, siehe Screenshot.

delphi_bind_macos_prototyp.thumb.png.3617143906fadd912c665ab0a56dd6f7.png

Geschrieben
  • Autor

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.

 

Geschrieben

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

Geschrieben
  • Autor

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

 

Geschrieben
  • Autor

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.

Geschrieben

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.

Geschrieben
  • Autor

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!

Geschrieben

Letzte Testversion läuft mit Delphi 7pro, Win7x64 einwandfrei.

  • 2 weeks later...
Geschrieben
  • Autor

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

Join the conversation

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

Gast
Reply to this topic...

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.