Talvez você não saiba, mas o tipo record em pascal pode conter em sua estrutura functions e procedures desde o Delphi 2006, Sendo assim nos podemos tirar proveito disso para criar um tipo de dado mais avançado.
Vamos tomar como exemplo o tipo string. O que você consegue fazer com um dado do tipo string? Nada, apenas usar para guardar o seu conteúdo. Qualquer operação que você precise realizar nesse dado terá que usar alguma função externa.
Para contornar isso, podemos usar o record para criar um tipo de dado mais avançado e como exemplo vamos criar um tipo TEAMString (o nome é sugestivo) :
Abra o delphi (neste artigo fora utilizado o Delphi 2007) e crie um novo projeto para aplicação:
Agora adicione uma nova unit e salve-a como untTEAMString:
Agora estamos pronto para começar! Vamos criar o record:
unit untTEAMString; interface uses Classes,SysUtils; type TEAMString = record Text: string; end; implementation end.
Repare que o nosso Tipo TEAMString possui um campo "Text" esse campo nós vamos usar para guardar uma string e posteriormente aplicar operações nesse dado.
Agora vamos adicionar algumas operações mais comuns com strings para deixar esse nosso tipo mais parrudo. Para começar vamos utilizar as operações para remover espaços em branco no inicio, no final e no inicio e no final de uma string. Então vamos adiciona-las:
TEAMString = record Text: string; {Remove os Espaços em branco } function Alltrim: string; function LTrim: string; function RTrim: string; end;
Agora a implementação:
uses Classes,SysUtils; type TEAMString = record Text: string; {Remove os Espaços em branco } function Alltrim: string; function LTrim: string; function RTrim: string; end; implementation { TEAMString } // Objetivo: Remove os Espaços em branco function TEAMString.Alltrim: string; begin Result := Trim(Text); end; // Objetivo: Remove os Espaços em branco à esquerda da string function TEAMString.LTrim: string; var I: Integer; begin I := 0; while True do begin inc(I); if I > length(self.Text) then break; if self.Text[I] <> #32 then break; end; Result := Copy(self.Text, I, length(self.Text)); end; //Objetivo: Remover os espaços em branco a direita da string function TEAMString.RTrim: string; var I: Integer; begin I := length(self.Text) + 1; while True do begin Dec(I); if I <= 0 then break; if self.Text[I] <> #32 then break; end; Result := Copy(self.Text, 1, I); end; end.
Agora já temos alguma funcionalidade para esse nosso tipo. Vamos Fazer um pequeno teste.
No formulário da aplicação adicione um botão e 4 edits. Também não se esqueça de adcionar
a untTEAMString no USES do formulário:
uses Classes,SysUtils;
Codificando o botão:
Declare uma variável do tipo TEAMString e atribua a ela o valor do Edit texto. Em seguida, atribua os aos outros edits o resultado das operações:
procedure TForm1.btn1Click(Sender: TObject); var EAMString:TEAMString; begin EAMString.Text := edtTexto.Text; edtTrimALL.Text := EAMString.Alltrim; edtTrimL.Text := EAMString.LTrim; edtTrimR.Text := EAMString.RTrim; end;
Rode a aplicação insira um texto com espaços a esquerda e a direita e clique no botão Ok:
Se você selecionar o texto com o mouse podera observar que o espaço em branco foi removido no Edit "Trim ALL" e removido a esquerda no Edit "Trim Left" e a direita no "Edit Trim Right".
Repare que realizamos algumas operações no dado sem ter o seu conteúdo alterado e sem precisar usar funções externas, deixando o nosso código muito mais limpo e legível! Isso sem falar na produtividade que aumentara consideravelmente.
Já imaginou no que da para fazer? Nos próximos posts vamos adicionar novas funcionalidades e criar novos tipos avançados.
Confira aqui a segunda parte desse Artigo
0 comentários:
Postar um comentário