quinta-feira, 23 de janeiro de 2014

Funções Especiais


function RemoveCaractesresEspeciais(valor:string):String;
begin
 valor := RetiraArgumento('(',valor);
 valor := RetiraArgumento(')',valor);
 valor := RetiraArgumento(',',valor);
 valor := RetiraArgumento('.',valor);
 valor := RetiraArgumento('/',valor);
 valor := RetiraArgumento('\',valor);
 valor := RetiraArgumento('-',valor);
 valor := RetiraArgumento(' ',valor);
 Result := valor;
end;

function RetiraArgumento(Retirar,Argumento:string):string;
var
  Auxarg,Aux:string;
  numero:integer;
begin
 Auxarg := Argumento;
 numero := pos(Retirar,Auxarg);
 if numero > 0 then
  begin
   aux := copy(Auxarg,0,numero -1);
   while numero > 0 do
    begin
     Auxarg := copy(Auxarg,numero + 1,255);
     numero := pos(Retirar, Auxarg);
     aux := aux+copy(Auxarg, 0, numero -1);
   end;
   aux := aux+copy(Auxarg, 0, 255);
   result := aux;
  end
  else
   result := Argumento;
end;

function AjustaStr(str: String; tam: Integer): String;
//Funcao que completa a string com espacos em branco
begin
 while Length ( str ) < tam do
  str := str + ' ';
  if Length ( str ) > tam then
   str := Copy ( str, 1, tam );
   Result := str;
end;

function AjustaNumerico(VlrMoeda: Currency; tam: Integer) : String;
var
 sVlr: String;
begin
 if Pos(',',CurrToStr(VlrMoeda)) > 0 then
  sVlr := RetiraArgumento(',', FormatFloat('000000000.00', VlrMoeda))
 else sVlr := CurrToStr(VlrMoeda) + '00';
 while Length(sVlr) < tam do sVlr := '0'+sVlr;
 if Length(sVlr) > tam then  sVlr := Copy(sVlr,1,tam);
 Result := sVlr;
end;

function AjustaInteiro(inteiro:String;tam:integer) : String;
begin
 Result := '';
 while length(inteiro) < tam do
  inteiro := '0'+inteiro;
  if Length(inteiro) > tam then inteiro := Copy(inteiro,1,tam);
  Result := inteiro;
end;

function ConverteStrParaFloat(valor:string):Boolean;
begin
 result := false;
 try
  StrToFloatDef(valor,0);
 except
  result := true;
 end;
end;

function AjustaPercentual(percentual:Double) : String;
var
 sPercent : string;
 sInteiro : string;
 sDecimal : string;
 sPos     : integer;
begin
 if ConverteStrParaFloat(FloatToStr(percentual)) = true then exit;
 sPercent := FloatToStr(percentual);
 sPos     := Pos(',',sPercent);
 if sPos = 0 then
  begin
   if Length(sPercent) = 0 then sPercent := '0000';
   if Length(sPercent) = 1 then sPercent := sPercent+'000';
   if length(sPercent) = 2 then sPercent := sPercent+'00';
   if Length(sPercent) = 3 then sPercent := sPercent+'0';
   if Length(sPercent) > 4 then sPercent := Copy(sPercent,1,4);
  end else
   begin
    sInteiro := Copy(sPercent,0,sPos-1);
    sDecimal := Copy(sPercent,sPos+1,length(sPercent) - sPos+1);
    if Length(sInteiro) = 0 then sInteiro := '00';
    if length(sInteiro) = 1 then sInteiro := '0'+sInteiro;
    if length(sDecimal) = 0 then sDecimal := '00';
    if length(sDecimal) = 1 then sDecimal := sDecimal+'0';
    sPercent := sInteiro+sDecimal;
   end;
   Result := sPercent;
end;

function AjustaNF(str: String; tam: Integer): String;
//Funcao que completa a N.F. com zeros á esquerda
begin
 while Length ( str ) < tam do
  str := '0' + str;
  if Length ( str ) > tam then
   str := Copy ( str, 1, tam );
   Result := str;
end;

function FormataPercentual(valor:string):String;
var
 tam:integer;
 int,dec:string;
begin
 tam := length(valor);
 int := Copy(valor,1,tam-2);
 dec := Copy(valor, tam-1,2);
 Result := int+','+dec;
end;

Nenhum comentário:

Postar um comentário