2009-03-09 3 views
0

Ich versuche, eine einfache Komponente zu schreiben, mit der Sie eine oder mehrere SDL-Renderingoberflächen in einem Delphi-Fenster einbetten können, indem Sie die SDL 1.3-APIs verwenden. Es kompiliert und installiert einfach gut, aber wenn ich versuche, die Komponente im Formular-Designer zu verwenden, löst es AVs immer wenn ich versuche, auf seine Eigenschaften im Objektinspektor zuzugreifen, das Formular zu speichern, oder die Komponente zu löschen und auf einem zu platzieren Formular, dann versucht zu laufen gibt einen Linker-Fehler: es kann offenbar den DFM aus irgendeinem Grund nicht richtig lesen.Warum erhöht meine benutzerdefinierte Komponente AVs in der IDE?

Die DLL finden Sie unter http://www.libsdl.org/tmp/SDL-1.3-dll.zip und der Quellcode zu meiner Komponente kann here heruntergeladen werden. SDL.pas ist eine JEDI-SDL-Header-Datei; der Rest ist mein eigener Code.

Ich sehe keinen Grund dafür, AVs im Formular-Designer zu erhöhen. Wenn ich das Steuerelement zur Laufzeit dynamisch erstelle, habe ich keine Stabilitätsprobleme. Kann mir jemand das ansehen und vielleicht ein Feedback geben, das mir helfen könnte, es aufzuklären?

Antwort

14

Sie können dies selbst debuggen. Öffnen Sie das Paketprojekt, das Ihre Komponente enthält. Dann gehen Sie zu Run | Parameters und geben Sie die IDE selbst als Host-Anwendung ein. Führen Sie die IDE aus der IDE aus. Wiederholen Sie dann Ihre Schritte, um den AV zu reproduzieren, und die IDE sollte aufhören und Ihnen zeigen, wo die Dinge versagen. Sie können von dort aus normale Debugging-Techniken verwenden.

+0

OK. Das Problem verschwindet, wenn ich die Flags-Eigenschaft aus dem veröffentlichten Abschnitt entferne. Die IDE drosselt, wenn sie versucht, die RTTI nach der zugrunde liegenden Set-Definition zu durchsuchen. Ich verwende Delphi 2009 mit allen installierten Updates. Dies ist der zweite Fall, den ich im Jahr 2009 von schlechtem RTTI gefunden habe. Ich werde es in QC setzen. –

+0

Wie wird der Satz deklariert? Wie viele Elemente im Set? Sie können nur Sets veröffentlichen, die nur bis zu 32 Elemente enthalten. –

+0

TSdlWindowFlags = Menge von (sdlwFullscreen, sdlwOpenGl, sdlwShown, sdlwBorderless, sdlwResizable, sdlwMinimized, sdlwMaximized, sdlwInputGrabbed, dslwInputFocus, sdlwMouseFocus, sdwlForeign, sdlwForce32 = 31); 12 Elemente in der Aufzählung, in Handarbeit gemacht, damit ich es an eine C-Routine übergeben kann, die ein "int" erwartet. –

Verwandte Themen