Orjinal dosyayi yeniden derlemek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Orjinal dosyayi yeniden derlemek

Mesaj gönderen ikra »

Delphi ile gelen vcl dosyalarinda degisiklikler yapip bunu standart hale getirmek icin tekrar derlemem gerekiyor.
Örnegin TForm nesnesi icin yeni property'ler eklemeliyim.
Bu konuda fikri olan var mi?
kıdemsiz üye
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen mussimsek »

Orjinal dosyalarda değişikliği çok tavsiye etmem.

Delphi'de bu tarz durumlar için inheritance denen bir olay var. OOP programlama dillerinin hepsinde var. Kendiniz bir base yapıp, buradaki formlara gerekli değişiklikleri, kodları yazarsınız. Diğer formlarınızı bunlardan inherit edersiniz.

Kolay gelsin.
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen ikra »

cevap icin tesekkür ederim.
bugüne kadar bu yöntemi kullaniyordum fakat orjinal dosyalarda oynama yapma konusunda israrciyim.
dcc32 ile forms.pas dosyasini yeniden derleyip lib klasörüne atmis olmama ramen, degisiklikleri ide üzerinde göremiyorum.
nerede hata yapiyorum? yada neyi eksik yapiyorum?
kıdemsiz üye
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen SimaWB »

Ben de tavsiye etmiyorum.
Ama ısrar ediyorsanız; en azından değişiklik yapacağınız dosyaları proje klasörünüz içine kopyalayıp orada değişiklik yapın.
Derleyici ilk olarak proje klasörüne bakacağı için bu dosyaları kullanacaktır ve böylece değişiklikler sadece o proje için geçerli olacaktır.
There's no place like 127.0.0.1
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen ikra »

hocam görsel degisiklikler yapmaya calisiyorum. örnegin TForm'a property ekliyorum ve bunu ide'de görmem gerekiyor. propertyeditör'ler ekleyecegim.
kıdemsiz üye
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen freeman35 »

Delphi ye ait paslar da değişiklik sıkıntı, sadece pası derlemen yetmez, ilgili BPL lide değiştirmen gerek. componentlar dcu yani unit değil bpl olarak yüklenir. Yapman gereken, MyForm = TForm şeklinde yeni class türetmen. orjinal componentları değiştirmen, bunları kullanan diğer component leride değiştirmen, yada yeniden derlemen demektir. Bu da oldukça büyük karmaşa.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen ikra »

senin imzandaki yazi ile yola ciktim... biraz zaman alacak : )
kıdemsiz üye
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen ikra »

haklisin. ilgili bpl'yi yeniden olusturup kurmam gerek. bunun icin dpk yapisina ihtiyacim var.
nasil bir yol izlemem gerekiyor? google tikandi.
kıdemsiz üye
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: Orjinal dosyayi yeniden derlemek

Mesaj gönderen sabanakman »

İyi günler. En şık çözüm TForm'dan türeyen kendi sınıflarını geliştirmen olacaktır. Asla delphinin kökeninde değişiklik yapmamak lazım. Zira yeni bileşen kurarken ya da başka (yeni) delphi versiyonuna geçerken aynı kabusu baştan tekrar tekrar yaşamak zorunda kalırsınız. Eğer projeye hiç bir zaman bileşen eklenmeyecek, asla delphi sürümü yükseltmeyecek ve diğer geliştirilecek tüm projelerinizde de aynı durumu sağlayacaksanız bu işlem keyfi olarak yapılabilir ama teknik olarak bu yolun sonu pek de iyi yere çıkmamaktadır. O yüzden arkadaşlar bu konuda ısrar etmekte.

Buna rağmen bahsettiğiniz işlemi yapmak niyetindeyseniz kullandığınız delphi sürümüne göre yeni bpl oluşturmalısınız. Mesela TForm sınıfı yanlış hatırlamıyorsam vcl???.bpl içerisinde olması lazım. Muhtemelen vcl.dpk içeriği ile alakalı biraz araştırma ya da delphi üzerinde inceleme yaparsanız çözebilir ve kendi paketinizi oluşturabilirsiniz. Sarf edilmesi gereken efor pek de az olmayacaktır (ayrıca bu işin getirisi, götürdüğünün yanında yok hükmünde diyebilirim). Eğer vcl250.bpl yi oluşturduğunuz vcl.dpk üzerinden derleyebilirseniz önceki bpl leri temizleyip yerine bunu koymayı da atlamamak gerekiyor. Ayrıca vcl???.bpl'ye bağlı tüm diğer paketleri de bu yeni oluşan pakete göre yeniden derlemek gerekiyor ki işin çığrından çıktığı nokta burasıdır. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen ikra »

cevap icin tesekkür ederim.
vcl dosyasini recompile edebilmem icin tüm bilesen setini property editörleri ile birlikte register edebilecegim unitler yazmam gerekiyor.
bu da delphi'yi sifirdan programlamaktan farksiz.
ben bilmedigim, daha baska bir yöntem olabilir diye düsünmüstüm.
kıdemsiz üye
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen freeman35 »

Bizim ısrarımızda bu yüzden di :) bu istediğini lazarusta yapma şansın olabilir. Ama onda da karışıklık ihtimali çok yüksek. Neden buna ihyiyaç duyuyorsun ?
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen ikra »

Anlatmaya calisayim.
TForm nesnesine eksik gördügüm yada isimi kolaylastirabilecek Property ve PropertyEditörler yazmayi düsündüm.
Mesela Form'u cift tiklayinca IBExpert gibi bir pencere neden acilmasin?
DataSet, DataSource eklemek yerine, CollectionItems gibi tek tus ile DataSet eklemek, Sql'leri manage etmek, hem isimi kolaylastirir, hem de program üzerindeki hakimiyetimi güclendirir.
Akabinde Atom yapisinda degisiklige gidecegim. Bi ara epey ugrasmistim bu konuyla ve ilerleme kaydetmistim.
kıdemsiz üye
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Orjinal dosyayi yeniden derlemek

Mesaj gönderen freeman35 »

Sen tform un üzerinde yapacağım diyorsun bizse tformdan tmyform türet diyoruz. Aramızda anlaşamadığımız kısım burda başlıyor, uygulamana yeni form eklemek istediğinde IDE ye tfom ekle diyorsun, ama aynı menüde tmyform da yani kendi template lerinide ekliyebiliyorsun. bundan sonrasıda zaten aynı. yapabiliyorum demek için doğru sourcelar olduktan sonra uğraş ve vakit kaybederek oldurulur. Ama buna neden gerek olsun? yani kaybedilen vakte değer mi? ilk mesajın 9 temmuz bugün 15 ve hala istediğin olmadı ben bu kısımdayım bu kadar vakit kaybına değer mi?
Şimdi IDE yi açtımda ilk cümlemde bahsettiğimin tam adı Repository. Datamodule yada TForm üzerinde sağ click te altlarda çıkan "Add to repository..." diye bir menü item var. Bu o form yada datamodülü olduğu gibi yani üzerindekiler ve kodlarıyla beraber repository ye ekler. Daha sonra bunu IDE den ekle dersen bunu olduğu gibi projene yeni bir form yada datamodüle gibi ekler.
Ben bunu Formlarımın standart hallerini, yani kapat kaydet grid query vs gibi sabit component ve bileşenleri eklemiştim. ama sonra gözünü seveyim OOP un :D son projemden bi örnek

Kod: Tümünü seç

type
  TFRM_Grup_Tanim = class(T_FRM_CED) //T_FRM_CED başka bir ata form :D
    GRD_: TUniDBGrid;
    procedure UniFormCreate(Sender: TObject);
....
  public
     procedure Set_SQL; override;
     procedure Hazirla(mnu_Item: TUniMenuItem = nil); override;
  end;
  type TFRM_Stok_grp = class(TFRM_Grup_Tanim)end;
  type TFRM_Cari_grp = class(TFRM_Grup_Tanim)end;
  type TFRM_Pers_grp = class(TFRM_Grup_Tanim)end;
  type TFRM_GeGi_tnm = class(TFRM_Grup_Tanim)end;
  type TFRM_Depo_tnm = class(TFRM_Grup_Tanim)end;
Yukarıda 6 tane birbirinden bağımsız form var
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla