Funcao - troca e alinha

Top  Previous  Next

Function TrocaString(Original,Nova,St:String;IgnoreUpperLowerCase:Boolean):String;

var

   I:Integer;

   S:String;

begin

     S := St;

 

     If IgnoreUpperLowerCase then

         While Pos(AnsiUpperCase(Original),AnsiUpperCase(S))>0 do

         begin

              I := Pos(AnsiUpperCase(Original),AnsiUpperCase(S));

              Delete(S, I, Length(Original));

              Insert(Nova, S, I);

         end

     else

         While Pos(Original,S)>0 do

         begin

              I := Pos(Original,S);

              Delete(S, I, Length(Original));

              Insert(Nova, S, I);

         end;

     Result := S;

end;

 

{

Estas tres funcoes abaixo tem grande utilitade ao usar texto mono-espacado.

Ex:

         S := AlinhaEsq('GRUPO',30,'.');

Devolve:

         S = 'GRUPO.......................'; //25 pontos

Ex2:

         s := AlinhaDir('1.345,40,10,' ');

Devolve:

         S = '  1.345,40'; // Poe espacos em branco na frente

Ex3:

         S := AlinhaCentro('1234567890',30,'-');

Devolve

         S = '----------1234567890----------'; // Centraliza

}

 

function AlinhaEsq(const Palavra:String;    Tamanho: Integer; Caracter: char = #32):String;

var

  S:String;

  I:Integer;

begin

  S := Palavra;

  For I:=1 to (Tamanho-Length(Palavra)) do S := S + Caracter;

  // Se a palavra for maior que tamanho corta

  If Length(Palavra) > Tamanho then Delete(S,Tamanho+1,Length(Palavra)-Tamanho);

  Result := S;

end;

 

function AlinhaDir(const Palavra:String;    Tamanho: Integer; Caracter: char = #32):String;

var

  S:String;

  I:Integer;

begin

  S := Palavra;

  For I:=1 to (Tamanho-Length(Palavra)) do S := Caracter + S;

  // Se a palavra for maior que tamanho corta

  If Length(Palavra) > Tamanho then Delete(S,Tamanho+1,Length(Palavra)-Tamanho);

  Result := S;

end;

 

function AlinhaCentro(const Palavra:String; Tamanho: Integer; Caracter: char = #32):String;

var

  S: string;

  I: Integer;

begin

  S := Palavra;

  I := 0;

  // Coloca o caracter na frente e atrás

  while Length(S) < Tamanho do

  begin

    Inc(I);

    if Odd(I) then S := S + Caracter else S := Caracter + S;

  end;

  // Se a Palavra for maior tira na frente e atras

  while Length(S) > Tamanho do

  begin

    Inc(I);

    if Odd(I) then Delete(S,1,1else Delete(S,Length(S),1);

  end;

  Result := S;

end;