Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Record, Objekt oder Klassentyp erforderlich (https://www.delphipraxis.net/163241-record-objekt-oder-klassentyp-erforderlich.html)

DelphiHacka317 21. Sep 2011 07:59

Record, Objekt oder Klassentyp erforderlich
 
Hallo
hab ein Problem mit Delphi und zwar zeigt er die Fehlermeldung "[Fehler] uHaupt.pas(62): Record, Objekt oder Klassentyp erforderlich" an bei folgender Funktion:
Zitat:

procedure TForm1.bAusrechnenClick(Sender: TObject);
var eMonat : Byte;
eJahr : Word;
begin
eMonat:=StrToInt(eMonat.Text);
eJahr:=StrToInt(eJahr.Text);
eTage.Text:=IntToStr(Taganzahl(eMonat,eJahr));
end;
Danke

mkinzler 21. Sep 2011 08:10

AW: Record, Objekt oder Klassentyp erforderlich
 
eMonat ist als Byte deklariet und überdeckt eine eventuell existierende Komponente des selben Namens

jaenicke 21. Sep 2011 08:10

AW: Record, Objekt oder Klassentyp erforderlich
 
Ich vermute einmal eMonat heißt auch ein Editfeld auf deinem Formular? Dann darfst du keine gleichnamige Variable zusätzlich deklarieren...

Sir Rufo 21. Sep 2011 08:29

AW: Record, Objekt oder Klassentyp erforderlich
 
Zitat:

Zitat von jaenicke (Beitrag 1125697)
Ich vermute einmal eMonat heißt auch ein Editfeld auf deinem Formular? Dann darfst du keine gleichnamige Variable zusätzlich deklarieren...

Darf wohl, aber ...

der Compiler impliziert normalerweise in den Klassenmethoden vor den Klassenvariablen das Self.
Wird in einer Klassenmethode eine lokale Variable deklariert, die gleich lautet wie eine Klassenvariable, dann muss man das Self explizit mit angeben, denn sonst geht der Compiler davon aus, dass man die lokale Variable meint ;)

Delphi-Quellcode:
procedure TForm1.bAusrechnenClick(Sender: TObject);
var
  eMonat : Byte;
  eJahr : Word;
begin
  eMonat := StrToInt( Self.eMonat.Text);
  eJahr :=StrToInt( Self.eJahr.Text);
  eTage.Text :=IntToStr( Taganzahl( eMonat, eJahr ) );
end;
Es empfiehlt sich aber - schon alleine zur Verbesserung der Lesbarkeit - dieses zu vermeiden ;)
Delphi-Quellcode:
procedure TForm1.bAusrechnenClick(Sender: TObject);
var
  AMonat : Byte;
  AJahr : Word;
begin
  AMonat := StrToInt( eMonat.Text);
  AJahr :=StrToInt( eJahr.Text);
  eTage.Text :=IntToStr( Taganzahl( AMonat, AJahr ) );
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz