![]() |
Strings nur einmalig im Code verwenden - Zugriff
Erster Post: sorry, bin kein Pro und kein Programmierer, daher verzeiht mir dumme Fragen!
Ich benutze in einem Testprojekt ein paar Strings gefühlte 100 Mal an verschiedenen Stellen. Das find ich etwas suboptimal. Meine 0815-Lösung war jetzt, dass ich eine Konstante definiere die so aussehen kann
Delphi-Quellcode:
StringListe: array [0 .. 1] of String = ('String 1', 'String 2');
Etwas weiter unten ein Type
Delphi-Quellcode:
type TStringListe = (sString1, sString2);
Jetzt kann ich ungefähr so auf die Strings zugreifen
Delphi-Quellcode:
Das gibt dann 'String 2' aus.
showmessage(StringListe[Ord(TStringListe.sString2)]);
Ich könnte auch einfach das Array benutzen
Delphi-Quellcode:
Aber wenn sich dann mal der Index von String 2 ändert, müsste ich überall alles abändern.
showmessage(StringListe[1]);
Gibt es eine bessere Methode als meine? Die gibt es doch sicher! |
AW: Strings nur einmalig im Code verwenden - Zugriff
Öhm du könntest direkt Konstanten anlegen:
Delphi-Quellcode:
const
sString1 = 'String 1'; sString2 = 'String 2'; showmessage(sString1); showmessage(sString2); |
AW: Strings nur einmalig im Code verwenden - Zugriff
Oder so.
Aber geht das nicht schöner und kompakter? Eventuell sogar noch über einen Type? |
AW: Strings nur einmalig im Code verwenden - Zugriff
Wie viel kompakter als
Delphi-Quellcode:
willst du es denn noch haben? :mrgreen:
Konstantenname = Wert
Du kannst optional für deine Konstanten einen Typ angeben:
Delphi-Quellcode:
const
sString1: String = 'String 1'; sString2: String = 'String 2'; |
AW: Strings nur einmalig im Code verwenden - Zugriff
Also ungefähr so? :-D
Delphi-Quellcode:
type
TStringListe = record const sString1 = 'String 1'; sString2 = 'String 2'; end; var MeineStrings: TStringListe; showmessage(MeineStrings.sString1); |
AW: Strings nur einmalig im Code verwenden - Zugriff
Es gibt da verschiedene Möglichkeiten. Eine prominente dürfte die Verwendung von resourcestring sein.
Beispiel:
Delphi-Quellcode:
Das hat den Vorteil, daß sie von den gängigen Übersetzungsprogrammen auch gleich erkannt werden.
resourcestring
rsInvalidIP = 'Ungültige IP'; rsGeraetVon = 'Geraet von: %s'; rsGeraetBis = '%0:s bis: %1:s'; rsListeBearbeiten = 'Liste Bearbeiten'; rsFertig = 'Fertig'; rsZuordnen = 'Zuordnen'; Sherlock |
AW: Strings nur einmalig im Code verwenden - Zugriff
Oder vielleicht so etwas?
Delphi-Quellcode:
type
TSomeType = (stOK, stError, stBananenSindKrumm); const SOMESTRINGS: array[TSomeType] of string = ('Alles in Butter', 'Oops', 'Is mir völlig Banane'); ... ShowMessage(SOMESTRINGS[TSomeType.stBananenSindKrumm]); |
AW: Strings nur einmalig im Code verwenden - Zugriff
Zitat:
|
AW: Strings nur einmalig im Code verwenden - Zugriff
So viele verschiedene Lösungen hier :shock: :stupid:
|
AW: Strings nur einmalig im Code verwenden - Zugriff
Na meist passiert irgendetwas und wir brachen einen String der angezeigt werden soll.
Delphi-Quellcode:
Warum sollte ich mir so etwas antun:
if state<>ErrorOK then
DisplayMessage(FEHLER_DATEI_NICHT_GEFUNDEN);
Delphi-Quellcode:
vielleicht wäre es gut uns zu erzählen warum Du es so machen willst.
if state <>ErrorOK then
DisplayMessage(StringListe[machwasdraus(state)]); Gruß K-H |
AW: Strings nur einmalig im Code verwenden - Zugriff
Ich lehne mich mal ganz weit aus dem Fenster und behaupte, daß der TE betriebsblind war, und nicht auf simple Konstanten oder auch resourcestrings gekommen ist. Denn diese Listen bzw. deren Handhabung dürften bei Leuten, die Delphi für eine "viel zu wortreiche" Sprache halten zu Schreikrämpfen führen.
Sherlock |
AW: Strings nur einmalig im Code verwenden - Zugriff
Ich war nicht betriebsblind sondern nur leer im Kopf :lol:
Deswegen frage ich ja hier nach, um diese Leere zu füllen :P Das hier gefällt mir am besten
Delphi-Quellcode:
type
TStrings = record const sString = 'String 1'; // usw end; var MeineStrings: TStrings; showmessage(MeineStrings.sString1); |
AW: Strings nur einmalig im Code verwenden - Zugriff
TStrings ist ein schlecht gewählter Name, da es auch eine gleichnamige Klasse in System.Classes gibt.
|
AW: Strings nur einmalig im Code verwenden - Zugriff
Warum? Wenn ich das mehr als fünf mal verwenden müsste, würde ich verzweifeln. Aus mehreren Gründen: String1 ist nicht selbsterklärend und ich müsste beim Codelesen immer zur Deklaration springen. Dann ist MeineStrings.sString1 gemessen an der geringen Aussagekraft mächtig lang. Wozu die Stringaufzählung noch mit einem Record umwickeln? TStrings ist übrigens ein Typ, den es bereits gibt... Detlef hats vor mir gesehen.
Es wäre also hilfreich, die Anforderungen genauer zu beschreiben, sollen zB die Strings per Index zur Laufzeit "durchlaufen" werden können? Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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 by Thomas Breitkreuz