Önerim, sınıf yapısı ile kod çeşitliliği sağlamak yönündedir.
Avantajları
1. ortak fonksiyon/procedure kullandırabilirsiniz
( web çağrı, string fonksiyon, db fonksiyon vb. ortak olabilir)
2. Yönetim için bağımsız fonksiyon /proc yazabilir bunlar içerisinden ortak veya lazım oldukça istemci fonksiyon /procedure kullanabilirsiniz
3 Client için bağımsız fonksiyon / procedure yazabilir, ortak veya server procedure / function kullandırabilirsiniz.
Create zamanı (construction) exenin ne olduğuna bakıp sınıfı farklılaştırabilirsiniz.
(22-08-2023, Saat: 22:45)mrmarman Adlı Kullanıcıdan Alıntı: [ -> ]Önerim, sınıf yapısı ile kod çeşitliliği sağlamak yönündedir.
Avantajları
1. ortak fonksiyon/procedure kullandırabilirsiniz
( web çağrı, string fonksiyon, db fonksiyon vb. ortak olabilir)
2. Yönetim için bağımsız fonksiyon /proc yazabilir bunlar içerisinden ortak veya lazım oldukça istemci fonksiyon /procedure kullanabilirsiniz
3 Client için bağımsız fonksiyon / procedure yazabilir, ortak veya server procedure / function kullandırabilirsiniz.
Create zamanı (construction) exenin ne olduğuna bakıp sınıfı farklılaştırabilirsiniz.
Cevabınız için teşekkür ederim,
bilgiye erişim noktasında uğraştırıcı da olsa, çözüm gayet basit idi,
Project -> Options -> Building -> Delphi Complier -> Conditional defines bölümüne kullandığım her bir exe ye özel tanım ekledim,
daha sonra bu tanımları her prosedür veya uses bölümünü kapsayacak şekilde eklediğimde, projeye özel kod ve uses alanlarım oluşmuş oldu.
kullanmak isteyen arkadaşlar olursa bilgilerine sunarım.
@
YILDIRIMBEY
Bir hatırlatma :
Win32 / Win64 / Debug / Release tercih değişikliklerinde bu define kısmındaki tanımları tazelemeyi ihmal etmeyin.
@
mrmarman Teşekkürler hocam, değişiklikleri "All Configurations" olarak yapmıştım zaten

