Grundlegendes eintauchen in die Plugin-DLL Welt

  • Hallo,


    ich versuche aktuell verschiedene Werte aus Lotus herauszulesen. Hierfür habe ich mir im Lexikon die DLL Artikel durchgelesen und den Beispielcode als Grundstein genommen.

    Mit 0-Pascal Erfahrung versuche ich es einfach mal. (Probieren geht über studieren)


    Da ich leider keine näheren Details zu den DLL's gefunden habe, versuche ich das grade durch lesen und (versuchen zu) verstehen mir nach und nach zu erarbeiten.


    Im nachfolgenden versuche ich die Liniennummer als integer zu exportieren. ( Wie gesagt, Beispielcode vom Lexikon ist 1:1 übernommen, nur meinerseits zur Verständnis kommentiert)

    In der DLL versuche ich von den System-Scriptvariabeln die RC_PIS_Line auszulesen. Ist das hier der richtige Ansatz, oder ist das absoluter Blödsinn, den ich hier fabriziere?


    Nun hier die Frage: kann das so funktionieren oder gibt es effektivere Methoden um an die Informationen ranzukommen/zu exportieren?

    Grüße

    EGIS


    Send Logfiles and Screenshots!

    Ironie und Humor seit 25 Jahren!

    OMSI 5 ftw!

  • Hast du denn mal versucht, ob es funktioniert? Wenn du den Code kompilierst, solltest du eigentlich schon feststellen, dass das vmtl so nicht funktioniert. Z.B. nutzt du im Code die Variable RC_PIS_Line, die du nicht deklariert hast, danach das end vergessen und du versuchst, Funktionen zu exportieren, die du nicht definiert hast.


    Ansonsten ist mir aufgefallen, dass du unter [ReadingVarsInt] den Count auf 1 gesetzt hast, aber 2 Variablen angibst.

    Sonst ganz generell: ReadingVarsInt ist nur zum Lesen geeignet. Wenn du Werte setzen möchtest, musst du auf SetButton bzw. SetFloat zurückgreifen. Des Weiteren solltest du vmtl die PluginFinalize-Prozedur implementieren und darin hinter dir aufräumen ;)

  • Ok vielen Dank für das umfangreiche Feedback.

    Sitze grad in der Arbeit und hab mir das wie gesagt durchgelesen und versucht zu verstehen, deswegen kann ich das grad nicht testen.


    Bezüglich der "PluginFinalize-Prozedur" konnte ich leider nichts weiteres finden, weshalb das außer acht gelassen wurde. - Wenn wir schon dabei sind: was macht die?


    Variable deklarieren macht sinn, vergessenes end ist peinlich ^^'

    Den Count auf 2 zu erhöhen kann ich auch nachvollziehen.


    Sonst ganz generell: ReadingVarsInt ist nur zum Lesen geeignet. Wenn du Werte setzen möchtest, musst du auf SetButton bzw. SetFloat zurückgreifen.

    Jup das habe ich verstanden, mir geht es momentan aber nur um das Auslesen der Werte.

    Zu diesem Zeitpunkt wollte ich (noch) keinen Controller o.ä. anschließen.


    Letzendlich wollte ich nicht im Forum schreiben: "Kann mir jemand das hier coden, ohne dass ich es selber versucht habe" ;)


    Jedenfalls glaube ich in der Logik ein bisschen was verstanden zu haben. Ist nur doof, dass ich kaum was verstehe, da ich kein Object Pascal beherrsche (leider nur Java).

    Grüße

    EGIS


    Send Logfiles and Screenshots!

    Ironie und Humor seit 25 Jahren!

    OMSI 5 ftw!

  • Plugin-Finalize wird aufgerufen, wenn das Plugin beendet wird. Das wäre der Ort, an dem man hinter sich aufräumt, also in diesem Fall z.B. die Form freigibt. (Wobei das wohl eher Formsache ist, weil Plugins von Lotus, soweit ich weiß, nur beendet werden, wenn Lotus beendet wird, und dann räumt das Betriebssystem eh für dich auf.)


    Wenn du Java kennst, wird dir wahrscheinlich C/C++ leichter fallen als Pascal. Auch mit C/C++ kann man eine DLL erstellen (prinzipiell mit jeder Sprache, die Maschinencode generieren kann, nur damit leider nicht Java). Ich habe vor längerer Zeit mal eine Projektvorlage für Visual Studio erstellt (Link), die dir dabei vielleicht helfen könnte. Pascal zu lernen sollte aber auch nicht zu dramatisch sein, zumal du das eh brauchst, falls du in die Scriptentwicklung einsteigen willst. ;)

  • Danke für die Erklärung.


    Hmm die Qual der Wahl also.

    Grundsätzlich ist es natürlich besser wenn ich bei Pascal bleibe, da ich sicherlich auch mal andere Scripte in LOTUS umsetzen möchte.

    Ich schau mir mal den C/C++ Code an und werde danach entscheiden auf welcher Sprache ich diese DLL schreiben möchte. Schließlich will ich ja auch verstehen was ich da zusammencode.


    Abgesehen davon muss ich dann noch schauen, mit was/wie ich dann die Daten aus der DLL anfordere, um diese weiterverarbeiten zu können.


    Weitere Erkenntnisse und Fehlversuche werde ich dann mal hier reinposten :)

    Grüße

    EGIS


    Send Logfiles and Screenshots!

    Ironie und Humor seit 25 Jahren!

    OMSI 5 ftw!