AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Komische Fehlermeldung EConvertError
Thema durchsuchen
Ansicht
Themen-Optionen

Komische Fehlermeldung EConvertError

Ein Thema von Faber · begonnen am 12. Mai 2004 · letzter Beitrag vom 14. Mai 2004
Antwort Antwort
Faber

Registriert seit: 10. Okt 2003
7 Beiträge
 
#1

Komische Fehlermeldung EConvertError

  Alt 12. Mai 2004, 12:00
Ich habe eine Komponente geschrieben,
die einfacher nicht sein kann:

Delphi-Quellcode:
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;
Kann mir da jemand weiterhelfen????

So übergebe ich das Bitmap:

Delphi-Quellcode:
procedure TPluginScanner.TwainTwainAcquire(Sender: TObject;
  const Index: Integer; Image: TBitmap; var Cancel: Boolean);
begin
  BitmapComp.Bitmap := Image;
  Cancel := TRUE; {Only want one image}
end;
Danke schon mal !!!

[edit=sakura] [delphi]tags Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Faber

Registriert seit: 10. Okt 2003
7 Beiträge
 
#2

Re: Komische Fehlermeldung EConvertError

  Alt 12. Mai 2004, 12:03
Ist natürlich falsch, habe nur mal eine andere
Variante versucht...

Im Orginal steht das:

Delphi-Quellcode:
Procedure TBitmapComp.SetBitmap(Const ABmp : TBitmap);
Begin
  FBitmap.Assign(ABmp);
  """"""""""""""""""""""""""""""""""""""""" EConvertError TBitmap kann nicht TBitmap zugewiesen werden...
  HasChanged;
End;
Funktioniert aber auch nicht...

Ist übrigends unter Delphi 7 aufgetreten

[edit=sakura] [delphi]tags Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#3

Re: Komische Fehlermeldung EConvertError

  Alt 12. Mai 2004, 12:05
Hi,

damit ich in Zukunft Dir nicht hinterher rennen muss, ließ mal den einen Punkt - hättest eigentlich alle lesen sollen: 2.3.1 - Quellcode im Beitrag? So geht's

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Komische Fehlermeldung EConvertError

  Alt 12. Mai 2004, 20:54
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
  Mit Zitat antworten Zitat
Faber

Registriert seit: 10. Okt 2003
7 Beiträge
 
#5

Re: Komische Fehlermeldung EConvertError

  Alt 12. Mai 2004, 21:18
wieso ist eigendlich in der Windows Unit auch ein Typ
TBitmap definiert???

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;

**********************************************
Und hier in der Graphics Unit:
**********************************************

  TBitmap = class(TGraphic)
  private
    FImage: TBitmapImage;
    FCanvas: TCanvas;
  ...
Wenn ich ein TBitmap Objekt erzeuge und
die Reihnfolge: Graphics, Windows wähle,
hab ich ein Problem...
  Mit Zitat antworten Zitat
Benutzerbild von fred.reichbier
fred.reichbier

Registriert seit: 27. Apr 2004
154 Beiträge
 
#6

Re: Komische Fehlermeldung EConvertError

  Alt 14. Mai 2004, 15:43
probier mal die windows-unit in der uses-klausel auszulassen.
hoffe, ich konnte dir helfen.
Friedrich Weber
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Komische Fehlermeldung EConvertError

  Alt 14. Mai 2004, 16:56
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Komische Fehlermeldung EConvertError

  Alt 14. Mai 2004, 17:10
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz