Delphi-PRAXiS

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.

hoika 20. Mai 2009 17:42

Re: Fehler: "undefinierter bezeichner"
 
Hallo,

du hast Recht,

der Thread-Ersteller hat einfach das TForm4 vergessen.

Zitat:

schreiben ist im Interface als Methode von Form4 deklariert
Das ist allerdings nicht 100% korrekt,
schreiben ist eine Methode von TForm4.

Edit: jaja

TForm4 muss es heissen, nicht nur Form4.


Heiko

DeddyH 20. Mai 2009 17:52

Re: Fehler: "undefinierter bezeichner"
 
Zitat:

Zitat von hoika
Hallo,

du hast Recht,

der Thread-Ersteller hat einfach das TForm4 vergessen.

Zitat:

schreiben ist im Interface als Methode von Form4 deklariert
Das ist allerdings nicht 100% korrekt,
schreiben ist eine Methode von TForm4.


Heiko

:?: Was ist an Deiner Aussage denn anders als an naphets' ?

taaktaak 20. Mai 2009 18:03

Re: Fehler: "undefinierter bezeichner"
 
... der Unterschied liegt im T - oder?

DeddyH 20. Mai 2009 18:05

Re: Fehler: "undefinierter bezeichner"
 
Ja gut, dann hätte er aber das T fett markieren sollen und nicht das schreiben :zwinker:

P.S.: Ich werde wohl zu alt für sowas :roll:

taaktaak 20. Mai 2009 18:07

Re: Fehler: "undefinierter bezeichner"
 
Ach Detlef, du in deinem jungen Alter.
Was soll ich denn erst sagen?
Und erst unser akademischer Neuzugang ....
:zwinker:

Der.Kaktus 20. Mai 2009 18:32

Re: Fehler: "undefinierter bezeichner"
 
Zitat:

Zitat von taaktaak
Ach Detlef, du in deinem jungen Alter.
Was soll ich denn erst sagen?
Und erst unser akademischer Neuzugang ....
:zwinker:

Detlef wird auch aelter :-D aber denk an das Alter taak..ob Du da noch DP betreibst? ;-) *fg*


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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