Mega Code Archive

 
Categories / Delphi / Strings
 

Texti saga, sola ve ortaya gelecek sekilde formatli sekilde yazmak

{ 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