Label wird nicht gefunden

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Arcadion
Beiträge: 4
Registriert: Mi 23. Apr 2014, 01:09

Label wird nicht gefunden

Beitrag von Arcadion »

Hallo und sorry für die wahrscheinlich recht unnötige Frage.. ^^
in meinem Schulprojekt hat sich eine Fehlermeldung eingeschlichen, auf die ich keine Antwort weiß.

Die entsprechende Stelle sieht wie folgt aus:

IF Z1>Z2 THEN
begin
Lvergleich.caption:='Systemvariante 1 überwiegt in '+FloatToStr(Z1)+' Punkten!';
end;

Dabei wird das Label Lvergleich nicht gefunden und die Fehlermeldung (uprojekt.pas(283,13) Error: Identifier not found "Lvergleich") ausgegeben.
Das Label ist definitiv vorhanden und auch im Quelltext deklariert. Bin der Meinung, dass es was mit der IF-Funktion zu tun hat aber vielleicht kann mir ja einer von euch weiterhelfen.

Schonmal Danke im Vorraus,

Arcadion

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: Label wird nicht gefunden

Beitrag von m.fuchs »

Wahrscheinlich befindet sich dein Quellcode außerhalb des Gültigkeitsbereiches von Lvergleich. Ein Blick in meine Glaskugel lässt vermuten:
  • Lvergleich ist in einem Form deklariert.
  • Dein obige Code befindet sich in einer Prozedur/Funktion die nicht zu diesem Form gehört.
Um das zu verifizieren, solltest du mal die gesamte Prozedur/Funktion posten und die Deklaration des Forms.
Arcadion hat geschrieben:Bin der Meinung, dass es was mit der IF-Funktion zu tun hat...
if ist übrigens keine Funktion, das aber nur am Rande.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Arcadion
Beiträge: 4
Registriert: Mi 23. Apr 2014, 01:09

Re: Label wird nicht gefunden

Beitrag von Arcadion »

Also hier mal das gesamte Programm. Sorry falls ich es in irgendeinen Spoiler hätte packen sollen^^
Und ja, ich bin mir bewusst, dass einiges sicherlich einfacher oder besser hätte umgesetzt werden können aber whatever .. ^^

Code: Alles auswählen

unit uprojekt;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls, Grids;
 
type
 
  { TFWindow }
 
  TFWindow = class(TForm)
    Ierderechts: TImage;
    Isonderechts: TImage;
    Iwasserlinks: TImage;
    Ierdelinks: TImage;
    Isondelinks: TImage;
    Iwasserrechts: TImage;
    Lauswahl: TLabel;
    Lergebnis: TLabel;
    Lvergleich: TLabel;
    Lueberschrift: TLabel;
    Lak: TLabel;
    Lbk: TLabel;
    Leg: TLabel;
    Lsa: TLabel;
    Lpb: TLabel;
    Rvariante1: TRadioGroup;
    Rvariante2: TRadioGroup;
    TAB: TStringGrid;
    procedure Rvariante1Click(Sender: TObject);
    procedure Rvariante2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  FWindow: TFWindow;
 
implementation
 
{$R *.lfm}
 
{ TFWindow }
 
var AK1,BK1,EG1,GK1,X1,SG1,S1,Z1,P1,AK2,BK2,EG2,GK2,X2,SG2,S2,Z2,P2:real;
 
