String

Delphi

25/09/2005

Como faço para desmembrar um string?
Por exemplo:
Um,Dois,Três,Quatro
Não quero o caracter como retorno e sim a palavra:
String[0] = ´Um´
String[1] = ´Dois´
String[2] = ´Três´
String[4] = ´Quatro´

Obrigado

Obs.: Não importa o caracter separador


Nigro

Nigro

Curtidas 0

Respostas

Bruno Belchior

Bruno Belchior

25/09/2005

por que não usar uma StringList... :?:


GOSTEI 0
Marco Salles

Marco Salles

25/09/2005

so para te dar uma idéia..

procedure DesmenbrarString(s:String;caracter:Char); var i:integer; indice:integer; begin indice:=1; for i:=1 to length(s) do if s[i] = caracter then //caracter separador begin showmessage(copy(s,indice,(i-indice))); indice:=i+1; end; if i > indice then begin showmessage(copy(s,indice,(i-indice))); indice:=i+1; end else begin showmessage(s); end end;



GOSTEI 0
Nigro

Nigro

25/09/2005

Obrigado pela rápida resposta.
Será que não teria algo nativo?


GOSTEI 0
Nigro

Nigro

25/09/2005

Seria legal, com String List, mas não ficaria muito grande?


GOSTEI 0
Bruno Belchior

Bruno Belchior

25/09/2005

Como assim muito grande :?:


GOSTEI 0
Nigro

Nigro

25/09/2005

Coloque aquium código de exemplo


GOSTEI 0
Rjun

Rjun

25/09/2005

var
  Texto: string;
  Lista: TStringList;
  i: integer;
begin
  Texto := ´Um, Dois, Tres, Quatro, Cinco´;
  Lista := TStringList.Create;
  try
    Lista.Delimiter := ´.´;
    Lista.DelimitedText := Texto;
    for i := 0 to Lista.Count - 1 do
      ShowMessage(Lista.Strings[i]);
  finally
    FreeAndNil(Lista);
  end;
end;



GOSTEI 0
Nigro

Nigro

25/09/2005

Valeu mesmo...
Ficou metado do que eu esperava.
Obrigadão...


GOSTEI 0
Fabiano Góes

Fabiano Góes

25/09/2005

Aproveitando a deixa sobre TStringList,
o que exatamente faz :

StringList.Delimiter 

e

StringList.DelimitedText       




GOSTEI 0
Rjun

Rjun

25/09/2005

[b:5bf3db1ac5]Delimiter[/b:5bf3db1ac5] é o caracter que faz a separação dos itens da lista.
[b:5bf3db1ac5]DelimitedText[/b:5bf3db1ac5] é o texto que contém o caracter delimitador que será separado em itens da stringlist.

Estude o exemplo.


GOSTEI 0
Fabiano Góes

Fabiano Góes

25/09/2005

ahhhh,
Rjun desculpe !!!!!!!!!

é que tem um pequeno erro na linha:

  Lista.Delimiter := ´.´; 


seria uma ´,´ no lugar do ´.´

=>
  Lista.Delimiter := ´,´; 



acho que entendi o seu exemplo .

Valeu Rjun pela dica !!!!


GOSTEI 0
Edivaldo_ap

Edivaldo_ap

25/09/2005

Rogério Seguinte:

Estou desenvolvendo um sistema contábil... eu fiz o seguinte para o formato do Plano de contas...Criei uma tela de parametros com um campo dbedit nele o usuário digita o formato do plano exemplo 9.9.99.9999 e grava numa tabela do banco.... peguei o que você postou aí e consegui dividir a string, o que eu gostaria agora é ao invés de depois de for dar um showmessage, eu gostaria de gravar os campos em algum local, para posteriormente utiliza-los... tipo na hora de o usuario cadastrar um conta de nível 2 a mascara ficaria sendo 9.9..

Entendeu... segue o que voce posto na página.

Edivaldo André Pereira

var
Texto: string;
Lista: TStringList;
i: integer;
begin
Texto := ´Um, Dois, Tres, Quatro, Cinco´;
Lista := TStringList.Create;
try
Lista.Delimiter := ´.´;
Lista.DelimitedText := Texto;
for i := 0 to Lista.Count - 1 do
ShowMessage(Lista.Strings[i]);
finally
FreeAndNil(Lista);
end;
end;


GOSTEI 0
Fabiano Góes

Fabiano Góes

25/09/2005

edivaldo_ap, se for só o caso de gravar em algum lugar pode ser assim:

var
  Texto: string;
  Lista: TStringList;
  i: integer; 
begin
  Texto := ´Um, Dois, Tres, Quatro, Cinco´;
  Lista := TStringList.Create;
  try
    Lista.Delimiter := ´,´;
    Lista.DelimitedText := Texto;
    Lista.SaveToFile(´c:\Teste.txt´); // <== 
  finally
    FreeAndNil(Lista);
  end;
end; 


agora se for gravar no Banco de Dados é um pouco diferente, porem muito simples tb..

Um abraço !!!!


GOSTEI 0
Edivaldo_ap

Edivaldo_ap

25/09/2005

Fabiano seria o caso de salvar no banco, porque vou usar sempre isso.

Edivaldo.


GOSTEI 0
POSTAR