strings

07/02/2006

0

Oi pessoal,


[u:a2c8ab0423]Tenho a seguinte string:[/u:a2c8ab0423]

strig := ´um.dois.tres´

[u:a2c8ab0423]E queria passar o array_string, de modo a que o conteudo ficasse:[/u:a2c8ab0423]

array_string[0]:=´um´;
array_string[1]:=´dois´;
array_string[2]:=´tres´;

Sendo strig de tamanho indefinido, ou seja, pode ter X ponto.

Resumindo queria que sempre que encontrasse um ponto array_string incrementava o indice.


Um bocado confuso mas espero ter-me explicado bem

Agradecia a ajuda


Nilpedro

Nilpedro

Responder

Posts

07/02/2006

José Henrique

Use TStringList

var
  strlTeste : TStringList;
  i, n : integer;
begin
   try
     strlTeste := TStringList.Create;
     strlTeste.Delimiter := ´.´;   este é o separador escolhido pelo você
     strlTeste.DelimitedText := ´um.dois.tres´
     n := strlTeste.Count;
     for i := 1 to strlTeste.Count;
        ShowMessage(strlTeste[i]);
   finally
     strlTeste.Release;
   end;
end;



Responder

07/02/2006

José Henrique

Não precisa da variável n
var 
  strlTeste : TStringList; 
  i : integer; 
begin 
   try 
     strlTeste := TStringList.Create; 
     strlTeste.Delimiter := ´.´;   //este é o separador escolhido pelo você 
     strlTeste.DelimitedText := ´um.dois.tres´ ; 
     for i := 1 to strlTeste.Count; 
        ShowMessage(strlTeste[i]); 
   finally 
     strlTeste.Release; 
   end; 
end; 
 



Responder

08/02/2006

Nilpedro

Agradeço a ajuda,


Mas estou trabalhando com Dephi 5 e este comando nao dá. Se tiverem outra sujestao :wink:


Responder

08/02/2006

Aroldo Zanela

Colega,

Acredito que funcione em todas as versões:

var LineData: String;
    I, X: Integer;
    FieldsData: TStringList;
begin
  FieldsData  := TStringList.Create;
  LineData    := ´um.dois.tres´;
  try
    while Length(LineData)>0 do
    begin
      X := Pos(´.´,LineData);
      if X>0 then
      begin
        FieldsData.Add(Copy(LineData, 1, X-1));
        LineData := Copy(LineData, X+1, Length(LineData)-x);
      end else
      begin
        FieldsData.Add(LineData);
        LineData := ´´;
      end;
    end;
  finally
    FieldsData.Free;
  end;



Responder

08/02/2006

Michael

Dica: Encapsule a dica do colega [b:6add323a92]Aroldo [/b:6add323a92]em uma procedure:

procedure ParseString(S, Delimiter: string; Strings: TStrings);
var
  X: Integer;
begin
  while Length(S) > 0 do
  begin
    X := Pos(Delimiter, S);
    if X > 0 then
    begin
      Strings.Add(Copy(S, 1, X - 1));
      S := Copy(S, X + 1, Length(S) - X);
    end 
    else
    begin
      Strings.Add(S);
      S := ´´;
    end;
  end;
end;


[]´s
[]´s


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar