![]() |
Komische Fehlermeldung EConvertError
Ich habe eine Komponente geschrieben,
die einfacher nicht sein kann:
Delphi-Quellcode:
Kann mir da jemand weiterhelfen????
unit BitmapComp;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Dialogs; type TBitmapComp = class(TComponent) private { Private-Deklarationen } fChange : TNotifyEvent; { Custom Event } protected { Protected-Deklarationen } public { Public-Deklarationen } FBitmap : TBitmap; constructor Create(AOwner: TComponent); override; destructor Destroy; override; Procedure SetBitmap(Const ABmp : TBitmap); published { Published-Deklarationen } Procedure HasChanged; property Bitmap : TBitmap Read FBitmap Write SetBitmap; property OnChangeState : TNotifyEvent read fChange write fChange; end; procedure Register; implementation Constructor TBitmapComp.Create(AOwner: TComponent); Begin inherited Create(AOwner); FBitmap := TBitmap.Create; End; Destructor TBitmapComp.Destroy; Begin FBitmap.Free; inherited Destroy; End; Procedure TBitmapComp.SetBitmap(Const ABmp : TBitmap); Begin FBitmap.Canvas.Assign(ABmp.Canvas); HasChanged; End; Procedure TBitmapComp.HasChanged; Begin if Assigned(fChange) then OnChangeState(Self); End; procedure Register; begin RegisterComponents('Faber', [TBitmapComp]); end; end. Wenn ich nun aus einem anderen Programm ein Bitmap übergebe, bekomme ich folgende Fehlermeldung an dieser Stelle: Procedure TBitmapComp.SetBitmap(Const ABmp : TBitmap); Begin FBitmap.Canvas.Assign(ABmp.Canvas); """"""""""""""""""""""""""""""""""""""""" EConvertError TBitmap kann nicht TBitmap zugewiesen werden... HasChanged; End; So übergebe ich das Bitmap:
Delphi-Quellcode:
Danke schon mal !!!
procedure TPluginScanner.TwainTwainAcquire(Sender: TObject;
const Index: Integer; Image: TBitmap; var Cancel: Boolean); begin BitmapComp.Bitmap := Image; Cancel := TRUE; {Only want one image} end; [edit=sakura] [delphi]tags Mfg, sakura[/edit] |
Re: Komische Fehlermeldung EConvertError
Ist natürlich falsch, habe nur mal eine andere
Variante versucht... Im Orginal steht das:
Delphi-Quellcode:
Funktioniert aber auch nicht...
Procedure TBitmapComp.SetBitmap(Const ABmp : TBitmap);
Begin FBitmap.Assign(ABmp); """"""""""""""""""""""""""""""""""""""""" EConvertError TBitmap kann nicht TBitmap zugewiesen werden... HasChanged; End; Ist übrigends unter Delphi 7 aufgetreten [edit=sakura] [delphi]tags Mfg, sakura[/edit] |
Re: Komische Fehlermeldung EConvertError
Hi,
damit ich in Zukunft Dir nicht hinterher rennen muss, ließ mal den einen Punkt - hättest eigentlich alle lesen sollen: ![]() ...:cat:... |
Re: Komische Fehlermeldung EConvertError
Moin!
Irgendwas war mit dem TBitmap Properties und erstellen der TBitmap Instanz was man beachten musste. Ich schau morgen mal auf Arbeit nach wie das war, das habe ich mir aufgeschrieben, dann poste ich hier mal die Sache... MfG Muetze1 |
Re: Komische Fehlermeldung EConvertError
wieso ist eigendlich in der Windows Unit auch ein Typ
TBitmap definiert???
Delphi-Quellcode:
Wenn ich ein TBitmap Objekt erzeuge und
{ 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; ********************************************** Und hier in der Graphics Unit: ********************************************** TBitmap = class(TGraphic) private FImage: TBitmapImage; FCanvas: TCanvas; ... die Reihnfolge: Graphics, Windows wähle, hab ich ein Problem... |
Re: Komische Fehlermeldung EConvertError
probier mal die windows-unit in der uses-klausel auszulassen.
hoffe, ich konnte dir helfen. |
Re: Komische Fehlermeldung EConvertError
Moin!
Die in Windows definierte Struktur ist z.B. für die WinAPI Funktion CreateBitmap(). Da Delphi alle Strukturen vorne mit einem T definieren wurde die API Struktur BITMAP zu TBITMAP. Und Graphics definiert die TBitmap Klasse. Falls sich mal die Definitionen ins Gehege kommen und man die Klasse haben will, dann einfach die Graphics Unit als letztes in die Unit Liste schreiben (nach Windows), oder bei den Definitionen der TBitmap einfach immer ein Graphics. davor schreiben. MfG Muetze1 |
Re: Komische Fehlermeldung EConvertError
man sollte sich allgemein angewöhnen die "windows" unit als erstes aufzuführen. Ich hatte es schon paar mal das sich ein projekt nicht kompilieren lies mit diversen fehlermeldungen nur weil die "windows"-unit nicht als erste aufgeführt wurde und somit incompatible typen und falsche parameter-meldungen kamen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 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