![]() |
Objekte erzeugen in "normaler" Unit
Moin, Moin Zusammen.
Nach einigen Ratschlägen aus diesem Forum bin ich jetzt dabei eine sehr große Form-Unit "abzuspecken". Die Verkleinerung der Form-Unit erfolgt durch Auslagerung sinnvoller Codeblöcke in "normale" Units. Das ist zwar jetzt im Nachhinein recht umständlich, aber es funktioniert. Sogar die Übersicht wird deutlich besser. So weit so gut! Nun aber zu einem (für mich) seltsamen Verhalten von Delphi. In dieser "normalen" Unit kann ich ohne Probleme innerhalb einer Prozedur temporär mit Create eine Instanz einer Stringliste bilden, diese benutzen und abschließend wieder freigeben. Wenn ich aber in dieser "normalen" Unit temporär eine Instanz einer BitMap bilden möchte, dann bekomme ich schon beim compilieren die Fehlermeldung: "Objekt oder Klassentyp" erforderlich! Die Delphi-Hilfe zu dieser Fehlermeldung sagt mir leider gar nix :cry: Frage 1 : Warum funktioniert es mit der Stringliste, aber nicht mit der BitMap? Frage 2 : Was muss ich tun, um eine BitMap zu erzeugen? Gruß Ralph |
Re: Objekte erzeugen in "normaler" Unit
Wie erzeugst du das BitMap?
|
Re: Objekte erzeugen in "normaler" Unit
na, ganz normal mit
Delphi-Quellcode:
Gruß
procedure tralala;
var BM : TBitMap; begin BM:=TBitMap.Create; // und da wird schon gemeckert .. .. end; Ralph |
Re: Objekte erzeugen in "normaler" Unit
Was für ein Fehler?
|
Re: Objekte erzeugen in "normaler" Unit
Na, die oben genannte Compiler-Fehlermeldung "Objekt oder Klassentyp erforderlich"
|
Re: Objekte erzeugen in "normaler" Unit
[Glaskugel]
unit Graphics eingebunden? [/GlasKugel] |
Re: Objekte erzeugen in "normaler" Unit
Verlagere mal den Code in eine Klasse.
|
Re: Objekte erzeugen in "normaler" Unit
|
Re: Objekte erzeugen in "normaler" Unit
Jooooooooooooo, das war der Fehler!
Graphics war VOR Windows eingebunden, also die falsche Reihenfolge!!!!!!!! Vielen Dank an alle! Schönen Abend noch :hello: Gruß Ralph |
Re: Objekte erzeugen in "normaler" Unit
Versuche es mal so:
Delphi-Quellcode:
BM := Graphics.TBitMap.Create;
|
Re: Objekte erzeugen in "normaler" Unit
Hallo Popov,
schon alles "velmi dobre" die Units"Windows" und "Graphics" waren in der falschen Reihenfolge eingebunden - funktioniert jetzt! Danke! Gruß Ralph // edit: Habe deine Idee noch mal geprüft: Bei falscher Reihenfolge hilft das auch nicht. Es kommt dann die Compilerfehlermeldung "Inkompatible Typen: 'tagBITMAP'' und 'TBITMAP'". Ändere ich die Reihenfolge der Uniteinbindung (wie schon oben beschrieben) dann funktioniert deine Lösung natürlich auch! |
Re: Objekte erzeugen in "normaler" Unit
Hier ist die einfachste Möglichkeit die Unit Reihenfolge zu wechseln. Sollte es mal aber nicht möglich sein, kann man wie gezeigt auch den Namen der Unit davorschreiben. Und gelegentlich kommt es vor, daß es auch mal keine richtige Reihenfolge gibt. Passiert selten, passiert aber schon mal.
|
Re: Objekte erzeugen in "normaler" Unit
Zitat:
Code:
var
BM: Graphics.TBitMap; |
Re: Objekte erzeugen in "normaler" Unit
Moin, Moin!
Um die Sache zum Abschluß zu bringen: Lizardking und Popov haben natürlich absolut Recht. Mir war in dem Moment wo ich den PC ausgeschaltet habe eben dieses auch schon in den Sinn gekommen - selbstverständlich muss dann auch in der Variablendeklaration auf Graphics verwiesen werden. :oops: War wohl schon zu spät gestern Abend! Gruß Ralph |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz