Code "Sortierung"

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
flashkid
Beiträge: 35
Registriert: So 14. Feb 2010, 18:15

Code "Sortierung"

Beitrag von flashkid »

Hi.

Wieso ist es in Lazarus so wichtig in welcher Reihenfolge der Code geschrieben wird?
Zb bei diesem Code:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetName;
  ShowMessage(Name);
end;
 
procedure GetName;
begin
  Name := Label1.Caption;
end;
Hier bekomme ich die Meldungen:

Code: Alles auswählen

unit1.pas(34,10) Error: Identifier not found "GetName"
unit1.pas(40,17) Error: Identifier not found "Label1"
Drehe ich nun die beiden procedure um:

Code: Alles auswählen

procedure GetName;
begin
  Name := Label1.Caption;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  GetName;
  ShowMessage(Name);
end;
Hier bekomme ich nur noch:

Code: Alles auswählen

unit1.pas(34,17) Error: Identifier not found "Label1"
Nun ergeben sich zwei Fragen:
1. Wieso muss ich die getName procedure vor den ButtonClick schreiben damit es funktioniert? So kann ich meinen Code nur sehr schwer sortieren :(
2. Wieso wird in der procedure getName das Label1 nicht gefunden?

Gruß, flashkid

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

Re: Code "Sortierung"

Beitrag von theo »

Dein GetName ist keine Methode von TForm1. Sie müsste also forward deklariert werden.
Sonst deklarier sie als Methode von TForm1

Code: Alles auswählen

procedure TForm1.GetName;
Dann klappt's auch mit dem Label. Sonst musst du das Label so ansprechen:

Code: Alles auswählen

Form1.Label1.Caption:=

flashkid
Beiträge: 35
Registriert: So 14. Feb 2010, 18:15

Re: Code "Sortierung"

Beitrag von flashkid »

Danke, so klappen nun beide Varianten, egal wie rum der Code steht :)
Ich muss allerdings noch im type ändern:

Code: Alles auswählen

TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    [color=#FF0000]procedure GetName;[/color]
  private
    { private declarations }
  public
    { public declarations }
  end;

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

Re: Code "Sortierung"

Beitrag von pluto »

Währe auch denkbar, dass Lazarus Fehler unterschiedlich Bewertet... und dann abbricht
MFG
Michael Springwald

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6947
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Code "Sortierung"

Beitrag von af0815 »

pluto hat geschrieben:Währe auch denkbar, dass Lazarus Fehler unterschiedlich Bewertet... und dann abbricht
Hat er aber nicht, einmal war es eine nicht vollständig beschriebenes Objekt und einmal eine falsche Reihenfolge in der Deklaration (Benutzt vor der Deklaration).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Code "Sortierung"

Beitrag von Socke »

Ich muss mich derzeit ein wenig in PHP-Quelltexte einlesen und ich finde es ehrlich gesagt furchtbar, wenn etwas aufgerufen wird, was noch nicht deklariert wurde. Du weißt dann überhaupt nicht, woher diese Funktion kommt, was sie macht und welche Parameter sie hat.

Pascal fördert durch sein Verhalten die Lesbarkeit erheblich. Das was du gemacht hast, war demnach ein reiner Syntaxfehler.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten