Compiler

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Compiler

Mesaj gönderen m_ekici »

s.a.
aynı isimde iki kod dosyası var. Derleme yaparken Test ortamında çalışacak prg. için 1.dosyayı, gerçek ortamda çalışacak prg. için 2.dosyayı projeye dahil ederek derlemesini nasıl sağlarız?

iyi çalışmalar
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Compiler

Mesaj gönderen aslangeri »

inc dosyları ve compiler direktiflerini kullanarak yapabilirsin.

Kod: Tümünü seç

{$define test} //bunu unitin en başına yaz...

{$ifdef test}
buraya test ortamında çalışacak kodlar
{$else}
buraya test haricinde çalışacak komutlar
{$endif}

birden fazla unitte bu test tanımlaması yapman gerekirse {$define test} kısmını not defterinde yazıp test.inc ismi ile (farklı bir isimde olabilir) projenin (dpr dosyasının) olduğu dizine kaydet.
sonra test karşılaştırmasını yapacağın unitlerin başına

Kod: Tümünü seç

{$I test.inc}
yaz. bu şekilde test.inc dosyasının içindekileri tüm unitlere eklemiş olursun.
test tanımlamasını değiştirmek istediğin zaman inc dosyasının içindeki tanımlamayı değiştirmen yeterli olur. öbür türlü tüm sayfalarda tek tek değiştirmen gerekir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Re: Compiler

Mesaj gönderen undefined »

Delphide Project optionstan farklı build configürasyonları oluşturabilirsiniz. Delphi 2007 için en azından böyle önceki versiyonlarda durum neydi hatırlamıyorum.
Test ortamında çalışacak olan konfigürasyonun Conditional Defines kısmına TESTSURUMU yazın. Eğer birden çok olacaksa ; ile ayırın.
Sonra uses kısmına şu şekilde unitleri ekleyin.

Kod: Tümünü seç

{$IFDEF TESTSURUMU} dosya1 {$ELSE} dosya2 {$ENDIF}
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Compiler

Mesaj gönderen m_ekici »

tşk
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Compiler

Mesaj gönderen sabanakman »

İyi günler. Farklı kod dosyaları için undefined'ın söylediği şekilde yapmak uygun olanı. Bu derleyici bildirimi pascal'dan bu yana hep desteklenmektedir. Buna ek bilgi olarak programın delphiden çalışırken başka, normal çalışırken başka davranması isteniyorsa aşağıdaki gibi bir fonksiyon işe yarayacaktır. Verdiğim bilgi bu soru için işinize yaramasa da bir ip ucu olarak faydası vardır :wink: .

Kod: Tümünü seç

function Delphiden:Boolean;
begin
  Result:=DebugHook <> 0;
end;
örnek kullanımı ise

Kod: Tümünü seç

if Delphiden then DataDir:='c:\TestData\' else DataDir:=ExtractFilePath(Application.Exename)+'Data\';
şeklinde olabilir. Örneğe göre program F9 ile çalıştırıldığında veri klasörü olarak "c:\TestData\" olmakta fakat normal çalıştığında ise program dosyası ile aynı yerde bulunan "Data" klasör yerinin değerini almaktadır. Bu ve benzeri kullanım biçimleriyle gayet pratik çalışma yapılabilmektedir. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla