Fórum String #296913

25/09/2005

0

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

Responder

Posts

25/09/2005

Bruno Belchior

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


Responder

Gostei + 0

25/09/2005

Marco Salles

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;



Responder

Gostei + 0

25/09/2005

Nigro

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


Responder

Gostei + 0

25/09/2005

Nigro

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


Responder

Gostei + 0

26/09/2005

Bruno Belchior

Como assim muito grande :?:


Responder

Gostei + 0

26/09/2005

Nigro

Coloque aquium código de exemplo


Responder

Gostei + 0

26/09/2005

Rjun

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;



Responder

Gostei + 0

26/09/2005

Nigro

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


Responder

Gostei + 0

27/09/2005

Fabiano Góes

Aproveitando a deixa sobre TStringList,
o que exatamente faz :

StringList.Delimiter 

e

StringList.DelimitedText       




Responder

Gostei + 0

27/09/2005

Rjun

[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.


Responder

Gostei + 0

27/09/2005

Fabiano Góes

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 !!!!


Responder

Gostei + 0

09/11/2005

Edivaldo_ap

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;


Responder

Gostei + 0

10/11/2005

Fabiano Góes

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 !!!!


Responder

Gostei + 0

11/11/2005

Edivaldo_ap

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

Edivaldo.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar