Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
iki unitin birbirini uses etmesi
#11
(05-03-2019, Saat: 15:39)mustafaozpinar Adlı Kullanıcıdan Alıntı: İki unit'in birbirini Interface kısmında Uses ile kullanmasını sağlayamazsınız. Buna circular cross ref. hatası verir. Bunun yerine birinde diğerini Interface'de uses'e koyar, diğerini ise Implementation'da uses'e koyarsınız, çalışır. 

Organizayon şu şekilde olacaktır.
Unit Unit1;
Interface
uses Unit2;

 TMyClass1 = class
 public
   abc : TMyClass2;
 end;
Implementation
...
end.
Unit Unit2;
Interface 
Uses .... ;

  TMyClass2 = class
  public
    procedure xyz;
  end; 

Implementation
Uses Unit1;

procedure xyz;
var mc1 : TMyClass1;
begin
  mc1 := TMyClass1.Create;
  ...
end;
....
end.
Eğer ikisi de birbirine Interface kısmında ihtiyaç duyuyorsa tasarımınızı gözden geçirin ve ikisinin de birbirine görmesini gerektiren kısımları ayrı bir Unit'e alıp diğer unit'lerden bunu kullanın derim.

Bu öneriniz bile ehveni şer bence. İki unit'in mümkünse ne interface'inden ne implementation'ından bir birini çağırmaması çok daha sağlıklı olacaktır.

(05-03-2019, Saat: 15:15)salih Adlı Kullanıcıdan Alıntı:
(04-03-2019, Saat: 15:24)edo Adlı Kullanıcıdan Alıntı: Yaptığınız işlem ne yazık ki doğru değil. İki ekranın bir birine bağlanması, referans vermesi (cross reference) sorunlu bir işlemdir. Bu sorunu nasıl çözebileceğinizi düşünseniz daha doğru olur

Formu göstermeden Runtime'da create edip kullanmak doğru olur mu? Eğer doğru değilse bu ihtiyacı karşılamanın genel bir yolu var mıdır? Yani başka formdaki Componentleri kullanmanın bir standardı yok mudur?

Ne yapmaya çalıştığınızı daha net olarak yazarsanız her şeyin bir çözümü illaki vardır Smile Ayrıca mümkün mertebe metod'lara bileşen (component) değil veri ya da sınıf (class) geçin.
Cevapla
#12
Sayın edo, birbirini karşılıklı görememesi iyi değil kötüdür bence. Olanak olsun da programcı kullanmasın. 
C#'da namespace kullanılır ve aynı name space'e sahip ayrı kod dosyalarındaki kodlar birbirini doğrudan görebilir ve kullanabilirler. Bunun olanaklı olması, programlama ilkelerini uygulamamak anlamına gelmiyor. Tüm programcılar kendilerini geliştirmeliler. Ama ne yazık ki Delphi yazılımcılarında bunu çok daha  alt seviyelerde görüyorum. Bunun sebebini ise oluşmuş bir konsensüs olmamasına bağlıyorum. Bu konuda, maalesef birkaç şövalye dışında (Nick Hodges ve Daniel Teti en bildiklerim), Embarcadero'nun kadrolu MVP'leri bile bileşen tanıtımlarından öteye gitmeyen web semineri veriyorlar. Çünkü Delphi takipçileri bunu bekliyor. Örneğin herkes RAD deyip duruyor. Neyse ki Daniel Teti'nin şu video seminerini izledim de biraz içim soğudu: Modern Software Architecture. Burada kendi ekibinin hazırladığı basit bir MVVM oluşturma sistemini anlatıyor. Bu sistem UI ile business kısımlarını birbirinden ayırmayı ve test uygulamaları hazırlayabilmeyi olanaklı kılıyor.
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi