Error: erroneous type

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Moo
Beiträge: 27
Registriert: Mi 21. Mai 2014, 19:11

Error: erroneous type

Beitrag von Moo »

Hi
wollte grade ein Programm schreiben, wo ich mit TShapes die ich sozusagen selbst gestalte eine Ampel mache
Habe dazu nun halt meine eigene Klasse gemacht (TAmpel = class(TShape)) aber der hat einen Fehler mit dem TShape

Code: Alles auswählen

 TAmpel = class(TShape)
    public
      farbe:integer; //1 = rot 2 = gelb 3 = grün
    constructor create(Jinx:TComponent;e_farbe:boolean);
    procedure paint;
  end;
 
 
 
var
  Form1: TForm1; 
  sh1r,sh2g,sh3gr:TAmpel;
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 sh1r:=TAmpel.Create(form1);
 sh1r.Top:=10;
 
 sh2g:=TAmpel.Create(form1);
 sh2g.Top:=80;
 
 sh3gr:=TAmpel.Create(form1);
 sh3gr.Top:=150;
end;
 
{ TForm1 }
 
procedure TAmpel.paint;
begin
  canvas.Ellipse(0,0,65,65);
 
  i:=strtoint(edit1.text);
 
  if i=1 then
  begin
    canvas.brush.color:=clred;
  end;
 end;
end.
 
unit1.pas(27,24) Error: Identifier not found "TShape"
unit1.pas(27,24) Error: class type expected, but got "<erroneous type>"
unit1.pas(39,1) Fatal: There were 2 errors compiling module, stopping

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Error: erroneous type

Beitrag von Komoluna »

Hast du die Unit ExtCtrls eingebunden (interface uses)?
In der wird nämlich erst TShape definiert.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Moo
Beiträge: 27
Registriert: Mi 21. Mai 2014, 19:11

Re: Error: erroneous type

Beitrag von Moo »

Ne wie muss ich das machen ?
Bin ne aeltere Version aus der Schule gewohnt von daher war ich ziemlich ueberrascht als es hier nicht funktioniert hat :/

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2807
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Error: erroneous type

Beitrag von m.fuchs »

Im uses-Block oben in der Unit, sind eine Reihe von anderen Units aufgeführt, die durch deine genutzt werden. Dort trägst du ExtCtrls mit ein.

Bei deinem Programm in der Schule hast du mit Sicherheit schon einmal ein Shape (oder ein anderes Control aus ExtCtrls auf dein Form gezogen. Dadurch wurde de Unit automatisch eingebunden.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Moo
Beiträge: 27
Registriert: Mi 21. Mai 2014, 19:11

Re: Error: erroneous type

Beitrag von Moo »

ok danke !
bekomme jetzt noch ein paar andere Fehler aber die bekomme ich wahrscheinlich selbst hin ! :D

du warst doch der der mir letztes jahr bei meinem Wellen problem schon geholfen hat !

Edit: Haben die den Befehl fuers Edit Feld geaendert ? bekomme jetzt immer
unit1.pas(64,20) Error: Identifier not found "edit1"

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2807
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Error: erroneous type

Beitrag von m.fuchs »

Das ist ja kein Befehl, sondern ihm fehlt ein Objekt mit Namen edit1. Gibt es das denn auf deiner Form? Und kannst du von der Codezeile darauf zugreifen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Error: erroneous type

Beitrag von creed steiger »

TForm1.label1?

oder wo halt der Label definiert ist

wp_xyz
Beiträge: 5134
Registriert: Fr 8. Apr 2011, 09:01

Re: Error: erroneous type

Beitrag von wp_xyz »

Außerdem ist die Komponenten-Deklaration der Ampel nicht richtig:
- Der Konstructor Create muss mit "override" deklariert werden und hat nur 1 Parameter vererbt bekommen (AOwner: TComponent - das ist die Komponente die deine Komponente am Ende aufräumt).
- Die Paint-Prozedur ist ebenfalls virtuell und muss mit "override" deklariert sein. Ohne diesen Zusatz wird sie wahrscheinlich nicht aufgerufen.
- Die Farbe definierst du als Property, nicht im Konstructor. (Keine Ahnung, was Jinx ist...)

Moo
Beiträge: 27
Registriert: Mi 21. Mai 2014, 19:11

Re: Error: erroneous type

Beitrag von Moo »

Code: Alles auswählen

i:=strtoint(edit1.text);
das ist meine Zeile um eine Variable halt selbst manuell bestimmen zu koennen

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2807
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Error: erroneous type

Beitrag von m.fuchs »

Das ist keine Antwort auf meine Fragen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Moo
Beiträge: 27
Registriert: Mi 21. Mai 2014, 19:11

Re: Error: erroneous type

Beitrag von Moo »

Ja es gibt ein Edit1 das ding is wenn ich das in der Schule eingebe kann ich in meinem kompilierten Programm einfach eine Zahl eingeben, welche dann in das Programm fuer die vorgegebene Variable eingefuegt wird

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Error: erroneous type

Beitrag von Michl »

Wie creed steiger schon schrieb, in deiner Klasse TAmpel ist kein Edit1 deklariert, sondern vermutlich in deiner Form1. Du müsstest daher so darauf zugreifen (obwohl ich das Design nicht für klug halte):

Code: Alles auswählen

  i:=StrToInt(Form1.Edit1.Text);

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Moo
Beiträge: 27
Registriert: Mi 21. Mai 2014, 19:11

Re: Error: erroneous type

Beitrag von Moo »

ich hab da leider keinen einfluss drauf
ist ne Hausaufgabe

Antworten