Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Undeclared identifier: 'Name' (https://www.delphipraxis.net/35614-undeclared-identifier-name.html)

robroy85 9. Dez 2004 19:39


Undeclared identifier: 'Name'
 
Hallo liebe Community!

Wieso kann ich in Funktionen nicht auf Elemente eines Formulars zugreifen ???
Wenn ich in der Funktion Testfunct die Edit-Boxen auslesen möchte, dann gibst nur Gemecker!
DIe kennt er nämlich alle nicht:
[Error] Unit1.pas(246): Undeclared identifier: 'Name'
[Error] Unit1.pas(247): Missing operator or semicolon
[Error] Unit1.pas(247): Undeclared identifier: 'Vorname'
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    MainMenu: TMainMenu;
    Datei1: TMenuItem;
    ....
    Vorname: TEdit;
    Name: TEdit;
    Action1: TAction;
    procedure FileOpenExecute(Sender: TObject);
    procedure FileOpenSchuelerExecute(Sender: TObject);
    procedure PrintExecute(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    function Testfunct( way: integer): char;   // <-----------------------------
Delphi-Quellcode:
function Testfunct( way: integer): char; //Vorwärts //////////////////////////////////////
var                                                         //////////////////////////////////////

k : string;
i : integer;


begin
//Speicher die eingegebenen Daten im globalen Array
BigTemp[b,0] := Name.Text;
BigTemp[b,1] := Vorname.Text;
......

alcaeus 9. Dez 2004 19:40

Re: Undeclared identifier: 'Name'
 
Hi roboy85,

du solltest Name nicht fuer Objektbezeichner verwenden, damit gabs immer wieder Probleme. Warum das so ist habe ich allerdings vergessen :oops:

Greetz
alcaeus

robroy85 9. Dez 2004 19:43

Re: Undeclared identifier: 'Name'
 
OK, Name wurde kurzfristig durch zName ersetzt... Das Problem tritt aber leider bei allen Feldern auf !?


Wenn ich jetzt aber statt einer Function eine ButtonOnClick-Aktion daraus mache, habe ich keine Pobleme mit dem Auslesen => ich will aber natürlich kein Button, da die funktion später mehrfach genutzt werden soll!

glkgereon 9. Dez 2004 19:44

Re: Undeclared identifier: 'Name'
 
du must die function als

function TForm1.testfunc deklarieren...

die funktion gehört sonst nich zur form, und kennt somit die kompos net...

mirage228 9. Dez 2004 19:44

Re: Undeclared identifier: 'Name'
 
Hi,

müsste es nicht

Delphi-Quellcode:
function TForm1.Testfunct( way: integer): char;
heissen?

mfG
mirage228

Albi 9. Dez 2004 19:58

Re: Undeclared identifier: 'Name'
 
Genau,

Unter Type lässt du so wie es ist um unten must du das TForm1. davorsetzen.

Tip: Wenn du die Umsch+Strg+C drückst erstellt er es alleine.

Christian Seehase 9. Dez 2004 23:27

Re: Undeclared identifier: 'Name'
 
Moin Albi,

Zitat:

Zitat von Albi
Tip: Wenn du die Umsch+Strg+C drückst erstellt er es alleine.

das funktioniert allerdings erst ab den Pro Versionen.

robroy85 11. Dez 2004 13:10

Re: Undeclared identifier: 'Name'
 
Jo, danke!

Hat soweit geklappt!

Hab die Pro-Version nicht, aber das kreig ich auch noch selber getippt ;-)
Ich bin festdavon überzeugt, dass ich es auch schon mit TForm1. probiert habe, aber da hab ich wohl noch einen anderen Fehler dabei gehabt!

Luckie 11. Dez 2004 13:14

Re: Undeclared identifier: 'Name'
 
Zitat:

Zitat von alcaeus
du solltest Name nicht fuer Objektbezeichner verwenden, damit gabs immer wieder Probleme. Warum das so ist habe ich allerdings vergessen :oops:

Weil Name unter anderem eine Eigenschaft von TForm ist.
Wenn du jetzt schreibst:
Delphi-Quellcode:
Name.Text := 'Foobar';
Dann macht Delphi daraus:
Delphi-Quellcode:
Form1.Name.Text := 'Foobar';
und das haut eben nicht hin.

teebee 11. Dez 2004 13:29

Re: Undeclared identifier: 'Name'
 
Doch das haut schon hin, da durch die erneute Deklaration eines Felds mit der Bezeichnung 'Name' das bereits in der Klasse vorhandene 'Name' verdeckt wird. Von jetzt an bezieht sich 'Name' immer auf das Edit. Das führt dazu, dass man keinen Zugriff mehr auf das alte Feld 'Name' hat, was natürlich fatal für bereits bestehenden Code sein kann, der vielleicht davon ausgeht, dass Name vom Typ String und nicht vom Typ TEdit ist. Der beschriebene Fehler hat nix mit dieser Deklaration zu tun. (Trotzdem sollte man sowas natürlich vermeiden.)

Gruß, teebee


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

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 by Thomas Breitkreuz