AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lesbare Pascal-Bezeichner generieren

Ein Thema von uligerhardt · begonnen am 20. Apr 2011 · letzter Beitrag vom 21. Apr 2011
Antwort Antwort
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#1

Lesbare Pascal-Bezeichner generieren

  Alt 20. Apr 2011, 13:34
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.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: Lesbare Pascal-Bezeichner generieren

  Alt 20. Apr 2011, 13:51
Schon mal russischen Quelltext gelesen? 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.
Angehängte Dateien
Dateityp: pas MWKStringReplace.pas (9,3 KB, 30x aufgerufen)
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Lesbare Pascal-Bezeichner generieren

  Alt 20. Apr 2011, 14:34
Schon mal russischen Quelltext gelesen? 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. 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 'UserDefindeControl_' + MakeIdentifier(EingabeDesBenutzers) benennen.

Ansonsten lass halt einfach ein Search-And-Replace drüber laufen. Wichtig dabei ist aber unbedingt die Reihenfolge.
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.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#4

AW: Lesbare Pascal-Bezeichner generieren

  Alt 20. Apr 2011, 14:46
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Lesbare Pascal-Bezeichner generieren

  Alt 20. Apr 2011, 15:15
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Lesbare Pascal-Bezeichner generieren

  Alt 20. Apr 2011, 17:30
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Lesbare Pascal-Bezeichner generieren

  Alt 20. Apr 2011, 20:01
Kann man eigentlich das Refactoring automatisieren (Script)?
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Lesbare Pascal-Bezeichner generieren

  Alt 21. Apr 2011, 09:20
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.
Uli Gerhardt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz