Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Strings nur einmalig im Code verwenden - Zugriff (https://www.delphipraxis.net/189956-strings-nur-einmalig-im-code-verwenden-zugriff.html)

RandomDD 12. Aug 2016 13:33

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:
showmessage(StringListe[Ord(TStringListe.sString2)]);
Das gibt dann 'String 2' aus.

Ich könnte auch einfach das Array benutzen
Delphi-Quellcode:
showmessage(StringListe[1]);
Aber wenn sich dann mal der Index von String 2 ändert, müsste ich überall alles abändern.

Gibt es eine bessere Methode als meine? Die gibt es doch sicher!

Neutral General 12. Aug 2016 13:36

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);

RandomDD 12. Aug 2016 13:36

AW: Strings nur einmalig im Code verwenden - Zugriff
 
Oder so.

Aber geht das nicht schöner und kompakter? Eventuell sogar noch über einen Type?

Neutral General 12. Aug 2016 13:39

AW: Strings nur einmalig im Code verwenden - Zugriff
 
Wie viel kompakter als
Delphi-Quellcode:
Konstantenname = Wert
willst du es denn noch haben? :mrgreen:
Du kannst optional für deine Konstanten einen Typ angeben:

Delphi-Quellcode:
const
  sString1: String = 'String 1';
  sString2: String = 'String 2';

RandomDD 12. Aug 2016 13:40

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);

Sherlock 12. Aug 2016 13:40

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:
resourcestring
  rsInvalidIP = 'Ungültige IP';
  rsGeraetVon = 'Geraet von: %s';
  rsGeraetBis = '%0:s bis: %1:s';
  rsListeBearbeiten = 'Liste Bearbeiten';
  rsFertig = 'Fertig';
  rsZuordnen = 'Zuordnen';
Das hat den Vorteil, daß sie von den gängigen Übersetzungsprogrammen auch gleich erkannt werden.

Sherlock

DeddyH 12. Aug 2016 13:44

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]);

Neutral General 12. Aug 2016 13:45

AW: Strings nur einmalig im Code verwenden - Zugriff
 
Zitat:

Zitat von http://edn.embarcadero.com/article/34324
Classes can now have class constants -- a constant value associated with the class itself and not an instance of the class.
Delphi-Quellcode:
type
  TClassWithConstant = class
    public
      const SomeConst = 'This is a class constant';
  end;
         

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage(TClassWithConstant.SomeConst);
end;

In nicht ganz so alten Delphi Versionen sollte das da gehen. Wobei es bei meinem Delphi 7 nicht geht obwohl auf der Seite steht dass es ab Delphi 7 geht (oder hab ich was falsch verstanden?)

RandomDD 12. Aug 2016 13:49

AW: Strings nur einmalig im Code verwenden - Zugriff
 
So viele verschiedene Lösungen hier :shock: :stupid:

p80286 12. Aug 2016 14:02

AW: Strings nur einmalig im Code verwenden - Zugriff
 
Na meist passiert irgendetwas und wir brachen einen String der angezeigt werden soll.
Delphi-Quellcode:
if state<>ErrorOK then
   DisplayMessage(FEHLER_DATEI_NICHT_GEFUNDEN);
Warum sollte ich mir so etwas antun:
Delphi-Quellcode:
if state <>ErrorOK then
  DisplayMessage(StringListe[machwasdraus(state)]);
vielleicht wäre es gut uns zu erzählen warum Du es so machen willst.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
Seite 1 von 2  1 2      

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