Problem mit eigen geschriebenen Omsi 2 Plugin (Delphi)

Willkommen in der OMSI-WebDisk!
Als Gast kannst du nur Inhalte in deiner ausgewählten Sprache sehen. Registrierte Nutzer können die Sichtbarkeit anderer Sprachen in ihrem Kontrollzentrum aktivieren, weitere Infos hier.
Alle Themen sind in den Foren mit einer Sprachflagge gekennzeichnet: = Englisch [EN], = Deutsch [DE], = Französisch [FR]. Wenn du die angegebene Sprache nicht beherrschst, schreibe auf Englisch!
  • Hallo,

    ich habe mich heute mal an ein Plugin (in der Sprache Delphi) gesetzt.

    Es ist legentlich ein Test Plugin, indem man nur einen Trigger hat, welcher die Tür 1 z.B. aufmacht.

    Benutzt (als Vorlage) habe ich das Tut im Omsi 2 wiki.

    Mein Problem ist nun, dass ich eine Fehler bei Bereichsprüfung und bei der Project1.dll bekomme, ich kann leider sonst nichts anderes sagen, da die Logfile nichts ausspucken tut!


    Wenn sich einige Fragen, wieso ich AccessVariable, AccessSystemVariable, ... eingefügt habe, den kann ich dazu nur sagen, dass vorher in der Log stand (wo ich das ganze da nicht drin hatte) AccessSystemVariable NOT FOUNT, usw.


    Hier der Delphi-Code


    .opl

    Code
    [dll]
    Project1.dll
    
    [triggers]
    1
    bus_doorfront0

    Das Bild der Form1 habe ich angehängt!


    Ich würde mich sehr um Hilfe dabei freuen Danke!


    Simon

  • @Projekt Potsdam Design


    Hi,


    leider hab ich von Programmierung sowenig Ahnung wie vom Kühe melken, aber ich könnte mir vorstellen, das die verschiedenen AccessVariable'n

    auch mit einer Funktion (oder einem Wert) hinterlegt sein müssen.

    Ähnlich wie bei OMSI, wenn man ein Script in einen anderen Bus einfügt, die entsprechenden Variablen in eine Varlist einträgt (Damit findet OMSI keinen Fehler) aber das Script funktioniert trotzdem nicht, da die Variablen nicht angesprochen werden.


    Ich hoffe, ich habe nicht zu viel Müll verzapft. Ansonsten entschuldige ich mich hiermit schonmal im Vorraus.


    mfg

    Daniel

  • Hey,


    Da ich selber am versuchen bin den Beispiel aus dem Wiki nachzubauen denke ich das hier ein guter Ort ist mit meinem Anliegen.


    Das mit den Zugriffsverletzung hab ich auch und wollte daher mal nachhaken, ob es in der Zeit einen erfolgt gab?


    Programmieren tu ich selbst mit Delphi.

    Den Fehler konnte vorerst in der procedure PluginStart eingrenzen.


    Allerdings frage ich mich wo da das Problem liegt.

    Code
    procedure PluginStart(AOwner: TComponent); stdcall;
    begin
        form1 := TForm1.Create( AOwner );
        form1.Show;
    end;

    Form1 ist noch recht nackig und beinhaltet keine Elemente.

    Es ändert sich auch nichts daran wenn ich einfach irgendwas einfüge.


    Beim erstellen der DLL kommt keine Fehlermeldung.


    Kann es vielleicht an der Einstellung für das Form liegen oder ist einfach mein Delphi Version zu alt?

    Einen plausiblen Grund hab ich sonst nicht.

    Selbst für Lotus ist der Pluginstart und Pluginfinalize gleich.


    So sieht es bei aus:

  • Moin,


    die Fehlermeldung konnte ich eliminieren das liegt aber auch schon Jahre zurück den Code hab ich nicht mehr. Ich habe mich später dazu entschieden gehabt das ganze mit Textdateien zu machen da meine DLL für OMSI mit dem Delphi Programm am ende 20MB groß war da in der Zeit mehr Controls anscheinend dazugekommen sind und somit die Datenbanken für Forms größer geworden sind. und 20MB für eine Plugin.dll ist einfach zu groß für Omsi deshalb bin ich auf eine andere Möglichkeit umgesprungen.


    Es soll wohl auch mit C++ oder C# Forms gehen da hab ich aber absolut kein Durchblick wie das Funktionieren soll.


    Es gibt auf GitHub wo der Code ja offenliegt Plugins in C++ oder C# wo das funktioniert hat. Aber da sind so viele Verweise das ich da nicht durchblicke. Und wie man am ende aus einem C# Forms Projekt dann eine Fertige DLL macht ist mir auch dann ein Rätzel

    https://github.com/space928/Omsi-Extensions

    http://wiki.omnibussimulator.d…OMSI_Plugin_Framework_III

  • Es soll wohl auch mit C++ oder C# Forms gehen da hab ich aber absolut kein Durchblick wie das Funktionieren soll.

    C++ wenigstens.

    Aber man könnte jetzt auch darüber streiten was am einfachsten ist.

    Für den Visual C++ Editor gab es auch einen Zusatzmodul für den Plugin Framework den man leider nicht mehr downloaden kann.

    Am Ende hängt es eh ab wie weit man sich mit der Materie beschäftigt.


    die Fehlermeldung konnte ich eliminieren das liegt aber auch schon Jahre zurück den Code hab ich nicht mehr.

    Das konnte ich heut' nachmittag dank die Hilfe vom Thomas beseitigen.


    Entsprechend sehen die Einträge wie folgt aus:

    Dazu bin ich auf Delphi 11 CE gewechselt.

    Bis auf das Button sowie die Systemvariablen und Strings funktioniert es auch soweit.

  • Bei mir tut sich da nichts viel.

    Um die 11,2MB.

    Mit Delphi 7 bin ich um die 300KB wenn es funktionieren würde.


    Ich hänge mal mein Testprojekt der mit Delphi 11 CE erstellt wurde an.


    Edit: Nachdem ich in Delphi von Debug aus Release umgestellt habe ist die DLL nur noch 2MB hoch.

    Finde ich persönlich bisschen viel wenn ich an BBS denke mit 1MB der wesentlich umfangreicher ist als ein Testobjekt.

    Dateien

    • Testplugin.zip

      (3,41 MB, 272 Mal heruntergeladen, zuletzt: )

    140239-gif-220808-125023-gif

    2 Mal editiert, zuletzt von Neoplan VEST ()