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