Pascal Script

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Pascal Script

Beitrag von Lincoln Six Echo »

Hallo Kollegen,

habe mich mal mit dem Pascal Scrip beschäftigt um damit evtl. eine Plugin-Schnittstelle zu schaffen.

Egal was ich wie mit PSScript mache, ich erhalte beim Compilieren des nachfolgenden Scripts immer die Fehlermeldung:

[Error] (2:3): Unknown identifier ''

Script:

Code: Alles auswählen

uses
  sysutils;
 
begin
  writeln('Hallo FPC Programmierer');
end


Habe ich das Scriptsystem falsch verstanden oder einfach etwas vergessen ?

Hat jemand eine Lösung oder einen Tipp ?
Zuletzt geändert von Lori am Mi 21. Jan 2015, 21:55, insgesamt 1-mal geändert.
Grund: Highlighter

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Pascal Script

Beitrag von mschnell »

Es gibt mehrere Pascal Script engines. Welche meinst Du ?

Ein bekannter von mir hatte letztens gute Erfolge mit "sysygy Script Engine"

-Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Pascal Script

Beitrag von m.fuchs »

Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Pascal Script

Beitrag von theo »

Du brauchst da afaik keine uses.
Das "geuste" muss einkompiliert sein.
Also wenn du sowas wie 'writeln' brauchst, musst du das im FPC Code schon vorsehen:
z.B.

Code: Alles auswählen

Sender.AddFunction(@MWrites, 'procedure Writes(const s: string)');

Anderes kann man so einbinden im FPC Code:

Code: Alles auswählen

 
  SIRegister_Std(Sender.Comp);
  SIRegister_Classes(Sender.Comp,true);
  SIRegister_Controls(Sender.Comp);
  SIRegister_Forms(Sender.Comp);

http://wiki.freepascal.org/Pascal_Script_Examples

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Pascal Script

Beitrag von Lincoln Six Echo »

Es sind die Controls die bei Lazarus 1.2.6 dabei sind, ich glaube die sind von RemObjects.

Die sind auf der Registerseite "Pascal Script". Ich habe TPSScript benutzt.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Pascal Script

Beitrag von mschnell »

m.fuchs hat geschrieben:Schrieb er doch: http://wiki.freepascal.org/Pascal_Script


??? wo ???

-Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Pascal Script

Beitrag von m.fuchs »

Da:
Lincoln Six Echo hat geschrieben:habe mich mal mit dem Pascal Scrip beschäftigt um damit evtl. eine Plugin-Schnittstelle zu schaffen.


Ok, er hat ein T vergessen, aber das ist ja jetzt nicht das Problem.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Pascal Script

Beitrag von mschnell »

m.fuchs hat geschrieben:Ok, er hat ein T vergessen, aber das ist ja jetzt nicht das Problem.

Es gibt wie gesagt mehrere Pascal Script Engines, dass eine explizit "Pascal Script" heißt, bedeutet nicht, dass es für ihn die einzige Option ist. (Mir waren im Moment andere bewusst.)

-Micvhael
Zuletzt geändert von mschnell am Do 22. Jan 2015, 10:23, insgesamt 1-mal geändert.

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Pascal Script

Beitrag von Lincoln Six Echo »

Nochmal:

Ich habe einfach nach dem Wiki TPSScript von der Registerseite "Pascal Script" genommen.

Script-Text dann per

....if PSSCript.Compile() then PSScript.Execute() else ShowMessage(PSScript.ErrorText);

um es mal simpel auszudrücken. Das läuft ja auch soweit, aber es kommt nur die Fehlermeldung :

unknown Notifier "

Vielleicht verstehe ich auch PascalScript falsch, ich dachte das ist wie Object-Pascal nur das es nicht compiliert wird sondern als Script ausgeführt.

Tipps wie :

" SIRegister_Std(Sender.Comp); "

sind sicher gut, aber noch besser wäre es auch zu sagen wo das wie an welcher Stellen in welchen Code muß ;-)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Pascal Script

Beitrag von m.fuchs »

Naja und dass es die ist, welche standardmäßig mit Lazarus ausgeliefert wird. Und dass er von PSScript spricht, der Komponente von Pascal Script.

Aber warum streiten? :wink:
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Pascal Script

Beitrag von theo »

Lincoln Six Echo hat geschrieben:Tipps wie :

" SIRegister_Std(Sender.Comp); "

sind sicher gut, aber noch besser wäre es auch zu sagen wo das wie an welcher Stellen in welchen Code muß ;-)

Steht doch alles in dem Link, den ich dir oben gepostet habe.

Code: Alles auswählen

procedure TPSCE.OnCompile(Sender: TPSScript);
begin
  Sender.AddFunction(@MWrites, 'procedure Writes(const s: string)');
.....
end;
 

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Pascal Script

Beitrag von Lincoln Six Echo »

procedure TPSCE.OnCompile(Sender: TPSScript);
begin
Sender.AddFunction(@MWrites, 'procedure Writes(const s: string)');
.....
end;


Was ist "MWrites" ?
Ist das eine Variable ?
Wenn ja wo ist die deklariert ?

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Pascal Script

Beitrag von theo »

Lincoln Six Echo hat geschrieben:Was ist "MWrites" ?
Ist das eine Variable ?
Wenn ja wo ist die deklariert ?

Das steht doch da alles.
Sagt dir der Code denn gar nichts? Dann lass es bleiben mit Pascal Script. Für absolute Anfänger ist das vllt. etwas zu anspruchsvoll.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Pascal Script

Beitrag von Christian »

Ich bin gerade dabei diese Scriptengine großflächig im Promet einzubaun und hab in dem Zuge auch ein Kommandozeilentool zum ausführen der Scripte und einen separaten kleinen Editor mit intigriertem Debugger für die Scripte gebaut. Ich hab vor das Kommandozeilentool in den Editor losgelöst zu verpacken und für Linux,Windows und Arm-linux (Raspberry & co) bereitzustellen.

Vllt reicht dir das ja schon.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten