![]() |
Delphi-Version: 5
Ist String ein gültiger Variablenname
Hallo In einem meiner Programme hat der Benutzer die Möglichkeit eine eigene Oberfläche zu entwerfen.
Dazu kann er auch Namen für die einzelnen Objekte vergeben. Wie kann ich am einfachsten überprüfen ob es ein gültiger Delphi Variablenname ist. Ich würde ansonsten einfach hingehen ein Control anlegen und diesem dem Namen des Users zuweisen und abwarten ob eine Exception kommt. Gibnt es dafür eine Funktion ? |
AW: Ist String ein gültiger Variablenname
Was passiert denn, wenn Du das machst? Der Inhalt 'Name' hat ja zunächst nichts mit dem Feldnamen der Komponente zu tun.
|
AW: Ist String ein gültiger Variablenname
Könnte man nicht einfach intern einen Tiefstrich voranstellen, den man aber nicht anzeigt? Also der Benutzer nennt das Dingen z.B. String, daraus wird dann _String.
|
AW: Ist String ein gültiger Variablenname
SysUtils.IsValidIdent und das wird intern auch vom TComponent.Name verwendet.
|
AW: Ist String ein gültiger Variablenname
Zitat:
|
AW: Ist String ein gültiger Variablenname
Zitat:
Christoph |
AW: Ist String ein gültiger Variablenname
Eine Komponente (
Delphi-Quellcode:
) kann man gern "String" nennen.
.Name
Selbst Eine im Formdesigner, solange diese Komponente kein Feld (Variable) in der Klassendeklaration besitzt. Variablen, Konstanten, Typen, Prozeduren usw. (im QuellCode) unterliegen zusätzlich noch der Einschränkung der "reservierten Wörter" (siehe OH). |
AW: Ist String ein gültiger Variablenname
Zitat:
Delphi-Quellcode:
Function Abziehen (const Bezeichner : String; Const prefix : String = 'User_') : String;
Begin if substring (Bezeichner,1, Length(Prefix))=prefix then result := Substring (Bezeichner, Length(Prefix)+1, maxint) else result := Bezeichner; End; |
AW: Ist String ein gültiger Variablenname
Nur noch Substring() durch z.B. Copy() ersetzen. :-D
|
AW: Ist String ein gültiger Variablenname
Und XE2 kennt bestimmt auch schon die StrUtils, sowie das Copy ohne den 3. Parameter.
Delphi-Quellcode:
if StartsStr(Prefix, Bezeichner) then
Result := Copy(Bezeichner, Length(Prefix) + 1) else Result := Bezeichner; // oder Result := Bezeichner; if StartsStr(Prefix, Result) then Delete(Result, 1, Length(Prefix)); Sollte es Probleme beim Prefix geben, also bei der Unterscheidung ob programmseitiges Prefix oder Namensteil des Benutzers, dann einfach ein Zeichen als Prefix verwenden, welches man für die Benutzereingabe an dieser Stelle sperrt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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