Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String nach vordefinierbarem Muster formatieren (https://www.delphipraxis.net/147301-string-nach-vordefinierbarem-muster-formatieren.html)

Windwalker 5. Feb 2010 09:35


String nach vordefinierbarem Muster formatieren
 
Hallo,

ich bin dabei, eine Routine zu schreiben, die einen String nach einem definierbarem Muster aufbereitet.
Konkret habe ich eine Seriennummer aus alphanumerischen Zeichen z.B. "AB1234CD56" die ich z.B. als "AB1-234-CD56" darstellen möchte.
Das Format der Darstellung möchte ich einer Art Muster-String, in diesem Beispiel z.B. "###-###-####" vorgeben. Es soll also Platzhalter geben, die die Zeichen der Nummer aufnehmen und andere Zeichen, wie "-" werden literal übernommen.

Gibt es hierzu in Delphi bestimmte Funktionen/Prozeduren, die besonders geeignet sind oder werde ich um eine komplett händische Programmierung nicht herumkommen?

Danke!
Sascha.

nahpets 5. Feb 2010 10:32

Re: String nach vordefinierbarem Muster formatieren
 
Hallo,

schau Dir mal die Komponente TMaskEdit von Delphi an, da kann man Masken mit erstellen, die dann bei der Eingabe in das Editfeld berücksichtigt werden.

himitsu 5. Feb 2010 10:46

Re: String nach vordefinierbarem Muster formatieren
 
Notfalls ließe es sich auch sehr einfach etwas selber machen.
Delphi-Quellcode:
Function MyMask(Const Str, Mask: String): String;
  Var i, i2: Integer;

  Begin
    Result := Mask;
    i2 := 1;
    For i := 1 to Length(Result) do
      If Result[i] = '#' Then
        If i2 <= Length(Str) Then Begin
          Result[i] := Str[i2];
          Inc(i2);
        End Else Break;
  End;

Windwalker 5. Feb 2010 10:55

Re: String nach vordefinierbarem Muster formatieren
 
Genau so ähnlich habe ich mir das auch gedacht.

Danke!

LargoD 5. Feb 2010 11:51

Re: String nach vordefinierbarem Muster formatieren
 
Warum nicht die Funktion Format(...) benutzen?

Gruß
LargoD

DeddyH 5. Feb 2010 11:55

Re: String nach vordefinierbarem Muster formatieren
 
Und wie soll das dann aussehen?

himitsu 5. Feb 2010 11:59

Re: String nach vordefinierbarem Muster formatieren
 
Weil es nicht geht?

Daran hatte ich auch schon gedacht.
- # durch %s ersetzen
- aber dann müßte man den String auch noch in seine einzelnen Chars zerlegt an Format übergeben und auch noch aufpassen, daß genügend Chars für alle %s vorhanden sind.

Hawkeye219 5. Feb 2010 12:28

Re: String nach vordefinierbarem Muster formatieren
 
Hallo Sascha,

marabu stellt in diesem Beitrag eine universelle Routine vor, mit der sich das Problem ebenfalls lösen lässt, falls du dich mit einem anderen Muster-String anfreunden kannst:

Delphi-Quellcode:
s := Reformat('AB1234CD56', 'xxxyyyzzzz', 'xxx-yyy-zzzz');
Der Muster-String darf keine Zeichen enthalten, die literal übernommen werden sollen.

Gruß Hawkeye


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