Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
{$} Nedir
#1
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;
Cevapla
#2
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.
Cevapla
#3
(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
Cevapla
#4
Şö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.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#5
(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.
Cevapla
#6
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)
Cevapla
#7
(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
Cevapla
#8
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.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#9
(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.?
Cevapla
#10
(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.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Excel Veri Okuma Yöntemi Tercihiniz Nedir? pro_imaj 12 1.139 11-11-2020, Saat: 22:14
Son Yorum: anemos
  Kodun anlaşılabilirliği için nasıl bir yol izliyorsunuz standartlarınız nedir ? boreas 9 3.646 05-12-2018, Saat: 17:38
Son Yorum: cinarbil
  Youtube için kesin çözüm nedir Lord_Ares 20 8.229 24-02-2018, Saat: 08:47
Son Yorum: Lord_Ares
  Bu ifade nedir? savasabd 9 5.757 24-09-2017, Saat: 04:38
Son Yorum: The_aLiEn
  Nvarchar ve varchar farkı nedir? Mericx 1 1.966 24-01-2017, Saat: 10:49
Son Yorum: yhackup



Konuyu Okuyanlar: 1 Ziyaretçi