procedure TFWindow.Rvariante1Click(Sender: TObject);
begin
 
  IF Rvariante1.itemindex=0 THEN
  begin
  Ierdelinks.visible:=false;
  Isondelinks.visible:=false;
  Iwasserlinks.visible:=true;
 
  X1:=0;
  GK1:=15000;
  SG1:=9000*0.26;
  Repeat
  X1:=X1+1;
  GK1:=GK1+400;
  S1:=SG1*X1;
  until
  S1>GK1;
 
  AK1:=15000;
  BK1:=400;
  EG1:=9000;
  P1:=2;
 
  TAB.Cells[0,0]:=FloatToStr(AK1)+' €';
  TAB.Cells[0,1]:=FloatToStr(BK1)+' €/Jahr';
  TAB.Cells[0,2]:=FloatToStr(EG1)+' kWh/Jahr';
  TAB.Cells[0,3]:='Nach '+FloatToStr(X1)+' Jahren';
  TAB.Cells[0,4]:='Mittel';
  end;
 
  IF Rvariante1.itemindex=1 THEN
  begin
  Isondelinks.visible:=false;
  Iwasserlinks.visible:=false;
  Ierdelinks.visible:=true;
 
  X1:=0;
  GK1:=11000;
  SG1:=7000*0.26;
  Repeat
  X1:=X1+1;
  GK1:=GK1+500;
  S1:=SG1*X1;
  until
  S1>GK1;
 
  AK1:=11000;
  BK1:=500;
  EG1:=7000;
  P1:=3;
 
  TAB.Cells[0,0]:=FloatToStr(AK1)+' €';
  TAB.Cells[0,1]:=FloatToStr(BK1)+' €/Jahr';
  TAB.Cells[0,2]:=FloatToStr(EG1)+' kWh/Jahr';
  TAB.Cells[0,3]:='Nach '+FloatToStr(X1)+' Jahren';
  TAB.Cells[0,4]:='Hoch';
  end;
 
  IF Rvariante1.itemindex=2 THEN
  begin
  Ierdelinks.visible:=false;
  Iwasserlinks.visible:=false;
  Isondelinks.visible:=true;
 
  X1:=0;
  GK1:=13000;
  SG1:=7500*0.26;
  Repeat
  X1:=X1+1;
  GK1:=GK1+600;
  S1:=SG1*X1;
  until
  S1>GK1;
 
  AK1:=13000;
  BK1:=600;
  EG1:=7500;
  P1:=1;
 
  TAB.Cells[0,0]:=FloatToStr(AK1)+' €';
  TAB.Cells[0,1]:=FloatToStr(BK1)+' €/Jahr';
  TAB.Cells[0,2]:=FloatToStr(EG1)+' kWh/Jahr';
  TAB.Cells[0,3]:='Nach '+FloatToStr(X1)+' Jahren';
  TAB.Cells[0,4]:='Niedrig';
  end;
 
end;
 
procedure TFWindow.Rvariante2Click(Sender: TObject);
begin
 
  IF Rvariante2.itemindex=0 THEN
  begin
  Ierderechts.visible:=false;
  Isonderechts.visible:=false;
  Iwasserrechts.visible:=true;
 
  X2:=0;
  GK2:=15000;
  SG2:=9000*0.26;
  Repeat
  X2:=X2+1;
  GK2:=GK2+400;
  S2:=SG2*X2;
  until
  S2>GK2;
 
  AK2:=15000;
  BK2:=400;
  EG2:=9000;
  P2:=2;
 
  TAB.Cells[1,0]:=FloatToStr(AK2)+' €';
  TAB.Cells[1,1]:=FloatToStr(BK2)+' €/Jahr';
  TAB.Cells[1,2]:=FloatToStr(EG2)+' kWh/Jahr';
  TAB.Cells[1,3]:='Nach '+FloatToStr(X2)+' Jahren';
  TAB.Cells[1,4]:='Mittel';
  end;
 
  IF Rvariante2.itemindex=1 THEN
  begin
  Isonderechts.visible:=false;
  Iwasserrechts.visible:=false;
  Ierderechts.visible:=true;
 
  X2:=0;
  GK2:=11000;
  SG2:=7000*0.26;
  Repeat
  X2:=X2+1;
  GK2:=GK2+500;
  S2:=SG2*X2;
  until
  S2>GK2;
 
  AK2:=11000;
  BK2:=500;
  EG2:=7000;
  P2:=3;
 
  TAB.Cells[1,0]:=FloatToStr(AK2)+' €';
  TAB.Cells[1,1]:=FloatToStr(BK2)+' €/Jahr';
  TAB.Cells[1,2]:=FloatToStr(EG2)+' kWh/Jahr';
  TAB.Cells[1,3]:='Nach '+FloatToStr(X2)+' Jahren';
  TAB.Cells[1,4]:='Hoch';
  end;
 
  IF Rvariante2.itemindex=2 THEN
  begin
  Ierderechts.visible:=false;
  Iwasserrechts.visible:=false;
  Isonderechts.visible:=true;
 
  X2:=0;
  GK2:=13000;
  SG2:=7500*0.26;
  Repeat
  X2:=X2+1;
  GK2:=GK2+600;
  S2:=SG2*X2;
  until
  S2>GK2;
 
  AK2:=13000;
  BK2:=600;
  EG2:=7500;
  P2:=1;
 
  TAB.Cells[1,0]:=FloatToStr(AK2)+' €';
  TAB.Cells[1,1]:=FloatToStr(BK2)+' €/Jahr';
  TAB.Cells[1,2]:=FloatToStr(EG2)+' kWh/Jahr';
  TAB.Cells[1,3]:='Nach '+FloatToStr(X2)+' Jahren';
  TAB.Cells[1,4]:='Niedrig';
  end;
 
end;
begin
 
  Z1:=0;
  Z2:=0;
 
  IF AK1>AK2 THEN
  begin
  Z1:=Z1+1;
  end;
  IF AK1<AK2 THEN
  begin
  Z2:=Z2+1;
  end;
 
  IF BK1>BK2 THEN
  begin
  Z1:=Z1+1;
  end;
  IF BK1<BK2 THEN
  begin
  Z2:=Z2+1;
  end;
 
  IF EG1>EG2 THEN
  begin
  Z1:=Z1+1;
  end;
  IF EG1<EG2 THEN
  begin
  Z2:=Z2+1;
  end;
 
  IF X1>X2 THEN
  begin
  Z1:=Z1+1;
  end;
  IF X1<X2 THEN
  begin
  Z2:=Z2+1;
  end;
 
  IF P1>P2 THEN
  begin
  Z1:=Z1+1;
  end;
  IF P1<P2 THEN
  begin
  Z2:=Z2+1;
  end;
 
 
  IF Z1>Z2 THEN
  begin
  Lvergleich.caption:='Systemvariante 1 überwiegt in '
  +FloatToStr(Z1)+' Punkten!';
  end;
  IF Z1<Z2 THEN
  begin
  Lergebnis.caption:='Systemvariante 2 überwiegt in '
  +FloatToStr(Z2)+' Punkten!';
  end;
 
end.
Zuletzt geändert von Lori am Mi 23. Apr 2014, 15:52, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter nutzen.

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

Re: Label wird nicht gefunden

Beitrag von Michl »

Das liegt hauptsächlich an Deiner Formatierung! Würdest Du einmal Deinen Code falten (auf das [-] klicken bei den einzelnen "Begin"s) könntest Du selber ganz schnell den Fehler finden.

Deine Procedure

Code: Alles auswählen

procedure TTFWindow.Rvariante2Click(Sender: TObject);
...
TAB.Cells[1,2]:=FloatToStr(EG2)+' kWh/Jahr';
TAB.Cells[1,3]:='Nach '+FloatToStr(X2)+' Jahren';
TAB.Cells[1,4]:='Niedrig';
end;
 
end;  //endet hier
der nachfolgende Code ist nicht mehr Bestandteil Deiner Klasse TTFWindow und wird deshalb nicht gefunden -> entferne das eine "end;" das sollte diesen "Fehler" beheben. Deinen Code ansich habe ich nicht geprüft.

Code: Alles auswählen

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

Arcadion
Beiträge: 4
Registriert: Mi 23. Apr 2014, 01:09

Re: Label wird nicht gefunden

Beitrag von Arcadion »

Vielen Dank, Michl! Ich hab echt ewig nach dem Fehler gesucht und jetzt wo du es gesagt hast erscheint es mir wie so oft total offensichtlich :roll: ...

Antworten