DLL Stringhandling

Antworten
tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

DLL Stringhandling

Beitrag von tom_g » Freitag 28. Januar 2011, 13:13

Guten Tag Abacom und Forumbesucher,

ich möchte DLLs erstellen und in PL einbinden, bin kein C/Delphi Experte, kenne mich aber gut in Euphoria aus. Daraus kann man mittels C-Translator und dem OpenWatcom Compiler ganz einfach DLLs herstellen.
Aber ich muss in Euphoria die C-Datentypen halt "emulieren".

Ich habe die Methode "CCalculate(double *PInput, double *POutput, double *PUser)" im Griff (frohlock...!), will nun natürlich auch die erweiterte "CCalculateEx(double *PInput, double *POutput, double *PUser; StringParam PStrings)" beherrschen.

Ich stehe momentan etwas an, es stellt sich mir noch eine Verständnisfrage. Ich wäre um eine Antwort sehr dankbar.

type TStringParams = array[0..100] of PChar;
PStringParams = ^TStringParams;

1. Bedeutet das, dass PString ein Pointer ist, welcher seinerseits auf ein "array" von 100 Pointern zeigt, welche ihrerseits auf 100 Strings zeigen, stimmt diese "holprige" Aussage ?

2. Sind die 100 Strings alle konstant 1000 chars lang oder nur so lange, wie die an den deklarierten Eingängen anstehenden Strings ? D.h. muss ich dann die einzelnen chars rauslesen und auf den den Terminator "\0" testen ?

Bei Interesse und natürlich vorausgesetzt, ich bekomme die Sache in den Griff, werde ich gerne erläutern, wie Euphoria DLLs in PL eingebunden werden können. Damit steht eine weitere Möglichkeit nebst C, Delphi, Lua zur Verfügung um die jeweiligen Stärken (formale Programmierung, grafische Programmierung) zu kombinieren.

PS. @ASkr, www.askrprojects.net:
ProfiLua ist eine super Sache, gratuliere, ich werde Deine Seite verfolgen !
Ich versuch' mich in EU, man kann einfach nicht beliebige Dialekte lernen. Eine Programmiersprache ist ein Werkzeug, welches man immer wieder gerne benutzt, und darin ist man stark.

Vielen Dank, und mit freundlichen Grüssen:

tom_g
Curiousity makes us progress !

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: DLL Stringhandling

Beitrag von tom_g » Freitag 28. Januar 2011, 17:55

Guten Abend !

Zu der Methode
CCalculateEx(double *PInput, double *POutput, double *PUser; StringParam PStrings)

Ich bin nun einen Schritt weiter, ich habe nun Zugriff auf die angelegten Strings (jubilier...!) :
meine Frage von vorher war also auch grad die Antwort.

Nun stelle ich folgendes Verhalten fest:

1. ob ein Eingang mit "$" beginnt oder nicht, spielt scheinbar keine Rolle. Wenn ein String in einen Eingang des DLL-Funktionsblocks eingespeist wird, erscheint dieser an seiner zugehörigen Stelle im String-Speicherbereich (welcher durch PStrings angewiesen wird).
Wenn nun ein numerischer Wert eingespeist wird, so erscheint auch dieser (für mich überraschend) im String-Speicherbereich, wobei numerische Eingaben ja eigentlich im numerischen Eingangs-Speicherbereich gemappt werden (angewiesen durch *PInput)
Die Datentypen "interessieren" nicht, double und string erscheinen beide korrekt im String-Speicher, sie lassen sich entgegen meiner Erwartung auch "falsch" anschliessen, d.h an einem numerischen Eingang kann also ein String eingespeist werden und umgekehrt, und die Eingabe erscheint trotzdem korrekt im Stringformat.


2. Nicht die Enumeration der Eingangs-Strings, sondern deren Position an den Eingängen im PL-DLL-Funktionsblock weist den Strings ihren Speicherort zu. Bpl: ich habe 4 Eingänge definiert, Eingang 1 und 2 sind numerisch, 3 und 4 sind string.
Alle 4 Eingänge werden korrekt als string in den String-Speicherbereich gemappt, schön nacheinander, so wie deren Position im Funktionsblock.

Ich drücke mich vielleicht unbeholfen aus; daher bitte ich Abacom um ihre Erläuterung.

Ich wünsche allen viel Spass mit ProfiLab - ein feines Teil !

Mit vielen Grüssen: tom_g
Curiousity makes us progress !

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: DLL Stringhandling

Beitrag von abacom » Mittwoch 2. Februar 2011, 08:59

Es gehört zu den PL-Konventionen, dass $Strings-Pins mit $-Zeichen beginnen. Dies sollte schon aus Gründen der Übersicht beibehalten werden. Insbesondere bei Ausgängen ist dies unerlässlich, da PL-Komponenten dies bei der internen Format-Konvertierung berücksichtigen.
ABACOM support

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: DLL Stringhandling

Beitrag von tom_g » Mittwoch 2. Februar 2011, 14:54

Danke Abacom, für Ihre Antwort.

Habe bereits und werde die "$"-Konvention weiterhin berücksichtigen. Mit freundlichen Grüssen: tom_g
Curiousity makes us progress !

Antworten

Zurück zu „DLL-Programmierung“