Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Lesbare Pascal-Bezeichner generieren (https://www.delphipraxis.net/159961-lesbare-pascal-bezeichner-generieren.html)

uligerhardt 20. Apr 2011 13:34

Lesbare Pascal-Bezeichner generieren
 
Hallo miteinander!

Ich möchte aus beliebigem, vom Benutzer eingebenen Text Pascal-Bezeichner machen (also nur mit den Zeichen _, A-Z, a-z, 0-9). Dabei soll der Text möglichst lesbar bleiben, also bei einem deutschen System z.B. aus ä ae, aus Ä Ae und aus ß ss machen, und nur "exotische" Zeichen durch _ ersetzen. Gibt's da was? Dürfte ja bei Russisch oder Griechisch schwierig werden.

s.h.a.r.k 20. Apr 2011 13:51

AW: Lesbare Pascal-Bezeichner generieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Schon mal russischen Quelltext gelesen? :stupid: Einzig die Kommentare werden in der entsprechenden Sprache verfasst sein. Daher würde ich mal sowas komplett außen vor lassen. Ansonsten lass halt einfach ein Search-And-Replace drüber laufen. Wichtig dabei ist aber unbedingt die Reihenfolge.

Für Ersetzungen nutze ich die Unit im Anhang.

uligerhardt 20. Apr 2011 14:34

AW: Lesbare Pascal-Bezeichner generieren
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1096213)
Schon mal russischen Quelltext gelesen? :stupid: Einzig die Kommentare werden in der entsprechenden Sprache verfasst sein. Daher würde ich mal sowas komplett außen vor lassen.

Ich will keinen Quelltext generieren. Aber Komponentennamen. :mrgreen: Stell dir vor, der Benutzer kann irgendwelche Controls automatisch erzeugen lassen und dafür landessprachliche Bezeichnungen vergeben. Ich würde die Controls dann gerne nach dem Schema
Delphi-Quellcode:
'UserDefindeControl_' + MakeIdentifier(EingabeDesBenutzers)
benennen.

Zitat:

Zitat von s.h.a.r.k (Beitrag 1096213)
Ansonsten lass halt einfach ein Search-And-Replace drüber laufen. Wichtig dabei ist aber unbedingt die Reihenfolge.

Delphi-Quellcode:
StringReplace('ä', 'ae')
usw. ist mir natürlich als erstes eingefallen. Aber für potentiell alle Sprachen? Da wäre ich lange am recherchieren und programmieren. Drum hoffe ich auf was vom Betriebssystem.

himitsu 20. Apr 2011 14:46

AW: Lesbare Pascal-Bezeichner generieren
 
Nur äöü Ersetzen bring auch nicht viel, da es ja noch mehr Zeichen gibt.

In SysUtils gibt es ein IsValidIdent, welches auch von Delphi nutzt, um die Gültigkeit von Bezeichnern zu prüfen.

Weobei seit Delphi 2009 die Regeln erweitert wurden.
> es sind nun alle "Buchstaben" und Zahlen erlaubt und der "_",
> also auch äüöß, sowie russische, chinesische und sonstwelche Schriftzeichen.

Das erste Zeichen muß ein Achriftzeichen oder "_" sein und danach können auch noch Zahlen vorkommen.

stahli 20. Apr 2011 15:15

AW: Lesbare Pascal-Bezeichner generieren
 
Alternativ könntest Du (sofern Du eigene Komponenten nutzt) Deinen Komponenten eine neue Eigenschaft "RealName: String" zuweisen und dort beliebige Texte speichern. Dann bist Du nicht an die VCL-Namenskonventionen gebunden - müsstest allerdings die zu nutzenden Komponenten anders suchen.

Oder es könnte auch hilfreich sein, die "Bezeichnungen" und Komponenten in einer StringList zu speichern. Dann kommst Du an diese jederzeit über Values und Objects heran (bis zum Programmende).

Einen Komponentennamen zuzuweisen ist ja nicht zwingend notwendig.

SirThornberry 20. Apr 2011 17:30

AW: Lesbare Pascal-Bezeichner generieren
 
Ich würde auch nicht das Name-Property verwenden. Das klingt für mich danach als ob jemand später mit FindComponent arbeiten will obwohl es unnötig ist (da man ja weiß welche Komponenten man manuell angelegt hat). Und sobald man die erzeugten Klassen eine einer Liste speichert sollte es eigentlich kein Problem sein in der Liste nicht nur die Komponenten selbst abzulegen sondern auch Zusatzinformationen wie einen Namen.

mschaefer 20. Apr 2011 20:01

AW: Lesbare Pascal-Bezeichner generieren
 
Kann man eigentlich das Refactoring automatisieren (Script)?

uligerhardt 21. Apr 2011 09:20

AW: Lesbare Pascal-Bezeichner generieren
 
Danke allen für eure Kommentare! Das Problem hat sich mittlerweile erledigt, weil ich eine andere Quelle für die Namen gefunden habe. Und ich wollte die Namen nicht groß im Quellcode benutzen. Ich habe es nur zu schätzen gelernt, beim Debuggen den Namen einer Komponente in der Watchlist zu sehen. Deshalb kriegt bei mir jede Komponente einen selbigen.


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