Sie sind auf Seite 1von 4

Classe TStringBuilder - Delphi

Ol pessoal, nesse artigo vou apresentar a classe TStringBuilder que foi implementada a partir do Delphi 2009 e veio para melhorar a manipulao de strings. Na maioria das vezes a manipulao de strings tais como concatenao gera um certo nus tanto para o compilador como para memria, ento a partir do Delphi 2009 foi implementada a classe TStringBuilder que segundo consta na documentao veio para melhorar essa questo. No vou me preocupar muito com os detalhes sobre ganho de performance entre o mtodo de concatenao normal e usando a classe TStringBuilder, at porque existe muita discordncia dentro da comunidade Delphi sobre se existe vantagens e at que ponto vivel o uso dessa nova classe. O que realmente temos de interessante na questo do mtodo Append, que sobrecarregado para aceitar a insero de diversos tipos de dados, desde strings at pontos flutuantes, sem a necessidade de especificar um tipo de converso explicita. Na figura 1 segue a relao de tipos aceitveis pelo mtodo Append. Outra coisa interessante na questo da escrita e entendimento do cdigo que se torna mais legvel para compreenso, pois no mtodo normal de concatenao usamos vrios + dependendo da quantidade se torna um pouco cansativo at para manuteno do cdigo.

Figura 1: Exibe os tipos de dados que o mtodo Append aceita.

Vou exibir algumas comparaes do modo normal e usando a classe TStringBuilder, sempre lembrando que antes de utilizar essa classe temos que instanci-la, pois iremos trabalhar com um objeto da classe TStringBuilder. Abaixo segue 2 exemplos de concatenaes de strings, listagem 1 usando o modo normal com o operador + e a listagem 2 usando um objeto do tipo TStringBuilder. Listagem 1: Exemplo de concatenao de strings usando o +.

1var 2
str: string;

3begin 4 5end;
str := str + 'DevMedia';

Listagem 2: Exemplo de concatenao de strings usando TStringBuilder.

1 2

var str: TStringBuilder;

3 begin 4 5 6 7 8 9
end; try str := TStringBuilder.Create; str.Append('DevMedia'); finally FreeAndNil(str); end;

10

Observao: Notem que o cdigo foi escrito dentro de um bloco try..finally..end, como estamos instanciando um objeto somos responsveis por descarreg-lo aps a execuo do bloco de cdigo, sendo assim o bloco finally se encarrega desta tarefa. Abaixo vou mostrar como concatenar um ponto flutuante cadeia de strings usando mtodo normal listagem 3 e sem a necessidade de converso explicita usando a classe TStringBuilder listagem 4. Listagem 3: Exemplo de concatenao de um valor double no modo normal.

1var

2 3 4 5 6 7

ValorDouble: Double; Str : string;

begin ValorDouble := 12.11; Str := Str + FloatToStr(ValorDouble);

ShowMessage(Str);

8 9

end;

Listagem 4: Exemplo de concatenao de um valor double usando TStringBuilder.

1
var

2
Str: TStringBuilder;

3 4 5 6 7 8 9 10 11 12

ValorDouble: Double; begin try ValorDouble := 12.11; Str := TStringBuilder.Create; Str.Append(ValorDouble);

ShowMessage(Str.ToString); finally FreeAndNil(Str); end;

13 14

end;

Observao: Note que no foi necessrio nenhuma converso do valor double para string, o prprio mtodo Append se encarrega da converso. A funo ToString faz a converso do contedo StringBuilder para strings. Mas a classe TStringBuilder possui outros mtodos interessantes de se analisar, entre eles vale a pena citar:

AppendFormat();
Mtodo muito semelhante ao Format j existente no Delphi.

AppendLine();
Inseri uma linha vazia no contedo do objeto.

Clear;
Limpa o contedo do objeto.

Replace();
Substitui substring no contedo do objeto.

ToString;
Converte o contedo StringBuilder para string. Bom pessoal esse artigo na verdade foi um overview sobre a classe TStringBuilder, com ela podemos manipular strings facilmente e com a possibilidade de escrever um cdigo mais legvel, seus mtodos so muito semelhantes aos que j existem na VCL. Como citei no incio e pesquisei sobre o assunto, existe a idia de que, com o uso dessa classe pode haver um ganho de performance, mas existe muita divergncia sobre o assunto, ento ficamos com a praticidade do mtodo Append e com o fcil entendimento do cdigo.

http://www.devmedia.com.br/classe-tstringbuilder-delphi/24319

Das könnte Ihnen auch gefallen