2010-03-10 9 views
7

Çalıştığım birimlerin çoğu bir Veri Modülüne güveniyor. Karşılaştığım en sinir bozucu şeylerden biri,Başka bir modül yüklenene kadar modül neden iptal edilemez?

Modül X'in başka bir modüle başvurduğunu belirten bir hata mesajıdır ve Modül Y yüklenene kadar kaydedilemez.

Şimdi, orada WriteRootStream çalışırken CheckNoFixups bu hatayı yükseltir neden çok iyi bir nedendir ve etkisinde bir metin dosyasını (ve umarım bu Catastrophic Failure nerede izledi değil ne kaydetmek için başarısız eminim Çalışmamı kaydedemediğim halde IDE'yi yeniden başlatmalıyım.) Ama iyi neden nedir?

Neden başka bir birim gibi çok çeşitli işlevler ve nesneler içeren bir metin dosyası açmadan kaydetme yapamıyorum? DataModule ile ilgili bu kadar özel olan bu, açık olana kadar üzerinde çalıştığım kaynağı kaydedemem, neden kullanım birimindeki diğer 45 birim de neden açık olmasın ki önemli değil?

DÜZENLEME: datamodule Bildirgesi 2007

Delphi var geçerli:

unit DataMD; 

TRepDataMod = class(TDataModule) 
... 
var 
    RepDataMod: TRepDataMod; 

cevap

1

datamodule açılan projenin parçası verileri referans formunuzda farkında nesneler değilse DataModule, referanslarını doğrulayamıyor ve bu yüzden mesajın geldiğini düşünüyorum.

Eski bir projeyi yeni bir Delphi sürümüne taşıdığımda veya yeni bir veritabanı bileşen kümesine geçerken bu mesajı gördüm. Normal şartlarda bu mesajla karşılaşmadım.

Önceki sürümlerde, iletiyi görmedim ve form/birim kaydedilebildi, ancak dfm'nizdeki referanslar sihirli bir şekilde silindi.

+0

Kulağa ilginç geliyor, eski projelerle aynı sorunu gördüm (hayal kırıklığı referansları), nasıl düzeltirsiniz? – Harriv

+1

@Harriv: Bulduğum tek yol, tezleri tasarım zamanında değil, kodlarda atamaktı. Bu her zaman başka bir şey yapmadı. Eğer bazı kaynak kontrollerini kullanıyorsanız, her zaman işlemden önce dfm dosyasının farkını kontrol etmelisiniz, bu yüzden en azından sorunu meydana geldiğinde tespit edebilir ve kaybolan çizgileri dosyanın önceki versiyonundan geri kopyalayarak kolayca düzeltebilirsiniz. İdeal bir çözüm de değil ... – dummzeuch

1

Aynı sorun var (Delphi 7).

Tüm uygulama boyunca kullanım için bir veri modülünde bir görüntü var. Bir sözdizimi hatası varsa, bir derlemeden sonra olur. IDE (pas) dosyasını açar ve hatayı düzeltebilirim. Dosyayı kaydetmeye çalışmak, bu mesajı gösterir ("Modül 'XXX", geçerli projede bulunmayan "YYY" modülüne bağlanır. Bağlantıları başka bir modüle nasıl çıkaracağınızı/yönlendireceğinizi biliyor musunuz? "). XXX dosyanın kendisi ve YYY veri modülüdür. numaralı datamodule projede yer alan ve bu soruya "Evet" cevabını vermek, dfm dosyasındaki tüm bağlantıları kaldıracaktır.

Tek çözüm, temel olarak pas dosyasını kaydedip dosyayı kapatacak olan "Hayır" a basmaktır - bu kez dosyanın kaydedilmesi gerekip gerekmediği sorusuna "Hayır" a basmak (pas aslında daha önceden kaydedilmişse)).

Zaten çeşitli çözümler denedim ama yine de mücadele ediyor.

0

Modül X, başka bir modüle referans verir ve Modül Y yüklenene kadar kaydedilemez.

Sadece "Y" girişleri için X.dfm (X.fmx) üzerine bakın.Onlarla ne yapmalı, bu senin seçimin.

0

DataModule'ün projenin bir parçası olduğundan emin olun. Sadece arama yoluna eklemek veya dpr dosyasına manuel olarak girmek için yeterli değildir. IDE üzerinden gidin ve DataModule'ı projeye ekleyin. Ayrıca, DataModule dfm kaynağının birim ile aynı ada sahip olduğundan emin olun.