Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Lua und Delphi (Teil 1) (https://www.delphipraxis.net/76737-lua-und-delphi-teil-1-a.html)

hoika 8. Sep 2009 14:08

Re: Lua und Delphi (Teil 1)
 
Hallo,

ich denke eher, der Fehler ist das Leerzeichen

Documents\RAD Studio\

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

Delphi-Quellcode:
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

Vasco da Gama 8. Sep 2009 17:41

Re: Lua und Delphi (Teil 1)
 
Vielen Dank, es funktioniert mit Chris Lösung :)
:dp:

Medium 8. Sep 2009 17:52

Re: Lua und Delphi (Teil 1)
 
@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.

Vasco da Gama 9. Sep 2009 14:44

Re: Lua und Delphi (Teil 1)
 
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 :dp:

PfWSkip 13. Sep 2010 11:35

AW: Lua und Delphi (Teil 1)
 
Ich weiß, der letzte Beitrag ist jetzt bereits über ein Jahr alt, aber um das Problem trotzdem zu lösen:

Zitat:

Zitat von Vasco da Gama (Beitrag 949877)
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")

blackfin 13. Sep 2010 13:47

AW: Lua und Delphi (Teil 1)
 
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 :)

PfWSkip 21. Okt 2010 15:30

AW: Lua und Delphi (Teil 1)
 
Zitat:

Zitat von blackfin (Beitrag 1049270)
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 ^^)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz