Lazarus ve Python Entegrasyonu
Lazarus ve Python entegrasyonu için çok basit bir örnek yapalım.
Python, vereceğimiz tam sayıların faktöryellerini döndürsün. Bunun için Python ile birkaç satırlık bir kod oluşturalım hemen:
1 2 3 4 5 6 7 8 9 10 11 |
# -*- coding: utf-8 -*- import math import sys try: y = int(sys.argv[1]) x = math.factorial(y) print(x) except Exception as e: print(str(e)) |
Kod dosyamızın adı lazarus_test.py olsun.
Lazarus tarafında ise hem istediğimiz tam sayıyı seçebilelim, hem de Python’dan dönen yanıtları sergileyebilelim.
Lazarus kodlarımız da şöyle olsun:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, SynEdit, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, Process; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Label1: TLabel; Memo1: TMemo; Panel1: TPanel; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var proses : TProcess; liste: TStringList; begin proses := TProcess.Create(nil); liste := TStringList.Create; proses.CommandLine:= 'python3 /home/ax/PycharmProjects/lazarus/lazarus_test.py '; proses.CommandLine:= proses.CommandLine + trim(Edit1.Text); proses.Options := proses.Options + [poWaitOnExit,poUsePipes]; proses.Execute; liste.LoadFromStream(proses.Output); Memo1.Lines.Clear; Memo1.Text := liste.Text; liste.Free; proses.Free; end; end. |
Form1 görüntüsü:
Bu da 50 faktöryel hesaplanmış hali.
Gördüğünüz gibi mekanizma çok basit bir şekilde çalıştırılabiliyor. Lazarus, python ile elde edilen sonuçları sergileme açısından pratik ve görsel bir araç olarak kullanılabilir.
Elbette ben eski bir Delphi kullanıcısı olmanın avantajlarını yaşıyorum. Ama siz Delphi veya Pascal ile daha önceden tanışmadıysanız, yeni bir dil öğrenmenin size ne kadar yük ve yarar sağlayacağını ayrıca dikkate almalısınız.
Konuyla ilgili sorularınız olursa, yorum alanından bana yöneltebilirsiniz.
Lazarus önünüzde yeni ufuklar açabilir. Deneyin, görün!
Ahmet Aksoy