Delphi Can

Orjinalini görmek için tıklayınız: {$} Nedir
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Merhabalar {$I+} Bu kodun ne oldugunu Merak Ediyorum{$I-} Negatif olunca hata vermiyor. Sanırım "I" IO ifade ediyor Genel anlamda {$} Bu deger Nedir Nicin kullanılır?

procedure TForm1.Btn_YukleClick(Sender: TObject);
var
 dosya: TextFile;
 satir_oku: string;
begin
{$I-} 
 Memo1.Clear;
 AssignFile(dosya,'oku.txt');
 Reset(dosya);
 while not Eof(dosya) do
 begin
   Readln(dosya, satir_oku);
   Memo1.Lines.Add(satir_oku);
 end;
 CloseFile(dosya);
end;
Bunlara Compiler Directive (Türkçe anlamı : derleyici emirleri) deniyor. Bunları kullanarak, belli bir kod aralığında derlemenin farklı şekilde yapılmasını sağlıyoruz. Hatta belli tanımlamaları kendimiz yaparak, kodun belli kısımlarını koşullara bağlı olarak derleme dışında bırak vb komutlar verebiliyoruz. Bu emirlerin bazılarını Project Options ekranındaki Delphi Compiler/Compiling sayfasında bu tür emirlerden bazılarını görürüz.
Code Inlining Control : Buradan işaretlediğimizde tüm kodlarda etkili olacaktır. Ancak bunun yerine kodun belli bir yerinde {$INLINE ON} deyip, işimiz bittikten sonra {$INLINE OFF} yapabiliriz. Aradaki kodlar bu özelliğe uygun olarak inline şeklinde yani assembly kodlar içerecek şekilde yazılabilir.
Ya da Optimization'ı kaldırırsınız, bu durumda derleyici hiç kullanılmayan satırları da derler. {$O+} veya {$O-}
Burada olmayan derleyici emirleri de var. Şu an hepsini hatırlayamıyorum, ama bir tanesi sizin sorduğunuz {$I+/-}
Bunların yanısıra
{$DEFINE XXXX}
{$UNDEF XXXX}
{$IFDEF XXXX}
{$ELSE}
{$ENDIF} gibi birçok komut da var.
Bunlar özellikle versiyon değişikliklerinde hata almamak için sık olarak kullanılır.
(21-02-2021, Saat: 02:39)mustafaozpinar Adlı Kullanıcıdan Alıntı: [ -> ]Bunlara Compiler Directive (Türkçe anlamı : derleyici emirleri). Bunları kullanarak, belli bir kod aralığında derlemenin farklı şekilde yapılmasını sağlıyoruz. Hatta belli tanımlamaları kendimiz yaparak, kodun belli kısımlarını koşullara bağlı olarak derleme dışında bırak vb komutlar verebiliyoruz. Bu emirlerin bazılarını Project Options ekranındaki Delphi Compiler/Compiling sayfasında bu tür emirlerden bazılarını görürüz.
Code Inlining Control : Buradan işaretlediğimizde tüm kodlarda etkili olacaktır. Ancak bunun yerine kodun belli bir yerinde {$INLINE ON} deyip, işimiz bittikten sonra {$INLINE OFF} yapabiliriz. Aradaki kodlar bu özelliğe uygun olarak inline şeklinde yani assembly kodlar içerecek şekilde yazılabilir.
Ya da Optimization'ı kaldırırsınız, bu durumda derleyici hiç kullanılmayan satırları da derler.  {$O+} veya {$O-}
Burada olmayan derleyici emirleri de var. Şu an hepsini hatırlayamıyorum, ama bir tanesi sizin sorduğunuz {$I+/-}
Bunların yanısıra
{$DEFINE XXXX}
{$UNDEF XXXX}
{$IFDEF XXXX}
{$ELSE}
{$ENDIF} gibi birçok komut da var.
Bunlar özellikle versiyon değişikliklerinde hata almamak için sık olarak kullanılır.
Çok Teşekur ederim.. Shy
Şöyle bir örnekde verebiliriz.. Tek satır kod ile hem android hemde ios uygulama yazıyorsunuz diyelim.
Yerel diskden bir dosya okuyacak yada yazacaksınız. Fakat ios ile androidin dosyalama adresleri farklıdır.. onun için kodunuzun android kısmının çalışacağı yerin başına ve sonuna:

{$IFDEF ANDROID}
   xxxxx
{$ENDIF}

iosun başına ve sonuna :

{$IFDEF IOS}
   xxx
{$ENDIF}


yazmanız gerekmektedir. yani derleyiciye tanımlama yapmanız gerekir.
(21-02-2021, Saat: 13:56)mcuyan Adlı Kullanıcıdan Alıntı: [ -> ]Şöyle bir örnekde verebiliriz.. Tek satır kod ile hem android hemde ios uygulama yazıyorsunuz diyelim.
Yerel diskden bir dosya okuyacak yada yazacaksınız. Fakat ios ile androidin dosyalama adresleri farklıdır.. onun için kodunuzun android kısmının çalışacağı yerin başına ve sonuna:

