AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi String nach vordefinierbarem Muster formatieren
Thema durchsuchen
Ansicht
Themen-Optionen

String nach vordefinierbarem Muster formatieren

Ein Thema von Windwalker · begonnen am 5. Feb 2010 · letzter Beitrag vom 5. Feb 2010
Antwort Antwort
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#1

String nach vordefinierbarem Muster formatieren

  Alt 5. Feb 2010, 09:35
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.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: String nach vordefinierbarem Muster formatieren

  Alt 5. Feb 2010, 10:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: String nach vordefinierbarem Muster formatieren

  Alt 5. Feb 2010, 10:46
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#4

Re: String nach vordefinierbarem Muster formatieren

  Alt 5. Feb 2010, 10:55
Genau so ähnlich habe ich mir das auch gedacht.

Danke!
  Mit Zitat antworten Zitat
LargoD

Registriert seit: 8. Jun 2007
42 Beiträge
 
#5

Re: String nach vordefinierbarem Muster formatieren

  Alt 5. Feb 2010, 11:51
Warum nicht die Funktion Format(...) benutzen?

Gruß
LargoD
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: String nach vordefinierbarem Muster formatieren

  Alt 5. Feb 2010, 11:55
Und wie soll das dann aussehen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: String nach vordefinierbarem Muster formatieren

  Alt 5. Feb 2010, 11:59
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: String nach vordefinierbarem Muster formatieren

  Alt 5. Feb 2010, 12:28
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:

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

Gruß Hawkeye
  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 17:55 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