Zu dieser Seite
In unseren Beispielprogrammen, möchte ich hier die Programme für Einsteiger so leicht wie möglich gestalten. dies führt dazu, dass ich die Bezeichnungen wie Label1 und Button1…… bestehen lasse. Es hat sich erwiesen, dass dieses Vorgehen für Neulinge in der Programmierung am sinnvollsten ist.
Die Wichtigkeit
Entgegen der Beispiele auf dieser Seite halte ich die Vergabe von sinnvollen Namen für die Einzelnen Komponenten für ein absolutes Muss. Obwohl die Vergabe von Namen keinen unmittelbaren Einfluss auf die Funktion und das Aussehen der Komponenten hat ist diese Eigenschaft einer der wichtigsten überhaupt. Und offensichtlich sehe ich das nicht alleine so. In Lazarus gibt es eine Option in der die Vergabe von einem Namen automatisiert werden kann.
Namensvergabe bei neuen Komponenten
Wenn Sie eigene Programme schreiben, dann kann es sinnvoll sein, diese Funktion einzusetzen. Ich zeige Ihnen worum es geht. Klicken Sie mal auf Werkzeuge -> Einstellungen.

Nun öffnet sich das Einstellungsfenster von Lazarus. Dieses Fenster hat viele Funktionen. Eine davon ist diese Hier:

Diese Funktion ist standardmäßig aus. Für die Durchführung der Beispiele auf Programmindex.de ist es für Sie auch besser diese aus zu lassen. Wenn Sie allerdings wissen wo es an und aus zuschalten geht, und Sie gerade ein eigenes Programm schreiben, dann sollten Sie diese Option, mit einem Haken, einschalten.
Der Zwang zur Namensvergabe
Wenn Sie nach der Aktivierung der Option ein Label auf die Form ziehen, erscheint dieses Fenster.

Hier sollten sie im oberen Eingabefeld den Namen angeben. Im Unteren können Sie die Beschriftung angeben. Dieses Feld ist nur aktiv, wenn die Komponente die Beschriftung (Eigenschaft: Caption oder Eigenschaft: Text) unterstützt. Daher ist es z.B. für alle Dialoge ausgegraut (Eigenschaft: Enabled := False). Wenn Sie nun den neuen Namen und eventuell auch die Beschriftung, eingeben und auf Ok klicken, dann werden die Einstellungen übernommen. Bei Abbrechen bekommen Sie die Standardnamen (Label1 u.s.w.).
Welche Namen sind nicht erlaubt ?
Beispiel | Beschreibung |
1Label | Dieser Name hat an erster Stelle eine Ziffer. |
Label_männlich | Das "ä" Umlaute und "ß" sind nicht erlaubt. Nur die Zeichen "a" bis "z" , "A" bis "Z", "_" und 0 bis 9 (wenn nicht an erster Stelle). |
Label-maennlich | Ein Unterstrich "_" ist ein Unterstrich. Ein "-" Minuszeichen ist ein Minuszeichen und damit ein mathematischer Operator. Es sind nur die Zeichen "a" bis "z" , "A" bis "Z", "_" und 0 bis 9 (wenn nicht an erster Stelle) erlaubt. |
text | "text" ist ein Pascalschlüsselwort. Schlüsselworte (Worte die Pascal selber braucht) sind verboten. |
Kein Name "" ist ungültig. |
Warum gibt es so viele Einschränkungen ?
Jetzt könnte man schlichtweg meinen „So viele Einschränkungen? Das ist aber Doof.“ Die Macher von Lazarus sind aber keinesfalls einfältig. Der Grund für die Einschränkungen ist die Verarbeitungsgeschwindigkeit. Sie möchten doch Ihr Programm möglichst schnell ausprobieren. Das geht zum einen nur mit 1-Byte Zeichen (Char). Es wäre Wahnsinn alle möglichen Länderspezifischen Zeichen (nicht nur unsere Umlaute) zu unterstützen. Ferner würde es auch enorm viel Zeit in Anspruch nehmen, wenn der Compiler prüfen müsste ob nun ein „-“ Zeichen eine Operation ist oder zum Namen gehört. Gehen würde das vielleicht auch noch, nur würde der Überprüfungsaufwand im Vergleich zum Nutzen in keinem Verhältnis stehen.Trotzdem können Sie mit diesen Einschränkungen noch aussagekräftige Namen vergeben. Hierbei sollten Sie überlegen, ob Sie Ihren Quelltext mit Menschen aus anderen Ländern teilen möchten.
Deutsch oder englisch
Als internationales Team ist selbstverständlich, dass die Bezeichnungen für Ihre Namen in Englisch vergeben. Hier auf dieser Seite ist alles in deutsch. Dies liegt an meinen Einschränkungen im Englischen. Ich baue da auf Deep-L wenn sich jemand aus einem anderen Land die Seite ansehen will. In einem Team würde ich meine Bezeichnungen ebenfalls in englisch wählen. Ein wesentlicher Vorteil für deutsche Bezeichnungen ist , dass Sie auf Anhieb erkennen können von wem die Bezeichnung oder gar die Procedure stammt wenn sie alleine Programmieren. Eine Namens Kollision wie etwa bei „text“ ist auch unwahrscheinlich.
Die Syntax
Außer den oben genannten Einschränkungen gibt es keine Vorgabe für die Namensvergabe. Ich halte aber einige Dinge für sinnvoll.
- 1. Es ist von Vorteil, wenn sie sich ein Namens-Vergabe-System zurechtlegen.
- 2. Der erste Teil sollte ein Kürzel für die Bezeichnung der Komponente sein. Beispiel für einen TButton -> BuAbbrechen oder Bu_Abbrechen oder BUTabbrechen. Sie sehen auch hier gibt es einige Variationsmöglichkeiten. Wenn sie so vorgehen, dann können Sie nach der eingaben von Bu mit der Tastenkombination STRG + w ein Auswahlfeld öffnen.

Hier bekommen Sie alle Möglichkeiten mit „Bu“ angezeigt. Nun können Sie mit den Cursor-Tasten auf und ab, auswählen welchen der beiden Button Sie denn wollen. Wenn Sie nun die Eingabe mit der EingabeTaste bestätigen, dann können Sie weiter Tippen. In den meisten Fällen ist dies dann der „.“ und schon gehts weiter mit einem Auswahlfeld.

In dieser Auswahl erhalten Sie dann alle Möglichkeiten die Ihnen von dem Objekt TButton zur Verfügung gestellt werden. Hier können Sie auch mit der Eingabe von einem oder 2 Zeichen die Auswahl reduzieren (Filtern). Es kann manchmal vorkommen das sich das Auswahlfenster für das Objekt nicht öffnet. Dann haben Sie 2 Möglichkeiten. a) Sie löschen den Punkt und geben diesen erneut ein. b) Sie drücken die Tastenkombination STRG + Leertaste (Space). Dies gilt es zu unterscheiden. STRG + W -> Wort – Vervollständigung, STRG + Leertaste (Space) Bezeichner-Vervollständigung.
Nicht zu kurz.
An Ihrer Stelle würde ich von dieser Funktion immer Gebrauch machen. Hierbei sollten Sie den Namen nicht zu knapp z.B. „BuAb“ für den Abrechen Button wählen. Selbst wenn Sie das Programm nur für sich schreiben, haben Sie bei ungenügender Bezeichnung ihrer Komponenten am Ende auch selber ein Problem. Ich Schreibe da aus Erfahrung. Nach einem Jahr fragen Sie sich was Sie mit den Bezeichnern im Quelltext eigentlich meinten.
Nicht zu lang.
Ihr Quelltext wird natürlich auch etwas unübersichtlich wenn sie einen Namen wie BuAbbrechenDerAbfrageImHauptfenster wählen insbesondere wenn dann noch eine Eigenschaft im Quelltext eingestellt werden soll z.B
BuAbbrechenDerAbfrageImHauptfenster.Font.Name:='Arial';
Dieser lange Name im Quelltext quält nicht nur Ihre Augen, er steht auch der Systematik der objektorientierten Programmierung im Weg. Denn der Name Ihres Hauptfensters ist ja auch nicht Form1 sondern FoHaupt und der Zugriff auf das Objekt TButton erfolgt von außerhalb Ihres Formulars mit:
FoHaupt.BuAbbrechen.Font.Name:='Arial';
Dieser lange Name ist, wie beschrieben, auch nur dann, nötig wenn Sie von außerhalb des Geltungsbereiches des Objektes („FoHaupt“) auf den Button zugreifen wollen.
Wann sollte man einen aussagekräftigen Namen vergeben.
Bis auf Lernzwecke eigentlich immer. Auch für eher passive Komponenten sollten Sie sinnvolle Namen vergeben. Sie wollen das Programm, auch wenn es jetzt nicht so aussieht, später vielleicht doch erweitern, oder Sie brauchen Teile ihres Programms für ihr nächstes Projekt. Geben Sie Ihren Programmteilen und Komponenten vernünftige Bezeichnungen. Es lohnt sich. Ohne diese Bezeichnungen und einer vernünftigen Dokumentation mit Kommentaren, haben Sie keine Chance ein großes Projekt zu schreiben, es sei denn sie beschäftigen sich jeden Tag mit dem Programm.
Warum sollte ich für ein TLabel einen Namen vergeben ?
Diese berechtigte Frage möchte ich hier beantworten. Es gibt ein sehr leistungsstarkes Instrument für die Erstellung eines Größen anpassungsfähigen Formulars. Dieses Instrument ist der Anker-Editor.

Das oben abgebildete Fenster möchten wir über den Anker-Editor sortieren. Dies Funktioniert am besten, wenn wir die Namen für die Komponenten vergeben haben.

Wenn Sie mit dem Anker-Editor die Komponenten in Beziehungen setzen wollen, dann ist die Bezeichnung aller Komponenten, auch der Label, von Bedeutung. Selbst wenn Sie die Label im Quelltext nicht ansprechen. Stellen Sie sich vor auf dem Bild würde nur Label1, Label2 …… stehen. Das Ganze dann auf einem großen Fenster mit 20 Labeln. Da wünsche ich Ihnen viel Spaß beim zuordnen. 🙂
Vorteil mehrsprachiger Entwicklung
Unter Projekt -> Projekteinstellungen können Sie den i18n Modus aktivieren. Hierdurch schalten Sie den Mehrsprachenmodus an.

Diese Einstellung erzeugt eine Datei mit der Endung „.pot“ dies würde bei unserem Projekt so aussehen.
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: tfohaupt.buabbrechen.caption
msgid "Abbrechen"
msgstr ""
#: tfohaupt.buweiter.caption
msgid "Weiter"
msgstr ""
#: tfohaupt.caption
msgid "FoHaupt"
msgstr ""
#: tfohaupt.edidentnummer.text
msgid "EdIdentNummer"
msgstr ""
#: tfohaupt.edname.text
msgid "EdName"
msgstr ""
#: tfohaupt.edvorname.text
msgid "EdVorname"
msgstr ""
#: tfohaupt.laidentnummer.caption
msgid "IdentNummer"
msgstr ""
#: tfohaupt.laname.caption
msgid "Name"
msgstr ""
#: tfohaupt.lavorname.caption
msgid "Vorname"
msgstr ""
Und auch hier hilft Ihnen die Vergabe von vernünftigen Namen.
Fazit
Selbstverständlich können Sie auf die Namensvergabe verzichten. Dem Compiler macht dies nichts aus. Wenn Sie von sich überzeugt sind und meinen, dass Sie die Namensvergabe und auch eventuelle Kommentare Sie nur ausbremsen, dann verzichten Sie darauf. Das habe ich im ersten Jahr beim Programmieren auch getan. Erst Später konnte ich dann die hässlichen Früchte meiner Faulheit aufsammeln. Ich habe oft vor meinem eigenen Quelltext gesessen und den Sinn meines eigenen Handelns nicht mehr verstanden. Mit einer vernünftigen Dokumentation wäre das nicht passiert.