Strings Delphi

{
Bit metin dosyasina verileri yazarken bu verileri formatlamak gerekir. Ornegin bir alan icin 10 karakterlik yer ayrilmissa ve bu alanda bulunan veri 3 karakterse kalanlari bosluk karakteri ile doldurmak gerekir. Ayrica verinin uzunlugu max karakterden fazla ise belli bir yerden sonra kesmek dogru olacaktir. Asagidaki fonksiyonu bu amac icin kullanabilirsiniz.
Ornegi inceleyiniz.
}
procedure CreateFmtBuffer(Buffer: PChar; const S: string; Ch: Char; MaxWidth: Integer; Align: TAlignment);
var L, J, K: Integer;
Len: Integer;
begin
Len := Length(S);
if Len > MaxWidth then Align := taLeftJustify;
L := 0;
case Align of
taLeftJustify:
begin
L := 0;
end;
taRightJustify:
begin
L := MaxWidth - Len;
end;
taCenter:
begin
L := (MaxWidth - Len) div 2;
end;
end;
Len := Len - 1;
for J := 0 to L - 1 do Buffer[J] := Ch;
for K := 0 to Len do Buffer[L + K] := S[K + 1];
K := L + Len + 1;
for J := K to MaxWidth - 1 do Buffer[J] := Ch;
Buffer[MaxWidth] := #0;
end;
function CreateFmtStr(const S: string; Ch: Char; MaxWidth: Integer; Align: TAlignment): string;
var Buffer: PChar;
begin
Buffer := StrAlloc(MaxWidth + 5);
CreateFmtBuffer(Buffer, S, Ch, MaxWidth, Align);
Result := StrPas(Buffer);
StrDispose(Buffer);
end;
// Kullanimi:
Edit1.Text := CreateFmtStr('ali', '#', 10, taRightJustify);
// Sonuc: #######ali
Edit1.Text := CreateFmtStr('ali', '#', 10, taCenter);
// Sonuc: ###ali####
Edit1.Text := CreateFmtStr('ali', '#', 10, taLeftJustify);
// Sonuc: ali#######
Edit1.Text := CreateFmtStr('uzunvebuyukveri', '#', 10, taLeftJustify);
// Sonuc: uzunvebuyu
Edit1.Text := CreateFmtStr('ali', ' ', 10, taRightJustify);
// Sonuc: ali