Ereignis Defnieren: warum meint der complier die typen unter

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Ereignis Defnieren: warum meint der complier die typen unter

Beitrag von pluto »

Hallo,
ich habe ein Ereignis Definiert wie immer, aber heute meint der Complier folgende Fehler Meldung rauß zu geben müssen:
Unit1.pas(93,19) Error: Incompatible types: got "" expected ""


ich habe das Ereignis zu verwendet:

Code: Alles auswählen

TonDraw    = procedure (var tCanvas:TCanvas;status:Integer);
  TmyCompo = class
  protected
  public
    onMouseEv:TonMouseEv;
    onKeyEv:TonKeyEv;
    onFocus:TonFocus;
    onDraw:TonDraw;
    onHint:TonHint;
    fcanvas: TCanvas;
    // Wenn irgendein Mausereignis auftrit
 
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: char);
    procedure FormMouseDown(Sender: TOBject; Button: TMouseButton;
      Shift: TShiftState; X,Y: Integer);
    procedure PaintBox1MouseDown(Sender: TOBject; Button: TMouseButton;
      Shift: TShiftState; X,Y: Integer);
    procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure PaintBox1MouseUp(Sender: TOBject; Button: TMouseButton;
      Shift: TShiftState; X,Y: Integer);
    procedure PaintBox1Paint(Sender: TObject);
  private
    { private declarations }
  public
  [B]// hier ist das Ereignis[/B]
    procedure Draw(var tCanvas:TCanvas;status:Integer);
    { public declarations }
  end;
 
procedure TForm1.Draw(var tCanvas:TCanvas;status:Integer);
begin
  PaintBox1Paint(self);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
  i:Integer;
begin
  Listbox:=TmyListbox.Create;
  Listbox.x:=200; Listbox.y:=200;Listbox.w:=100;Listbox.h:=100;
  buffer:=TBitMap.Create;
  buffer.Width:=Paintbox1.Width; buffer.Height:=Paintbox1.Height;
  buffer.Canvas.FillRect(0,0,buffer.Width,buffer.Height);
  Listbox.fcanvas:=Buffer.Canvas;
  // hier weiße ich es zu
  ListBox.onDraw:=@Draw;
 
  for i:=0 to 5 do
    ListBox.Items.add('Item: ' + IntTostr(i));
  listbox.SetItemWH;
 
end;

was mache ich jetzt falsch ?
was ich noch erwähnen sollte ist das TmyListbox von tmycompo abgeleitet wurde
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Wie wär's wenn du mal die Fehlermeldung durchlesen würdest, bevor du einen Thread auftust wegen sowas?

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

wenn ich die Fehler Meldung verstanden hätte, hätte ich diesen Thread nicht auf gemacht. aber ich verstehe sie nicht !

Da steht was von: das die typen nicht kompatibel sein, aber das stimmt einfach nicht. weil sie sind es..... deshalb verstehe ich das nicht.
ich mache so einen Thread nicht einfach so auf.... habe schon meine Gründe.

edit: ich habe jetzt die Variable TCanvas:TCanvas umbenannt in LCanvas:TCanvas, aber immer noch die gleiche Fehler Meldung
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

manche mal sehe ich den Wald voller Bäume nicht !
es lagt of object; das hatte ich bei der Defnination vergessen. naja...
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Grosses Quiz!!!! Der Compiler gibt eine Fehlermeldung aus. Er sagt was er bekommt und was er erwartet. Wo sind die Unterschiede?


"

Mann eh....

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

naja für mich wahr diese Fehler Meldung unverständlich.
Erst als mir aufgefallen war das of object fählt wurde es mir langsam klar warum das nicht geht. Aber warum kann der Complier nicht da hin Springen also da wo ich die Ereignisse Definiert habe ? er hätte doch einfach sagen können dort fählt ein of object und fertig dann hätte ich es verstanden *G*
naja egal, ich habe es ja Lösungen können, wenn auch ohne die Fehler Meldung zu verstehen....
MFG
Michael Springwald

Antworten