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'