Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Formatierte Ausgabe nach Vorgabe zur Laufzeit

  Alt 5. Okt 2006, 13:29
Hi,

ich hatte so was mal für einen Import geschrieben:
Delphi-Quellcode:
function rwReFormat(const AString, InputMask, OutPutMask: string): string;
Const
  BlankChar = #0;
Var
  i : Integer;
  MaskChar: Char;
  LastmaskChar: Char;
  PosInputMask: Byte;
  OffSet: Byte;
  AddChar: Char;
begin
  LastmaskChar := BlankChar;
  PosInputMask := 1;
  Result := '';
  for i := 1 to length(OutPutMask) do
  begin
    AddChar := BlankChar;
    // nächstes Zeichen
    MaskChar := OutPutMask[i];
    // wenn gleiches Zeichen noch mal
    if MaskChar <> LastmaskChar then
      OffSet := 1
    else
      OffSet := Succ(PosInputMask);
    LastmaskChar := MaskChar;
    PosInputMask := PosEx(MaskChar, InputMask, OffSet);
    if PosInputMask = 0 then
      AddChar := MaskChar
    else
    begin
      if PosInputMask <= Length(AString) then
        AddChar := AString[PosInputMask];
      case
        MaskChar of
          '9':
            if not (AddChar in ['0'..'9']) then
              AddChar := BlankChar;
          'x': AddChar := Char(CharLower(PChar(AddChar)));
          'X': AddChar := Char(CharUpper(PChar(AddChar)));
      end
    end;
    if AddChar <> BlankChar then
      Result := Result + AddChar;
  end;
end;
Beispiel:
Delphi-Quellcode:
  rwReFormat('120106', '999999', '99.99.2099');
  // ergibt '12.01.2006'
Vielleicht kannst du es an deine Bedürfnisse anpassen. Jede Stelle des Inputformates entspricht einem Zeichen. Probier einfach mal aus.

Cu, Frank
[EDIT]
noch ein Beispiel:
Delphi-Quellcode:
rwReFormat('2006-12-01', 'JJJJ-MM-TT', 'TT.MM.JJJJ');
// ergibt '01.12.2006'
Frank Reim
  Mit Zitat antworten Zitat