{$IFDEF ANDROID}
   xxxxx
{$ENDIF}

iosun başına ve sonuna :

{$IFDEF IOS}
   xxx
{$ENDIF}


yazmanız gerekmektedir. yani derleyiciye tanımlama yapmanız gerekir.

Yani Derleyici Kodları . Teşekurler.
Merhaba,
Aslında FMX platformunu bu denli cezbedici yapan da bu direktifler diyebiliriz.
“Bir defa yaz hepsinde derle” mantığının altında yatan yegane unsur bu olsa gerek. Windows platformuna ait bir kütüphaneyi kullanıp android için derlemek istediğinizde derleyici bu kütüphaneyi android için uyarlamaz onu android’den ayıklar. Bunu gerçekleştirmek içinde direktiflere başvurur.

“Tüm platformlara derleyebiliyor muyuz ?” sorusunun cevabı direktiflerde saklı. FMX platformunda direktifler vazgeçilmez unsurdur. Zaten istenilse de vazgeçilemezler. Tüm platformlara tek kodla program geliştirmek her ne kadar belirtilmese de / üzerinde durulmasa da sadece direktifler ile mümkün olabilir.

http://docwiki.embarcadero.com/RADStudio...ist)_Index
http://docwiki.embarcadero.com/RADStudio...n_(Delphi)
(22-02-2021, Saat: 22:23)Mr.Developer Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
Aslında FMX platformunu bu denli cezbedici yapan da bu direktifler diyebiliriz.
“Bir defa yaz hepsinde derle” mantığının altında yatan yegane unsur bu olsa gerek. Windows platformuna ait bir kütüphaneyi kullanıp android için derlemek istediğinizde derleyici bu kütüphaneyi android için uyarlamaz onu android’den ayıklar. Bunu gerçekleştirmek içinde direktiflere başvurur.

“Tüm platformlara derleyebiliyor muyuz ?” sorusunun cevabı direktiflerde saklı. FMX platformunda direktifler vazgeçilmez unsurdur. Zaten istenilse de vazgeçilemezler. Tüm platformlara tek kodla program geliştirmek her ne kadar belirtilmese de / üzerinde durulmasa da sadece direktifler ile mümkün olabilir.

http://docwiki.embarcadero.com/RADStudio...ist)_Index
http://docwiki.embarcadero.com/RADStudio...n_(Delphi)

Teşekürler : Shy
Buraya şunu da not düşelim. Sadece Multi platform için değil. Bir uygulamanız var ve bir müşterinize özel olarak aynı uygulama içinde özel bir işlem yaptınız. Bu özelliği duruma özel derlemek için de DEFINE ile tanımlama yapıp. IFDEF ile kontrol ederek derleme yapabilirsiniz.

Bu durum complier özelliği dir. Yani derleyciniz (sadece Delphi olarak düşünmeyin) bu imkanı sağlıyorsa gerekli dokümanını inceleyerek özel derleme durumları oluşturabilirsiniz.
(23-02-2021, Saat: 12:18)3ddark Adlı Kullanıcıdan Alıntı: [ -> ]Buraya şunu da not düşelim. Sadece Multi platform için değil. Bir uygulamanız var ve bir müşterinize özel olarak aynı uygulama içinde özel bir işlem yaptınız. Bu özelliği duruma özel derlemek için de DEFINE ile tanımlama yapıp. IFDEF ile kontrol ederek derleme yapabilirsiniz.

Bu durum complier özelliği dir. Yani derleyciniz (sadece Delphi olarak düşünmeyin) bu imkanı sağlıyorsa gerekli dokümanını inceleyerek özel derleme durumları oluşturabilirsiniz.

Teşekurler ...
Sizden Rica Etsem Küçük Bir örnek Verseniz.?
(23-02-2021, Saat: 12:42)woywod Adlı Kullanıcıdan Alıntı: [ -> ]
(23-02-2021, Saat: 12:18)3ddark Adlı Kullanıcıdan Alıntı: [ -> ]Buraya şunu da not düşelim. Sadece Multi platform için değil. Bir uygulamanız var ve bir müşterinize özel olarak aynı uygulama içinde özel bir işlem yaptınız. Bu özelliği duruma özel derlemek için de DEFINE ile tanımlama yapıp. IFDEF ile kontrol ederek derleme yapabilirsiniz.

Bu durum complier özelliği dir. Yani derleyciniz (sadece Delphi olarak düşünmeyin) bu imkanı sağlıyorsa gerekli dokümanını inceleyerek özel derleme durumları oluşturabilirsiniz.

Teşekurler ...
Sizden Rica Etsem Küçük Bir örnek Verseniz.?

Bu durumda şöyle oluyor, tüm müşteriler için kod aynı olur (yani tek kod) ama Exe'si farklı olur (yani çok Exe). Farklı kodları tutmak, bakımını yapmak gerçekten çok zor iş. Tek bir kod olması tabii ki çok işe yarar.
Sayfalar: 1 2