Freepascal und Lua

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: Kubuntu 22.04 (FPC 3.2.2) / Win11 Pro (FPC 3.2.2) / macOS Ventura (FPC 3.2.2)
CPU-Target: x86/x64
Kontaktdaten:

Freepascal und Lua

Beitrag von Cybermonkey342 »

Hallo,

ich suche verzweifelt ein Tutorial, wie ich Lua in Pascal einbetten kann. Es gibt natürlich Tausende Tutorials für C und Lua, aber nix Vernünftiges für Pascal. Bitte nicht die Seite eonclash.com, da dort eine "eigene" Variante der Pascal-Headers genutzt wird und nicht die, welche bei Freepascal dabei sind (lua, lualib, lauxlib).
Hat da jemand schon mal was gemacht? Ich möchte eigentlich nur mal ein einfaches Script ausführen lassen, sowas wie:

Code: Alles auswählen

print "Ich bin in Lua eingebaut"
schreibe "Ich bin eine Pascal Prozedur"

Bin für jede Hilfe dankbar!
Mit besten Grüßen,
Cybermonkey

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

Re: Freepascal und Lua

Beitrag von theo »

Ich würde mir das nicht antun, mit den units von Freepascal.
Die sind weder dokumentiert, noch sind es Klassen.
Das bei eonclash sieht doch ganz appetitlich aus. Mit Dokus, Beispielen und Klassen.
Was hast du denn dagegen?

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: Kubuntu 22.04 (FPC 3.2.2) / Win11 Pro (FPC 3.2.2) / macOS Ventura (FPC 3.2.2)
CPU-Target: x86/x64
Kontaktdaten:

Re: Freepascal und Lua

Beitrag von Cybermonkey342 »

Naja, ich wollte es eben nicht objektorientiert machen, sondern auf "gute, alte" prozedurale Weise und eonclash hat mir da auch zuviele Abhängigkeiten. (Ich möchte das wie gesagt nicht unter Lazarus nutzen, sonder "plain" Freepascal). Aber es stimmt schon, leider sind die mitgelieferten Units nicht dokumentiert. Aber irgendjemand wird damit doch schon mal gearbeitet haben?
Mit besten Grüßen,
Cybermonkey

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

Re: Freepascal und Lua

Beitrag von theo »

Cybermonkey342 hat geschrieben:Naja, ich wollte es eben nicht objektorientiert machen, sondern auf "gute, alte" prozedurale Weise und eonclash hat mir da auch zuviele Abhängigkeiten. (Ich möchte das wie gesagt nicht unter Lazarus nutzen, sonder "plain" Freepascal).

pLUA hat afaics keine weiteren Abhängigkeiten, noch nicht mal von der LCL. Läuft also auch mit Freepascal alleine.
Die DLL/SO braucht's natürlich sowieso.

Cybermonkey342 hat geschrieben:Aber irgendjemand wird damit doch schon mal gearbeitet haben?


Ich würde nicht allzuviel darauf wetten, dass du den findest. ;-)

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Freepascal und Lua

Beitrag von marcov »

Cybermonkey342 hat geschrieben: leider sind die mitgelieferten Units nicht dokumentiert. Aber irgendjemand wird damit doch schon mal gearbeitet haben?


C Header Übersetzungen werden nie separat Dokumentiert. Weil die Übersetzungen meistens fast 1:1 sind, soll man die ursprüngliche (C) Dokumentation für die relevante Header nutzen.

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: Kubuntu 22.04 (FPC 3.2.2) / Win11 Pro (FPC 3.2.2) / macOS Ventura (FPC 3.2.2)
CPU-Target: x86/x64
Kontaktdaten:

Re: Freepascal und Lua

Beitrag von Cybermonkey342 »

Es geht leider schon bei der Initialisierung los; dass ich ein

Code: Alles auswählen

var L : plua_State;

brauche ist schon klar. Nur leider klappt die Initialisierung nicht C-like:

Code: Alles auswählen

L = lua_open();

Ergo: L bleibt uninitialisiert und das Programm bricht ab, sobald ich auf L zurgreife:
Runtime error 216 at $005935DB
$005935DB
$005B01BC
$08049E39
$0806CC57
Mit besten Grüßen,
Cybermonkey

lrlr
Beiträge: 127
Registriert: Di 3. Nov 2009, 09:48

