2009-03-09 13 views
0

SDL 1.3 API'lerini kullanarak bir Delphi penceresinde bir veya daha fazla SDL işleme yüzeyini yerleştirmenize izin verecek basit bir bileşen yazmaya çalışıyorum. Sadece iyi bir şekilde derler ve kurar, ancak bileşeni form tasarımcısında kullanmaya çalıştığımda, nesne denetçisindeki özelliklerine erişmeye çalıştığımda, formu sakladığında veya bileşeni silip, bir tanesine yerleştirdiğimde AVs'yi yükseltir. form çalıştırmaya çalışırken bir bağlayıcı hatası verir: görünüşe göre DFM tam olarak hangi nedenle olursa olsun okuyamaz.Özel bileşenim neden AV'leri IDE'ye yükseltiyor?

DLL http://www.libsdl.org/tmp/SDL-1.3-dll.zip adresinde bulunabilir ve bileşenimin kaynak kodu karşıdan yüklenebilir here. SDL.pas bir JEDI-SDL başlık dosyasıdır; gerisi benim kendi kodum.

Bunun için AV'leri form tasarımcısında yükseltmek için bir neden göremiyorum. Dinamik olarak çalışma zamanında denetimi oluşturursam, herhangi bir kararlılık sorunum yok. Herkes buna bir bakabilir ve belki de temizlememe yardımcı olabilecek bazı geri bildirimler sağlayabilir mi?

cevap

14

Bunu kendiniz ayıklayabilirsiniz. Bileşeninizi içeren paket projeyi açın. Sonra Çalıştır | Parametrelerine gidin ve Ana Bilgisayar Uygulaması olarak IDE'nin kendisini girin. IDE'yi IDE içinden çalıştırın. Ardından AV'yi çoğaltmak için adımlarınızı tekrarlayın ve IDE durup nerede işlerin başarısız olduğunu göstermelidir. Normal hata ayıklama tekniklerini buradan kullanabilirsiniz.

+0

Tamam. Yayınlanan bölümden Bayraklar özelliğini kaldırdığımda sorun gider. IDE, temel Set tanımı için RTTI'yi aramaya çalıştığında boğuluyor. Ben yüklü tüm güncellemeleri ile Delphi 2009 çalıştırıyorum. Bu, '09'da kötü RTTI'yi bulduğum ikinci durumdur. QC'ye koyacağım. –

+0

Küme nasıl bildirilir? Sette kaç eleman var? Yalnızca en fazla 32 öğe içeren setleri yayınlayabilirsiniz. –

+0

TSdlWindowFlags = kümesi (sdlwFullscreen, sdlwOpenGl, sdlwShown, sdlwBorderless, sdlwResiz, sdlwMinimized, sdlwMaximized, sdlwInputGrabbed, dslwInputFocus, sdlwMouseFocus, sdwlForeign, sdlwForce32 = 31); Numaralandırmada 12 eleman, bu yüzden "int" bekleyerek bir C rutinine geçirebilirim. –

İlgili konular