![]() |
Mysteriöser Fehler
Delphi-Quellcode:
In einem neuen Projekt geht das wunderbar. In meiner Anwendung allerdings nicht. :kotz: Delphi meldet
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; Bild: TBitMap; const Pfade: array[0..2] of string = ('1.bmp', '2.bmp', '3.bmp'); begin Bild := TBitMap.Create; //Hier ist Zeile 283 for i := 0 to 2 do begin Bild.LoadFromFile(Pfade[i]); Imagelist1.AddMasked(Bild, clNone); end; Bild.Free; end; [Error] Unit1.pas(283): Object or class type required Die Variablen sind nicht andersweitig deklaruert, die units sind eingebunden. Bin ich blöd? :wiejetzt: |
Moin,
also bei mir geht die Prozedur wunderbar. Keine Compiler Meldung, keine zur Runtime... Grüsse, Daniel :hi: |
Hi Nailor,
Zitat:
Gruß Hansa |
Wenn ich eine neue Anwendung starte, einen Button und eine Listbox reinpack, dann geht das auch ohne Fehler. Wenn ich dann aber haargenau den gleichen Code in eine Anwendung von mir übernehmen will, dann passiert genau der komische Fehler von wegen
"Object or class type required ". Dann hab ich vermutet, dass vielleicht eine der Variablen falsch inizialisiert wird oder andersweitig vergeben ist. Ersteres kann ja nicht sein, weil egal wäre, was drinstände, zweiteres hab ich überprüft und ist nicht der Fall. Neustart hilft nicht! |
Hallo!
Der Compilerfehler deutet auf eine fehlende bzw. fehlerhafte Deklaration hin. Kann es sein, daß Du die Unit "Graphics" nicht in Deinem Programm eingebunden hast oder in einer Unit die tBitMap überschreibt? Wenn Graphics drin ist: Versuch macht kluck, also schreibe mal
Delphi-Quellcode:
Wenn es dann klappt, hast Du in irgendeiner Unit eine neue tBitMap definiert und die wird dann genommen!
Bild := Graphics.TBitMap.Create;
Gruß Dietmar Brüggendiek |
Ich hab zwar keine Units eingebunden (manuell), und auch andersweitig nicht umdeklariert. Ich werde es mal testen. Meinst du dass irgendwie die graphics-unit schaden genommen hat (zb. von scandisc gefleddert?)
|
Moin,
ich habe nur die Prozedur genommen, dann Ctrl+F zum komplizieren, dabei ist kein Fehler aufgetreten. Die Unit Grphics wird ja automatisch eingebunden, wenn diese in Deiner anderen Anwendung noch nicht vorhanden ist, dann wirds an dem liegen, wobei ich es mir nicht ganz vorstellen kann, denn Delphi bindet die beim komplizieren immer automatisch ein. Das gleiche gilt auch für die Unit ImgList. Grüsse, Daniel :hi: |
graphics.tbitmap.create --->
[Error] Unit1.pas(283): Incompatible types: 'tagBITMAP' and 'TBitmap' tbitmap.create ---> [Error] Unit1.pas(283): Object or class type required |
Hallo!
Zitat:
Gruß Dietmar Brüggendiek |
Hi,
Zitat:
Gruß Hansa |
Es sind 292 Zeilen. Da ist kein anders i, kein Bild, kein TBitmap. NIX!
|
Hallo!
Hurra - Lösung! :firejump: Ich hab's mal in meinem laufenden Projekt auf dem 2. Rechner reingehauen und bekam auch die Fehlermeldungen wie bei Dir! Mit der Deklaration
Delphi-Quellcode:
funktionierte es dann!
Bild: Graphics.TBitMap;
Offensichtlich enthält irgendeine Unit, die eingebunden wird, etwas, worüber der Compiler stolpert. Mit o.a. Code zwingst Du ihn, die Deklaration aus Graphics zu nehmen und nicht die ihm aus der Uses-Folge nächstgelegene. Zumindest bei mir lies sich das Prob damit lösen! Gruß Dietmar Brüggendiek |
Hi,
trotzdem sieht das da mir nach einem Problem mit globalen / lokalen Variablen hin. Das kann sehr knifflig werden. :angle2: Gruß Hansa |
thx a lot!!! :D
Aber ich bin mir !!!ganz!!! sicher an meinem Delphi nichts verändert zu haben. Hast du auch rausgefunden, wann man graphics braucht (wie bei dem Prob) und wann nicht (neue Anwendung)? |
Hi,
Zitat:
Gruß Hansa |
Ich habe eine Unit mit ca. 5 Variablen. So blöd bin ich doch auch nicht, dass ich da eine doppelt nehme.
Und als ob Brüggendiek den gleichen Mist bauen würde. Soviel Zufall ist eher unwarscheinlich! |
Zitat:
Delphi-Quellcode:
{ Bitmap Header Definition }
PBitmap = ^TBitmap; {$EXTERNALSYM tagBITMAP} tagBITMAP = packed record bmType: Longint; bmWidth: Longint; bmHeight: Longint; bmWidthBytes: Longint; bmPlanes: Word; bmBitsPixel: Word; bmBits: Pointer; end; TBitmap = tagBITMAP; {$EXTERNALSYM BITMAP} BITMAP = tagBITMAP; |
Ich glaubs nicht! Ich hab die Klauseln vertauscht und es läuft ohne graphics.blabla
Wo käm man nur ohne so ein Forum hin? Da kommt doch kein normaler Mensch von allein drauf! |
Zitat:
|
Damit hast du dich stillschweigend als normalen Menschen durchmogeln wollen! :wink:
|
Hi,
Zitat:
Gruß Hansa |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 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