![]() |
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. |
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. |
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; |
Re: String nach vordefinierbarem Muster formatieren
Genau so ähnlich habe ich mir das auch gedacht.
Danke! |
Re: String nach vordefinierbarem Muster formatieren
Warum nicht die Funktion Format(...) benutzen?
Gruß LargoD |
Re: String nach vordefinierbarem Muster formatieren
Und wie soll das dann aussehen?
|
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. |
Re: String nach vordefinierbarem Muster formatieren
Hallo Sascha,
marabu stellt in ![]()
Delphi-Quellcode:
Der Muster-String darf keine Zeichen enthalten, die literal übernommen werden sollen.
s := Reformat('AB1234CD56', 'xxxyyyzzzz', 'xxx-yyy-zzzz');
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