Lazarusta da delphi
de olduğu gibi kaynak dosya kullanımı vardır. Sıkıntı çıkaran
kısımlar windows kaynak dosyalarının linux tarafında ufak
tefekte olsa uyumsuzluğunun olabilmesidir. Ancak lazarusun kendi
kaynak dosya kullanım sistemini kullanırsanız hem windows hemde
linux tarafında (osx tarafında da) çapraz platform uyumluluğu
içinde rahatlıkla kullanabilirsiniz. Bu yazımızda lazarus-->tools
dizini altındaki “lazres” uygulaması ile birden fazla raw
dosyayı kaynağa gömüp kullanımını anlatmaya çalışacağız.
Anlatacaklarımız hem windows hemde linux tarafında benzer şekilde
uygulanabilir işlemlerdir.
İlk olarak iki tane
örnek olması açısından gömeceğimiz dosyaları seçelim. Biz
burada “kitap1.xlsx” çalışma kitabı ile “Dokuman1.odt”
dosyasını seçtik. Bu dosyaların “lrs” uzantılı dosyasını
oluşturalım. Biz bu dosyayı programımızın derlemesinde kaynak
dosya olarak kullanacağız.
Linux için terminal
penceresinde
/usr/share/lazarus/1.6.4/tools$
./lazres /home/kaynakproje/resourcedosyam.lrs
/home/kaynakproje/Kitap1.xlsx /home/kaynakproje/Dokuman1.odt
windows için komut
satırında
c:\lazarus\tools\lazres.exe
c:\kaynakproje\resourcedosyam.lrs c:\kaynakproje\kitap1.xlsx
c:\kaynakproje\Dokuman1.odt
yazıp enterlıyoruz.
Karşımıza aşağıdaki gibi bir pencere gelecek. (linux dosya
sistemindeki görüntüsü aşağıdaki gibidir)
/home/ResourceProjesi/Kitap1.xlsx
ResourceName='Kitap1' Type='XLSX'
/home/ResourceProjesi/Dokuman1.odt
ResourceName='Dokuman1' Type='ODT'
windows
kullanıyorsanız sonuç görüntüsü şu şekilde olur;
c:\ResourceProjesi\Kitap1.xlsx
ResourceName='Kitap1' Type='XLSX'
c:\ResourceProjesi\Dokuman1.odt
ResourceName='Dokuman1' Type='ODT'
Böylece nihayet iki
dosyayı da içinde barındıran “resourcedosyam.lrs” kaynak
dosyamızı oluşturmuş olduk.
Yukardaki işlemlerde
iki dosyayı ayrı ayrı yazıp göstermek yerine dosyaların
listesinin olduğu bir text dosyasını bunların yerine yazmış
olsaydık yine aynı işi yapmış olurduk. Hatta bu liste gösterme
şekli çok sayıda dosya olduğunda mantıklı bir işlem olacaktır.
Lazres
resourcedosyam.lrs dosyalistesi.txt
Bundan sonraki
aşamada programımız içinden bilgisayarımızda istediğimiz
herhangi bir yere bu iki kitap1.xlsx ve Dokuman1.odt dosyalarımızı
oluşturalım.
* Lazarusu açıyoruz
* Yeni bir boş
proje oluşturuyoruz.
* unit1.pas
dosyasının uses kısmına “Lresources” ifadesini ekliyoruz.
* unit1.pas
dosyasının en altındaki “end.” ifadesinden önce
initialization
{$I
resourcedosyam.lrs}
ifadesini ekliyoruz.
* formun üzerine
bir buton atalım ve onclick olayına aşağıdaki ifadeleri yazalım.
procedure
TForm1.Button1Click(Sender: TObject);
var
SList:
TStringList;
Res:
TLResource;
Veri:
String;
begin
Slist:=
TStringList.Create;
Res:=
LazarusResources.Find('Kitap1');
if
Res= nil then Raise Exception.Create('Kitap1 kaynakta yok');
Slist.Add(Res.Value);
Slist.SaveToFile('Kitap1.xlsx');
Slist.Clear; //Bunu iki satırı yapmak çoğu durumda karışıklıkları önler.
Res:= nil; //iki jpeg dosyasında sıkıntı oluşturduğunu görmüştüm. o yüzden bu iki satır önemli.
Res:=
LazarusResources.Find('Dokuman1');
if
Res= nil then Raise Exception.Create('Dokuman1 kaynakta yok');
Slist.Add(Res.Value);
Slist.SaveToFile('Dokuman1.odt');
Slist.Free;
end;
Bu kod
çalıştırıldığında exenin içine gömülü durumdaki 2 adet
kaynak dosyasını exenin bulunduğu yere müstakil olarak oluşturur.
Bunun yanında resource deki image dosyalarına erişim ve işlem
yapmak daha pratiktir. Aşağıdaki kaynakta bu işlem güzel bir
şekilde anlatılmıştır.
Kaynak:
*
http://wiki.freepascal.org/Lazarus_Resources