Re: Freepascal und Lua

Beitrag von lrlr »

was auch immer lua ist..

wie wärs mit pascal script ???

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

Re: Freepascal und Lua

Beitrag von theo »

Cybermonkey342 hat geschrieben:Es geht leider schon bei der Initialisierung los;


Falsche Lib version?

Ich hab's mal kurz getestet. Bei mir geht das mit den FPC Units.

z.B.

Code: Alles auswählen

L:=lua_open;
res:=luaL_loadfile(L,'/home/theo/test.lua');
if res=0 then
 begin
   res:=lua_pcall(L,0,1,0);
      if res=0 then
       begin
        num := lua_tonumber(L, lua_gettop(L));
        ShowMessage(FloatToStr(num));
      end;
   lua_pop(L, 1);
 end;
lua_close(L);


wobei test.lua:

Code: Alles auswählen

function double(n)
    return n * 2
end
 
return double(5)

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: Kubuntu 22.04 (FPC 3.2.2) / Win11 Pro (FPC 3.2.2) / macOS Ventura (FPC 3.2.2)
CPU-Target: x86/x64
Kontaktdaten:

Re: Freepascal und Lua

Beitrag von Cybermonkey342 »

Hm, könnte sein (das mit der Lib). Habe jetzt Lua aus den Sourcen kompiliert und jetzt scheint es zu funzen. Witzig ist nur, dass ich jetzt mit C angefangen habe ... mal sehen mit welcher Sprache ich weiter mache, da ich mit C erstaunlich gut vorangekommen bin. Jedenfalls erst mal vielen Dank für die Hilfe.
Mit besten Grüßen,
Cybermonkey

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

Re: Freepascal und Lua

Beitrag von theo »

Naja, das interface zu bedienen ist in etwa dasselbe bei C oder Pascal.
Die Frage ist eher, ob du das "drumherum" lieber in C oder Pascal machst.
Diese Frage ist für mich einfach zu beantworten. ;-)

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: Kubuntu 22.04 (FPC 3.2.2) / Win11 Pro (FPC 3.2.2) / macOS Ventura (FPC 3.2.2)
CPU-Target: x86/x64
Kontaktdaten:

Re: Freepascal und Lua

Beitrag von Cybermonkey342 »

Normalerweise würde ich sagen, klar Pascal. Da ich aber überwiegend SDL-Funktionen nutze, komme ich ins selbe Dilemma, wie mit Lua: alles C-Libs und auch im Netz zu über 90% mit C/C++ Beispielen vorhanden. Das Problem ist quasi, dass ich es mir eh erst aneignen muss, wie es mit C läuft, und das dann wiederum nach Pascal umsetzen muss. (Siehe auch meine Frage vor einiger Zeit zu plex/pyacc). Da könnte (könnte!) ich gleich bei C bleiben nur halt... so ab 150 Zeilen wird C-Code "leicht" unleserlich.
Mit besten Grüßen,
Cybermonkey

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6216
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Freepascal und Lua

Beitrag von af0815 »

Cybermonkey342 hat geschrieben:.... ich gleich bei C bleiben nur halt... so ab 150 Zeilen wird C-Code "leicht" unleserlich.

Das kann ich nicht nachvollziehen. Es hängt, meiner Meinung nur davon ab, ob der Quelltext gut strukturiert und lesbar geschrieben wurde.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: Kubuntu 22.04 (FPC 3.2.2) / Win11 Pro (FPC 3.2.2) / macOS Ventura (FPC 3.2.2)
CPU-Target: x86/x64
Kontaktdaten:

Re: Freepascal und Lua

Beitrag von Cybermonkey342 »

af0815 hat geschrieben:
Cybermonkey342 hat geschrieben:.... ich gleich bei C bleiben nur halt... so ab 150 Zeilen wird C-Code "leicht" unleserlich.

Das kann ich nicht nachvollziehen. Es hängt, meiner Meinung nur davon ab, ob der Quelltext gut strukturiert und lesbar geschrieben wurde.

Naja, im Vergleich zu Pascal ist C immer unlesbar ... :wink:
(Ich bin ein alter - im wahrsten Sinne - Pascal- und BASIC-Programmierer, da tat ich mich schon immer schwer mit der C-Syntax)
Mit besten Grüßen,
Cybermonkey

Antworten