AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Lua und Delphi (Teil 1)

Lua und Delphi (Teil 1)

Ein Tutorial von igel457 · begonnen am 8. Sep 2006 · letzter Beitrag vom 21. Okt 2010
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von igel457
igel457
Registriert seit: 31. Aug 2005
Lua und Delphi
Funktionen von Delphi nach Lua

Hallo,

Ich habe mal ein kleines Tutorial geschrieben, in dem es um die Verwendung von Lua mit Delphi geht.
In diesem Teil geht es darum, Lua mit Delphi zu verbinden und Delphi Funktionen aus Lua heraus aufzurufen.

[edit=JasonDX] *snip* - Link auf Wunsch des Autors entfernt, das Tutorial befindet sich nun im Anhang[/edit]

Um Rückmeldung wäre ich euch sehr verbunden, da es mein erstes Tutorial ist.

In den nächsten Teilen wird es darum gehen Lua Funktionen aus Delphi heraus aufzurufen und Objekte zwischen Lua und Delphi auszutauschen.

Viel Spaß damit wünscht euch,
Igel457

PS: Mehr Infos über Lua gibt es unter http://www.lua.org
Angehängte Dateien
Dateityp: zip lua_tutorial_658.zip (125,4 KB, 532x aufgerufen)
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
 
hoika

 
Delphi XE4 Professional
 
#11
  Alt 8. Sep 2009, 15:08
Hallo,

ich denke eher, der Fehler ist das Leerzeichen

Documents\RAD Studio\

Ein Leerzeichen im Pfad ...
Setze den mal in doppelte Hochkommas.

Lua_DoFile(Lua_Instance, '"C:\Users\Florian\Documents\RAD Studio\Projekte\LuaTest\helloworld.lua"');
Beim Programmieren generell keine gute Idee, das mit den Leerzeichen,
es sei denn man testet es mal mit und mal ohne.


Heiko
Heiko
  Mit Zitat antworten Zitat
Vasco da Gama

 
Delphi 2009 Professional
 
#12
  Alt 8. Sep 2009, 18:41
Vielen Dank, es funktioniert mit Chris Lösung
Flo
  Mit Zitat antworten Zitat
Medium

 
Delphi 2007 Enterprise
 
#13
  Alt 8. Sep 2009, 18:52
@Leerzeichen: Die sind nur ein Problem in der Eigenschaften-Box von Dateien - besonders EXEn die man mit Parametern versehen will, und in der Shell. Ansonsten sind die eigentlich ziemlich bedenkenlos einsetzbar mittlerweile. Zumindest hatten wir noch keinerlei Proleme damit, weder auffer Arbeit noch ich bei mir privat.
  Mit Zitat antworten Zitat
Vasco da Gama

 
Delphi 2009 Professional
 
#14
  Alt 9. Sep 2009, 15:44
Hmm. Ich hab jetzt auch mal das mit der VCL Anwendung getestet. Allerdings bekomm ich das einfach nicht hin, damit eine Delphi procedure zu starten

Nachdem mir das mit dem Dialogfeld für den Anfang mal zum Testen zu kompliziert schien, hab ich nachher noch was probiert:
Delphi-Quellcode:
unit LT;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Lua;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  LuaInstance: Lua_State;

implementation

{$R *.dfm}

function SendMessage(L:Lua_State):integer;cdecl;
var
  ArgCount:integer;
begin

  ArgCount := Lua_GetTop(L);

  if ArgCount = 1 then
  begin
    Showmessage(Lua_ToString(L,1));
  end;
  Lua_Pop(L,ArgCount);
  Result := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  LuaInstance := Lua_Open;

  Lua_PushCFunction(LuaInstance,SendMessage);
  Lua_SetGlobal(LuaInstance,'message');

  LuaOpen_Base(LuaInstance);
  Lua_DoFile(LuaInstance,'dialog.lua');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Lua_Close(LuaInstance);
  LuaInstance := nil;
end;

end.
und im Lua-Dokument:
Code:
message("test");
Leider bekomme ich auch so kein Fenster(ShowMessage) geöffnet.

Danke schonmal, mfG
Flo
  Mit Zitat antworten Zitat
PfWSkip

 
Delphi 7 Professional
 
#15
  Alt 13. Sep 2010, 12:35
Ich weiß, der letzte Beitrag ist jetzt bereits über ein Jahr alt, aber um das Problem trotzdem zu lösen:

und im Lua-Dokument:
Code:
message("test");
Leider bekomme ich auch so kein Fenster(ShowMessage) geöffnet.
Der Lua-Code funktioniert wegen des semikolons ";" nicht. Lua ist zeilenbasierend (nicht wie zb. delphi) und weiß daher nichts mit einem semikolon anzufangen.
einfach nur:
Code:
message("test")
  Mit Zitat antworten Zitat
blackfin
 
#16
  Alt 13. Sep 2010, 14:47
Zitat:
Lua ist zeilenbasierend (nicht wie zb. delphi) und weiß daher nichts mit einem semikolon anzufangen.
Das ist nicht richtig.
Lua-Befehle können sehr wohl mit einem Semikolon abgeschlossen werden, müssen aber nicht.

Zitat:
The unit of execution of Lua is called a chunk. A chunk is simply a sequence of statements, which are executed sequentially. Each statement can be optionally followed by a semicolon
Quelle: Lua 5.1 Reference, Punkt 2.4.1

Meine Lua-Statements schliesse ich immer mit einem Semikolon ab, schon alleine wegen der Delphi-Gewohnheit

Geändert von blackfin (13. Sep 2010 um 14:53 Uhr)
  Mit Zitat antworten Zitat
PfWSkip

 
Delphi 7 Professional
 
#17
  Alt 21. Okt 2010, 16:30
Das ist nicht richtig.
Lua-Befehle können sehr wohl mit einem Semikolon abgeschlossen werden, müssen aber nicht.
Naja nicht ganz falsch, zeilenbasierend ist es ja trotzdem
über das semikolon war ich dann wohl falsch informiert. bis jetzt hatte ich immer nur gelesen "keine semikolons in lua".
aber gut, gefällt mir eigendlich besser so (der gewohnheit wegen ^^)
  Mit Zitat antworten Zitat
Themen-Optionen Tutorial durchsuchen
Tutorial durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf