Entwickler-Ecke

Sonstiges (Delphi) - Zu viele Parameter


marvin190 - Mi 03.05.06 18:57
Titel: Zu viele Parameter
Hallo zusammen!

Ich habe mal eine Frage, ich habe ein Procedure, das ausgelöst wird, wenn auf einen Button geklickt wird


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.GetInfosClick(Sender: TObject);
begin
  //Atome erstellen
  Element1 := TAtom.Create(StrToInt(E1NameEdt.Text));
  ...
end;


Zur Erklärung: Element1 ist vom Typ TAtom. Nun soll in "Element1" ein TAtom erstellt werden und dieser eine Parameter wird mitgegeben (Typ: Integer).

Das Procedure zu dem vverwiesen wird, sieht so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
constructor TAtom.Create(Value: Integer);
begin
  inherited Create;
  ElementenNr := Value;
...
end;


Jetzt gibt der Kompiler in der Zeile "Element1 := TAtom.Create(StrToInt(E1NameEdt.Text));" eine Felher "Zu viele Parameter" aus.

Darf ich vielleicht einem Create-Procedure keine Variabele zuweisen?

Danke schonmal für eure Hilfe!


mkinzler - Mi 03.05.06 19:01

Wie sieht der Konstruktor der Superklasse aus?


marvin190 - Mi 03.05.06 19:02

Welcher Superklasse?

TForm oder TAtom?

TAtom steht oben.


mkinzler - Mi 03.05.06 19:05

Du rufst im Konstruktor von TAtom ja mit dem inherited den Konstruktor dessen Superklasse auf. Wie ist dieser definiert?


marvin190 - Mi 03.05.06 19:13

Achso, nein die Superklasse existiert nicht mehr, aber auch wenn ich jetzt das inherited wegmache, geht zwar der Fehler auch nicht weg, aber der Compiler akzeptiert das Create alleine nicht (Nicht genügend wirkliche Parameter). Brauc hich das Create vielleicht gar nicht mehr?


Danke schonmal für die schnelle Antwort!


mkinzler - Mi 03.05.06 19:17

Ja, wenn es keine Superklasse mehr gibt brauchst du die ganze Zeile nicht mehr.


marvin190 - Mi 03.05.06 19:19

Ok, bleibt immernoch das "Zu viele Parameter" Problem!


mkinzler - Mi 03.05.06 19:27

Poste mal die gesamte Definition der Klasse TAtom.


marvin190 - Mi 03.05.06 19:33

Die Definition von TAtom:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
TAtom = class(TObject)
  public
    // Felder
    AtomName: String;       // Name des Atoms
    AtomAbk: String;        // Kürzel des Atoms
    ElementenNr: Integer;   // Elementen Nummer


    // Bindungen
    VorgaengerAtom:TAtom;
    BindungsListe: TList; // Bindungen weiter unten in der Ordnung
    AtomListe: TList;
    // Methoden
    constructor Create(Value: Integer); // Elementennummer
    destructor Destroy;
  end;


mkinzler - Mi 03.05.06 19:52

Ich kann da eigentlich keinen Fehler erkennen. hast du mal versucht das Create mit einer Konstante aufzurufen oder den Wert des Edits in einer Variablen zwischenzuspeichern?


marvin190 - Mi 03.05.06 19:59

alles klar, so funktioniert es, sieht zwar nicht schön aus... aber was solls! :-)

Danke für eure Hilfe!