//
// veteran
// 24-08-2023
//
uses
System.SysUtils;
const
AppType_ERP = 'ERP';
AppType_ERPSYS = 'ERPSYS';
AppType = AppType_ERPSYS;
begin
{$IF AppType = AppType_ERP}
WriteLn( 'ERP' );
{$ELSEIF AppType = AppType_ERPSYS}
WriteLn( 'ERPSYS' );
{$ELSE}
WriteLn( '???' );
{$IFEND}
ReadLn;
end.
@
veteran
Bu verdiğiniz örnek tam olarak açıklamıyor. Çünkü normal if ile yazsanız aynı sonucu vermeyecek mi ?
Şu şekilde örneklersek kapsamını daha iyi ifade ederiz diye değerlendiriyorum.
Örneğin aşağıda
1.
Uses altında
iki farklı unit iki farklı duruma göre alternatifli olarak tanımlanmış oldu.
* Hangi durumdaysa diğeri henüz derlenirken dahi yok sayılacaktır.
2. Aynı
TForm1.BitBtn1Click olayını bir defa tanımladık ama iki defa içerik oluşturduk.
Derleyici bunlara hata vermeyecektir, duruma göre pozisyon alacaktır.
Tümüyle örneklemek içindir. Anlam yüklemeyelim ...
{$define ERP}
uses
{$if defined(win32)}
FireDac.Phys.MongoDB, // Win32 ise MongoDB kullan
{$elseif defined(win64)}
FireDac.Phys.MSSQL, // Win64 ise MSSQL kullan
{$ifend}
System.DateUtils;
{$if defined(win32)}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
{$if defined(ERP)}
Showmessage('ERP ve Win32 Projesidir');
{$else}
Showmessage('Standart ve Win32 Projesidir');
{$ifend}
end;
{$else}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
{$if defined(ERP)}
Showmessage('ERP ve Win64 Projesidir');
{$else}
Showmessage('Standart ve Win64 Projesidir');
{$ifend}
end;
{$endif}
(24-08-2023, Saat: 21:54)mrmarman Adlı Kullanıcıdan Alıntı: [ -> ]@veteran
Bu verdiğiniz örnek tam olarak açıklamıyor. Çünkü normal if ile yazsanız aynı sonucu vermeyecek mi ?
Şu şekilde örneklersek kapsamını daha iyi ifade ederiz diye değerlendiriyorum.
Örneğin aşağıda
1. Uses altında iki farklı unit iki farklı duruma göre alternatifli olarak tanımlanmış oldu.
* Hangi durumdaysa diğeri henüz derlenirken dahi yok sayılacaktır.
2. Aynı TForm1.BitBtn1Click olayını bir defa tanımladık ama iki defa içerik oluşturduk.
Derleyici bunlara hata vermeyecektir, duruma göre pozisyon alacaktır.
Tümüyle örneklemek içindir. Anlam yüklemeyelim ...
{$define ERP}
uses
{$if defined(win32)}
FireDac.Phys.MongoDB, // Win32 ise MongoDB kullan
{$elseif defined(win64)}
FireDac.Phys.MSSQL, // Win64 ise MSSQL kullan
{$ifend}
System.DateUtils;
{$if defined(win32)}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
{$if defined(ERP)}
Showmessage('ERP ve Win32 Projesidir');
{$else}
Showmessage('Standart ve Win32 Projesidir');
{$ifend}
end;
{$else}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
{$if defined(ERP)}
Showmessage('ERP ve Win64 Projesidir');
{$else}
Showmessage('Standart ve Win64 Projesidir');
{$ifend}
end;
{$endif}
Sayın @
mrmarman, emeğinize sağlık. Tebrikler
Kod, "if" ifadesi gibi çalışmaz "$IFDEF" ifadesi gibi çalışır: [
attachment=2390]
Yazdıklarınızı bildiğini varsayarak (ki temel olarak bilinmesi gerekiyor) alternatif bilgi sundum sadece

Mesajımı okumamış ön yargılı yazmışsınız. Sizi üzdüysem kusura bakmayın.
Sadece verdiğiniz örnekte çalışır çalışmaz demek istemedim.
Verdiğiniz örnek içerisinde conditional if/else/end ile normal if / then arasındaki olan farkını bu başlığı okuyanlar için açıklayıcı bulmadığımı ifade ettim.
Onun için vakit ayırıp daha genel bir örnek ile tamamlamayı istedim.
Bu sayede daha ileri bir düzeyde cevap yazma ihtiyacı duydunuz bu da haklı olduğumu gösteriyor sanki... Üzdüğüm için tekrar özür dilerim.
(24-08-2023, Saat: 22:17)mrmarman Adlı Kullanıcıdan Alıntı: [ -> ]Mesajımı okumamış ön yargılı yazmışsınız. Sizi üzdüysem kusura bakmayın.
Sadece verdiğiniz örnekte çalışır çalışmaz demek istemedim.
Verdiğiniz örnek içerisinde conditional if/else/end ile normal if / then arasındaki olan farkını bu başlığı okuyanlar için açıklayıcı bulmadığımı ifade ettim.
Onun için vakit ayırıp daha genel bir örnek ile tamamlamayı istedim.
Bu sayede daha ileri bir düzeyde cevap yazma ihtiyacı duydunuz bu da haklı olduğumu gösteriyor sanki... Üzdüğüm için tekrar özür dilerim.
Değerli @
mrmarman, şartlı direktifler (conditional directions) her programcı tarafından bilinmesi gereken konuların başında geliyor. Açıklamamın sebebi, şartlı direktiflerin derleyici tarafında etkisini de göstermektir. Kısaca; bir şartlı direktif gerçeklenebiliyorsa sadece o direktifin kapsadığı alan içerisindeki kodlar derleyici tarafından değerlendirilir. Diğerleri ise göz ardı edilir. Ümit ederim değerli okuyucuların dikkatini bu konuya çekebilmiş ve faydalı olabilmişizdir.
Nezaketiniz ve açıklayıcı örneğiniz için teşekkür ederim.