Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Construktor erfordert TComponent, obwohl nicht verlangt (https://www.delphipraxis.net/156130-construktor-erfordert-tcomponent-obwohl-nicht-verlangt.html)

Lithiumoxid 21. Nov 2010 09:40

Construktor erfordert TComponent, obwohl nicht verlangt
 
Guten Morgen!

Ich habe ein Problem mit meinem Programm, ich muss nämlich für die Schule ein Roulettespiel in OOP programmieren, ich habe mir ein bisschen mehr Design und Funktionen zugetraut und habe eben shcön programmiert.
Folgendes Problem tritt bei dieser Klasse auf:

Delphi-Quellcode:
unit USpielbrett;

interface
 type TSpielbrett=class (TObject)

private
 einsatz_p: array [1..3] of integer;

public
 constructor create;
 procedure setplein(k, betrag: integer);
 function getplein(k: integer): integer;

end;

implementation

constructor TSpielbrett.create;
var i: integer;
begin
 for i:=1 to 3 do einsatz_p[i]:=0;
end;

procedure TSpielbrett.setplein(k, betrag: integer);
begin
 einsatz_p[k]:=0;
end;

function TSpielbrett.getplein(k: integer): integer;
begin
 result:=einsatz_p[k];
end;

end.
Wobei dazu zu sagen ist, sie ist noch nicht fertig, was in dem Fall aber nicht schlimm ist!

Nur Delphi erwartet hier ständig, dass ich eine Varibale des Typs TComponent übergebe, obwohl das garnicht so deklariert ist? Liegt das daran, dass ich zwei Formulare habe, wenn ja, ich habe schon versucht den Namen des Formlars zu übergeben, hat aber auch nicht geklappt.

Bitte helft mir, ich bedanke mich schon im Voraus!

Gruß, Lithiumoxid

Sir Rufo 21. Nov 2010 09:52

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
Wo, wann erwartet Delphi das

Gib doch mal den gesamten Quellcode wo die Klasse benutzt wird

Lithiumoxid 21. Nov 2010 10:11

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
Hallo,

das wird dann verlangt, wenn ich den Konstruktor aufrufe und eine Instanz der Klasse erstellen will mit

Delphi-Quellcode:
Kessel:= TKessel.create;
 Konto:= TKonto.create(100);
 Spielbrett:=TSpielbrett.Create();
Nur Delphi sagt mit da muss eine Variable AOwner vom Typ TComponent übergeben werden, liegt das daran, dass ich zwei Formulare hab?

Gruß, Lithiumoxid

mkinzler 21. Nov 2010 10:19

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
Und bei welchem der 3 Konstruktoraufrufen?

Lithiumoxid 21. Nov 2010 10:21

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
Hallo,

beim dritten, das ist die Klasse, die ich oben angegeben hab...

himitsu 21. Nov 2010 10:22

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
Wo sagt Delphi was, bzw. sollen wir uns nun eine der 3 Create/Zeilen aussuchen?

Und wie sehen TKessel/TKonto aus?

[edit]
Wie sagt Delphi das?
Steht in den Compilerwarnungen genau diese Zeile oder steht nur zufällig der Cursor dort?
(manchmal meint Delphi die Zeile überm Cursor)

Lithiumoxid 21. Nov 2010 10:27

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
Hallo,

bei TKessel und TKonto liegt es definitiv nicht denke ich, weil da der constructor-Aufruf ganz normal war, allerdings bekomme ich beim Spielbrett immer drei Möglichkeiten zur Auswahl, obwohl ich garkeinen Parameter zur Übergabe programmiert habe.
Als Fehlermeldung sagt er mir: Inkompatible Typen: TComponent mit "ClassReference" .

mkinzler 21. Nov 2010 10:28

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
Kann es ein, dass es mehrer Variablen mit der Bezeichnung Spielbrett gibt bzw. das diese den falschen Typ hat?

Lithiumoxid 21. Nov 2010 10:29

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
Ja, das könnte sein, ich hab es gefunden, mal schauen, was passiert, wenn ich es ändere...

EDIT: ja es funktioniert :D DANKE!

Vielen Dank!

wolfgang_SV 21. Nov 2010 10:37

AW: Construktor erfordert TComponent, obwohl nicht verlangt
 
ich denke mal

Spielbrett:=TSpielbrett.Create(nil);

oder

Spielbrett:=TSpielbrett.Create(self);


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 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