DelphiModbus in C++Builder verwenden?
-
Hallo. Ich nutze schon länger delphimodbus im Rad Studio 2009: http://sourceforge.net/projects/delphimodbus/
Allerdings bisher immer als Client. Ich wollte mir mal ein kleines Tool schreiben, um die Kommunikation zu testen und merke jetzt das C++Builder hier ein Problem mit der Komponente "TIdModBusServer" hat. Ich erhalte beim compilieren der Anwendung die Fehlermeldung:[BCC32 Fehler] IdModBusServer.hpp(120): E2370 Einfacher Typname erwartet
[BCC32 Fehler] IdModBusServer.hpp(121): E2370 Einfacher Typname erwartetIdModBusServer.hpp
Zeile 120: __property TModBusCoilWriteEvent OnWriteCoils = {read=FOnWriteCoils, write=FOnWriteCoils}; Zeile 121: __property TModBusRegisterWriteEvent OnWriteRegisters = {read=FOnWriteRegisters, write=FOnWriteRegisters};
IdModBusServer.pas
property OnWriteCoils: TModBusCoilWriteEvent read FOnWriteCoils write FOnWriteCoils; property OnWriteRegisters: TModBusRegisterWriteEvent read FOnWriteRegisters write FOnWriteRegisters;
Ist über das Problem rein zufällig schon mal jemand gestolpert und kann mir da weiterhelfen?
-
Der C++-Compiler hat ein Problem bei Eventfunktionen mit komplexen Argumenttypen in der
published
-Sektion, wie die Dokumentation erklärt:
http://docwiki.embarcadero.com/RADStudio/Seattle/de/E2370_Einfacher_Typenname_erwartet_%28C%2B%2B%29
Ich weiß nicht, welcher der Argumenttypen dem Compiler zuwider ist; vermutlich liegt es an den fixed-size arraysTModCoilData
undTModRegisterData
, die in C++ wahrscheinlich alsStaticArray<>
repräsentiert werden. Arrays sollten aber eigentlich in der althergebrachten RTTI schon repräsentierbar sein, so daß die Ursache wahrscheinlich ein Compilerbug ist (unvollständige Unterstützung für dieStaticArray<>
-Projektion).Vermutlich kannst du das Problem umgehen, indem du die Events in den
public
-Abschnitt verschiebst. Du mußt sie dann eben im Quelltext zuweisen.
-
Vielen Dank für die Hilfe! Ich habe mal von jemanden es in einem neueren Rad Studio testen lassen und da hat es geklappt. Scheint ein Bug in meinem Rad Studio zu sein.