Anasayfa > delphi, Lazarus > Script’lerin gücü adına…

Script’lerin gücü adına…


Remobjects firmasının Pascal script component paketi ile delphi ve lazarus içerisinde harici kodların çalıştırılmasını sağlayabilirsiniz.

Bu örnekte lazarus içerisine kurulumunu yapıp örnek bir proje yapacağız.

Kurulum için sitenin ilgili adresindeki paketi kurmanız gerekli adresi ise şu: http://www.remobjects.com/trials.aspx#free sağ alt köşedeki link🙂

Doğrudan bağlantı ise:

http://www.remobjects.com/download.aspx?file=RemObjects%20Pascal%20Script%20for%20Delphi%20-%203.0.55.957.exe.url.txt

Kurulum tamamlandıktan sonra “C:\Program Files\RemObjects Software\Pascal Script for Delphi\Source” linkinden lpk dosyasına erişebilirsiniz.

Benim tavsiyem lazarus klasörü içerisindeki component alt klasörüne bir adet pascalscript klasörü oluşturmanız ve bu kaynak dosyaları buraya atmanız.

Kurulum için lpk dosyasını lazarus ile açıp lazarusu derlemeniz gerekli.

Bir başka yapılması gereken husus ise derleyeci ayarlarından syntax kısmını delphi yapınız.

Derleme işleminden sonra component bölgesinde gözükecektir.İçerisinde bir kaç örnekler mevcut ama biz de kendimize ait bir örnek yapalım…

Yeni bir proje açalım bir memo nesnesi bir düğme ve bir label formumuzda olsun:

Bunları yapmamız yeterli ancak psscript’in dış nesnelerle bağlantısını sağlamak için bazı işlemler yapmak lazım.

Ancak önce yaptığımızı doğrulayalım ve şu kodları Execute düğmesi içine yazalım:


procedure TForm1.ExecuteClick(Sender: TObject);
begin
 PSScript1.Script := memScript.Lines;
 if PSScript1.Compile then
 begin
 if PSScript1.Execute then
 lblStatus.Caption := 'Executed...';
 end
 else
 begin
 lblStatus.Caption := 'Error...';
 end;
end;


Şimdi hazırız…

Şu kodu oluşturalım:


unit main;

{$mode objfpc}{$H+}

interface

uses
 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
 StdCtrls, uPSComponent, uPSCompiler, uPSRuntime,

 uPSR_std,
 uPSC_std,
 uPSR_stdctrls,
 uPSC_stdctrls,
 uPSR_forms,
 uPSC_forms,
 uPSC_graphics,
 uPSC_controls,
 uPSC_classes,
 uPSR_graphics,
 uPSR_controls,
 uPSR_classes;

type

 { TForm1 }

 TForm1 = class(TForm)
 Execute: TButton;
 Label1: TLabel;
 lblStatus: TLabel;
 memScript: TMemo;
 PSScript1: TPSScript;
 procedure ExecuteClick(Sender: TObject);
 procedure PSScript1Compile(Sender: TPSScript);
 procedure PSScript1CompImport(Sender: TObject; x: TPSPascalCompiler);
 procedure PSScript1ExecImport(Sender: TObject; se: TPSExec;
 x: TPSRuntimeClassImporter);
 procedure PSScript1Execute(Sender: TPSScript);
 private
 { private declarations }
 public
 { public declarations }
 end;

var
 Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.ExecuteClick(Sender: TObject);
begin
 PSScript1.Script := memScript.Lines;
 if PSScript1.Compile then
 begin
 if PSScript1.Execute then
 lblStatus.Caption := 'Executed...';
 end
 else
 begin
 lblStatus.Caption := 'Error...';
 end;
end;

procedure TForm1.PSScript1Compile(Sender: TPSScript);
begin
 Sender.AddRegisteredVariable('Application', 'TApplication');
 Sender.AddRegisteredVariable('Self', 'TForm');
end;

procedure TForm1.PSScript1CompImport(Sender: TObject; x: TPSPascalCompiler);
begin
 SIRegister_Std(x);
 SIRegister_Classes(x, true);
 SIRegister_Graphics(x, true);
 SIRegister_Controls(x);
 SIRegister_stdctrls(x);
 SIRegister_Forms(x);
end;

procedure TForm1.PSScript1ExecImport(Sender: TObject; se: TPSExec;
 x: TPSRuntimeClassImporter);
begin
 RIRegister_Std(x);
 RIRegister_Classes(x, True);
 RIRegister_Graphics(x, True);
 RIRegister_Controls(x);
 RIRegister_stdctrls(x);
 RIRegister_Forms(x);
end;

procedure TForm1.PSScript1Execute(Sender: TPSScript);
begin
 PSScript1.SetVarToInstance('APPLICATION', Application);
 PSScript1.SetVarToInstance('SELF', Self);
end;

initialization
 {$I main.lrs}

end.

Runtime geçip şunu deneyelim:

 

Label nesnesine ulaşmak istiyorsanız onu da kayıt etmeniz gerekli hadi bunu da siz yapın…

Sonraki yazıda görüşmek üzere…

Kategoriler:delphi, Lazarus
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Görüşlerinizi belirtin

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s