Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler: "undefinierter bezeichner" (https://www.delphipraxis.net/134354-fehler-undefinierter-bezeichner.html)

teetasse 20. Mai 2009 13:54


Fehler: "undefinierter bezeichner"
 
hallo,
delphi meint, dass verschiedene Labels nicht definiert seien, obwohl dies meiner meinung nach sehr wohl der fall ist...

Delphi-Quellcode:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm4 = class(TForm)
    Panel1: TPanel;
    EdtEing: TEdit;
    LblDNA1: TLabel;
    LblmRNA1: TLabel;
    LblDNA2: TLabel;
    LblmRNA2: TLabel;
    LblDNA3: TLabel;
    LblmRNA3: TLabel;
    LblDNA4: TLabel;
    LblmRNA4: TLabel;
    LblDNA5: TLabel;
    LblmRNA5: TLabel;
    LblDNA6: TLabel;
    LblmRNA6: TLabel;
    Button1: TButton;
    procedure Panel1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure schreiben(var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation
uses Unit1;

{$R *.dfm}

procedure TForm4.Panel1Click(Sender: TObject);
begin
    Panel1.Caption:= 'AAAAAAAAAAAAAAAAA';
    Panel1.caption := Unit1.Unserstruct[1].dna;
end;



procedure schreiben(var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
//var
//scha:string;
begin
case ZeilenIndex of
  0:
    LblDNA1.caption := LblDNA1.Caption + ausgstrDNA;
    LblmRNA1.Caption := LblmRNA1.Caption + ausgstrmRNA;
  1:
    LblDNA2.Caption := LblDNA2.Caption + ausgstrDNA;
    LblmRNA2.Caption := LblmRNA3.Caption + ausgstrmRNA;
  2:
    LblDNA3.Caption := '';
    LblmRNA3.Caption := '';
  3:
    LblDNA4.Caption := '';
    LblmRNA4.Caption := '';
  4:
    LblDNA5.Caption := '';
    LblmRNA5.Caption := '';
  5:
    LblDNA6.Caption := '';
    LblmRNA6.Caption := '';
  else
      errormsg();
end;
end;
nun sagt delphi sachen wie:

[Fehler] Unit4.pas(57): Undefinierter Bezeichner: 'LblDNA1'
[Fehler] Unit4.pas(57): Operator oder Semikolon fehlt
[Fehler] Unit4.pas(58): Undefinierter Bezeichner: 'LblmRNA1'
[Fehler] Unit4.pas(60): Undefinierter Bezeichner: 'LblDNA2'
[Fehler] Unit4.pas(60): Operator oder Semikolon fehlt

and so on :wiejetzt: .

mfg, teetasse

nahpets 20. Mai 2009 13:57

Re: Fehler: "undefinierter bezeichner"
 
Hallo,

wenn Du aus
Delphi-Quellcode:
procedure schreiben(var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
Delphi-Quellcode:
procedure TForm4.schreiben(var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
könnte durchaus funktionieren, so ist schreiben keine Prozedur der Klasse und kennt daher auch die Attribute der Klasse nicht.

Der.Kaktus 20. Mai 2009 14:33

Re: Fehler: "undefinierter bezeichner"
 
Hallo,

wie waers mit
Delphi-Quellcode:
case ZeilenIndex of
  0:begin //<<<<<
     LblDNA1.caption := LblDNA1.Caption + ausgstrDNA;
     LblmRNA1.Caption := LblmRNA1.Caption + ausgstrmRNA;
    end;//<<<<
  1:
;-)

BAMatze 20. Mai 2009 14:37

Re: Fehler: "undefinierter bezeichner"
 
Zitat:

Zitat von nahpets
Hallo,

wenn Du aus
Delphi-Quellcode:
procedure schreiben(var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
Delphi-Quellcode:
procedure TForm4.schreiben(var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
könnte durchaus funktionieren, so ist schreiben keine Prozedur der Klasse und kennt daher auch die Attribute der Klasse nicht.

oder alternativ lässt du deine procedure schreiben ... und rufst die Variablen mittels Form4.LblDNA1.Caption und so weiter auf.

MfG
BAMatze

Hobby-Programmierer 20. Mai 2009 14:42

Re: Fehler: "undefinierter bezeichner"
 
Zitat:

Zitat von BAMatze
Zitat:

Zitat von nahpets
Hallo,

wenn Du aus
Delphi-Quellcode:
procedure schreiben(var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
Delphi-Quellcode:
procedure TForm4.schreiben(var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
könnte durchaus funktionieren, so ist schreiben keine Prozedur der Klasse und kennt daher auch die Attribute der Klasse nicht.

oder alternativ lässt du deine procedure schreiben ... und rufst die Variablen mittels Form4.LblDNA1.Caption und so weiter auf.

MfG
BAMatze

oder
Delphi-Quellcode:
with Form4 do begin
...
end;
und natürlich den Hinweis von Dr.Kaktus beachten

Der.Kaktus 20. Mai 2009 14:59

Re: Fehler: "undefinierter bezeichner"
 
[OT] Dr. binch ner..nur "der" :-D [/OT]

Fussball-Robby 20. Mai 2009 15:55

Re: Fehler: "undefinierter bezeichner"
 
Zitat:

Zitat von Hobby-Programmierer
Delphi-Quellcode:
with Form4 do begin
...
end;

Das ist ziemlich schlechter Stil. Wenn die Möglichkeit besteht, aus einer Prozedur die Methode einer Klasse zu machen (wie bereits gesagt: TForm4.Prozedurenname usw), sollte man diese auch nutzen.

Hobby-Programmierer 20. Mai 2009 16:40

Re: Fehler: "undefinierter bezeichner"
 
Zitat:

Zitat von Fussball-Robby
Zitat:

Zitat von Hobby-Programmierer
Delphi-Quellcode:
with Form4 do begin
...
end;

Das ist ziemlich schlechter Stil. Wenn die Möglichkeit besteht, aus einer Prozedur die Methode einer Klasse zu machen (wie bereits gesagt: TForm4.Prozedurenname usw), sollte man diese auch nutzen.

Aha, du siehst wen ich zitiert habe :gruebel:
und sehr wohl finde ich das
Delphi-Quellcode:
with Form4 do
besser ist als 20zig mal
Delphi-Quellcode:
Form4.XXX.Caption
aufzurufen. Ausserdem war ich der Meinung das diese Prozedure später in eine seperate Unit auslagert. Vielleicht geht es aber auch so um die Referenz auf die Klasse zu gewährleisten.
Delphi-Quellcode:
procedure schreiben(MyForm: TForm;var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
begin
  case ZeilenIndex of
    0: begin
         MyForm.LblDNA1.caption := MyForm.LblDNA1.Caption + ausgstrDNA;
         MyForm.LblmRNA1.Caption := MyForm.LblmRNA1.Caption + ausgstrmRNA;
       end;
  ....
  end;
end;
Aber innerhalb einer Unit hast du natürlich Recht, da ist das Quatsch.

Hobby-Programmierer 20. Mai 2009 16:41

Re: Fehler: "undefinierter bezeichner"
 
Zitat:

Zitat von Der.Kaktus
[OT] Dr. binch ner..nur "der" :-D [/OT]

ok :mrgreen:

nahpets 20. Mai 2009 16:55

Re: Fehler: "undefinierter bezeichner"
 
Hallo,
Zitat:

Zitat von Hobby-Programmierer
Zitat:

Zitat von Fussball-Robby
Zitat:

Zitat von Hobby-Programmierer
Delphi-Quellcode:
with Form4 do begin
...
end;

Das ist ziemlich schlechter Stil. Wenn die Möglichkeit besteht, aus einer Prozedur die Methode einer Klasse zu machen (wie bereits gesagt: TForm4.Prozedurenname usw), sollte man diese auch nutzen.

Aha, du siehst wen ich zitiert habe :gruebel:
und sehr wohl finde ich das
Delphi-Quellcode:
with Form4 do
besser ist als 20zig mal
Delphi-Quellcode:
Form4.XXX.Caption
aufzurufen. Ausserdem war ich der Meinung das diese Prozedure später in eine seperate Unit auslagert. Vielleicht geht es aber auch so um die Referenz auf die Klasse zu gewährleisten.
Delphi-Quellcode:
procedure schreiben(MyForm: TForm;var ZeilenIndex:integer;ausgstrDNA, ausgstrmRNA : string);
begin
  case ZeilenIndex of
    0: begin
         MyForm.LblDNA1.caption := MyForm.LblDNA1.Caption + ausgstrDNA;
         MyForm.LblmRNA1.Caption := MyForm.LblmRNA1.Caption + ausgstrmRNA;
       end;
  ....
  end;
end;

momentan kann ich nicht folgen:

schreiben ist im Interface als Methode von Form4 deklariert. Im Implementationszeil ist sie jedoch nicht als Methode von Form4 implementiert. Es fehlt also nur das TForm4 vor der Methode schreiben im Implementationsteil. Man kann natürlich die Methode schreiben aus der Klasse herausnehmen um ihr dann die Klasse als Parameter zu übergeben und dann mit with zu arbeiten, um wiederum Schreibarbeit zu sparen, aber wäre das TForm4. vor der Methode schreiben hier nicht eventuell doch die bessere Lösung?
Ansonsten müsste die Methode schreiben der Klasse TForm4 jedenfalls noch implementiert werden bzw. im Interfaceteil wieder entfernt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr.
Seite 1 von 2  1 2      

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