sexta-feira, 15 de maio de 2009

JclStrings - StrPadRight, StrPadLeft

È uma biblioteca da JCL (Jedi), como o nome da “unit” indica, para trabalhar com strings. Esteja certo de que, tudo e qualquer coisa que você pensar fazer com strings eles implementaram nesta biblioteca.

Caso você, desafortunadamente, precise de alguma função para trabalhar com strings e não encontre na JclStrings, provavelmente é porque você está querendo fazer alguma variação do “BozoSort” (rsrsrs, neste caso procure o Bozo ou o Jaspion). Quem me apresentou a ela foi o Malta, desde então nunca mais me separei dela. A seguir, um exemplo de como concatenar caracteres a esquerda ou a direita de uma string de tamanho limitado. Ou seja, mantendo o tamanho (Length) da string inalterado.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons;

type
 TForm1 = class(TForm)
   BitBtn1: TBitBtn;
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

uses jclStrings, Math;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 ZnDt, ZnNum: String;
 ADay, AMonth, AYear: Word;
begin

  DecodeDate(Date, AYear, AMonth, ADay);
  ZnDt := Format('%s%s%s', [ StrPadLeft(IntToStr(ADay), 2, '0'),
     StrPadLeft(IntToStr(AMonth), 2, '0'), IntToStr(AYear)]);
  Self.Canvas.TextOut(12, 32, ZnDt);

  Randomize;
  ZnNum := IntToStr(RandomRange(0, 50000));
  ZnNum := StrPadRight(ZnNum, 6, 'X');
  Self.Canvas.TextOut(12, 52, ZnNum);

end;


Por falar me Bozo, lembrei de uma coisa (rsrsrs)..... Esse exemplo com datas, não foi uma boa idéia!?!?!?!??!?!
Na verdade ... esse exemplo com datas foi ótimo! Para demonstrarmos como não fazer ... uma coisa que provavelmente todo desenvolvedor, em algum momento, vai precisar fazer (rsrsrs).
Por favor, não façam assim (concatenar zeros a direita do dia e do mês).
Por isso, preste a tenção para substituir o código da linha 35 ...
  ZnDt := Format('%s%s%s', [ StrPadLeft(IntToStr(ADay), 2, '0'),  
     StrPadLeft(IntToStr(AMonth), 2, '0'), IntToStr(AYear)]);  

Por
    ZnDt := Format('%.2d%.2d%.4d', [ADay, AMonth, AYear]);

Bem melhor agora!!!!!!!

Se você veio procurar "StrPadLeft" para trabalhar com datas, se deu bem! Use o "Format('%.2d%.2d%.4d, [ADay, AMonth, AYear])".
O Malta, mais uma vez, nos emprestou o conhecimento dele.
Grato!

Nenhum comentário:

Postar um comentário

 
BlogBlogs.Com.Br