Compiler findet Komponenten nicht

Rund um die LCL und andere Komponenten
Antworten
USchoch
Beiträge: 39
Registriert: Do 16. Mär 2017, 14:01

Compiler findet Komponenten nicht

Beitrag von USchoch »

Hallo
Ich schreibe eine Anwendung mit mehreren Formularen. In diese hat es unter anderem einige TEdit-Komponenten. Im Code steht irgendwo:

EdDatum.Text:='12.8.2025';

Beim compilieren wird bei dieser Zeile "Identifier not found "EdDatum" angezeigt.
Wenn ich Formx.EdDatum.Text:='12.8.2025'; schreibe, dann kommt keine Fehlermeldung.
In der gleichen Anwendung in einem anderen Formular kommt keine Fehlermeldung mit EdIrgenwas.Text:='XXX' ohne Angabe des Formularnamens.

Was mach ich falsch?

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1675
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Compiler findet Komponenten nicht

Beitrag von fliegermichl »

Das kommt daher, daß der Zugriff außerhalb einer Formularmethode statt findet.

USchoch
Beiträge: 39
Registriert: Do 16. Mär 2017, 14:01

Re: Compiler findet Komponenten nicht

Beitrag von USchoch »

Hallo
Die erwähnte Zuweisung (EdDatum.Text:='12.8.2025';) steht in einer Procedure. Diese ist in TFormX unter "public" eingetragen. Was hest in deinem Betrag "außerhalb einer Formularmethode "?

Gruss
Uli

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1675
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Compiler findet Komponenten nicht

Beitrag von fliegermichl »

Schick mal Code zum Nachvollziehen. Irgendsowas muss es sein.

USchoch
Beiträge: 39
Registriert: Do 16. Mär 2017, 14:01

Re: Compiler findet Komponenten nicht

Beitrag von USchoch »

Hallo
Hier der Code, wo die Fehlermeldungen auftauchen.:

Code: Alles auswählen

 TFormAuslesen = class(TForm)
    EdDatum: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    EdUhrzeit: TEdit;
    EdBlNr: TEdit;
    SGMesswerte: TStringGrid;
    BtnAbbruch: TButton;
    BtnEnde: TButton;
    LbTestAusl: TLabel;
    Label7: TLabel;
    procedure BtnAbbruchClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure DatenAuslesen;
    function DatenStringZerlegen( st : String): WSTestFHaupt.TMesswerte;
  end;

procedure DatenAuslesen;
var
  n: integer;
  reccnt : integer;
  ta1,ta2,fa1,fa2 : double;
  st : string;
  RecFile : Text;
  VonDatum, BisDatum : TDateTime;

begin
  reccnt:=0;
  BisDatum:=FormHaupt.DPBis.Date+FormHaupt.SEhBis.Value/24;
  VonDatum:=FormHaupt.DPVon.Date+FormHaupt.SEhVon.Value/24;
  if VonDatum>=BisDatum then BisDatum:=VonDatum+0.5; { 1/2 Tag }

  with AktMesswerte do begin
    AssignFile(RecFile,DatenPfad+DatenFilename);
    Reset(RecFile);
    while not EOF(RecFile) do begin
      ReadLn(RecFile,st);
      Aktmesswerte:=DatenStringZerlegen(st);
      EdDatum.Text:=DateToStr(DSDatTim); { Hier kommt die 1. Fehlermeldung }
      FormAuslesen.EdUhrZeit.Text:=FormatDateTime('hh:nn',DSDatTim); { Hier keine Fehlermeldung }
      inc(reccnt);
    end;
    EdBlNr.Text:=IntToStr(BlockNr); }
    with SGMesswerte do begin
      st:=EdDatum.Text+' '+EdUhrZeit.Text; { Hier wieder Fehlermeldung }
      for n:=0 to AnzWerte do begin { Werte anzeigen }
        Cells[1,n+1]:=FloatToStrF(AktMessWerte.warr[n]*Fakt[n],ffFixed,
        prec[n],nk[n])+' '+EinhAxe[n];
        st:=st+';'+Cells[1,n+1];
        Cells[2,n+1]:=IntToStr(okarr[n]);
        if n=2 then ta1:=AktMessWerte.warr[n];
        if n=3 then fa1:=AktMessWerte.warr[n];
      end;
    end;
  end; { with Aktmesswerte }
end;
Gruss
Uli

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

Re: Compiler findet Komponenten nicht

Beitrag von theo »

Code: Alles auswählen

procedure DatenAuslesen;
muss heissen

Code: Alles auswählen

procedure  TFormAuslesen.DatenAuslesen;
im Implementationsteil.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1675
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Compiler findet Komponenten nicht

Beitrag von fliegermichl »

theo hat geschrieben: Fr 29. Aug 2025, 11:45

Code: Alles auswählen

procedure DatenAuslesen;
muss heissen

Code: Alles auswählen

procedure  TFormAuslesen.DatenAuslesen;
Genau das hatte ich gemeint. Was mich wundert ist, daß der Compiler nicht die fehlende Implementation der Methode TFormAuslesen.Datenauslesen moniert.

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

Re: Compiler findet Komponenten nicht

Beitrag von theo »

fliegermichl hat geschrieben: Fr 29. Aug 2025, 12:55 Genau das hatte ich gemeint. Was mich wundert ist, daß der Compiler nicht die fehlende Implementation der Methode TFormAuslesen.Datenauslesen moniert.
Ja, das ist eigentlich:
Error: Forward declaration not solved "DatenAuslesen;"

USchoch
Beiträge: 39
Registriert: Do 16. Mär 2017, 14:01

Re: Compiler findet Komponenten nicht

Beitrag von USchoch »

Hallo

Vielen Dank für deine Hilfe, hat geklappt.

Gruss
Uli

Antworten