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 erwartet

    IdModBusServer.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 arrays TModCoilData und TModRegisterData , die in C++ wahrscheinlich als StaticArray<> 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 die StaticArray<> -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.


Anmelden zum Antworten