Jefferson Pereira Postado Novembro 30, 2008 Denunciar Share Postado Novembro 30, 2008 function MontaString(Nome,separador: String): string;beginNome := Trim(Nome);Result := Nome;{Insere um espaço para garantir que todas as letras sejam testadas}Nome := Nome + #32;{Pega a posição do primeiro espaço}i := Pos(separador, Nome);if i > 0 thenbeginTotalNomes := 0;{Separa todos os nomes}while i > 0 dobeginInc(TotalNomes);Nomes[TotalNomes] := Copy(Nome, 1, i - 1);Delete(Nome, 1, i);i := Pos(#32, Nome);end;end;end;essa função esta quase perfeita pra mim, a minha necessidade é que após ler um string eu conseguise obter todas as posições.ex:a:=Nomes[1]b:=Nomes[2]a minha dificuldade e ter todos esses valores fora da função,pois se escrevo esse código dentro da procedure eu tenho o retorno. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 1, 2008 Denunciar Share Postado Dezembro 1, 2008 essa função esta quase perfeita pra mim, a minha necessidade é que após ler um string eu conseguise obter todas as posições.Jefferson .. voce já tem todas as posições guardadas no array Nomes[TotalNomes] Nomes[TotalNomes] := Copy(Nome, 1, i - 1);como não vi a definição deste array dentro da função, então ela deve estar definida fora da função.... e desta maneira voce pode usar o array para mostrar todas as posições.exemplo:procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin memo1.clear; for i := 1 to Total do Memo1.Lines.Append(Nomes[i]); end; OBS: Crie uma variavel publica chamada Total que recerá o resultado da contagem dos nomes exemplo: function MontaString(Nome,separador: String): string; begin Nome := Trim(Nome); Result := Nome; {Insere um espaço para garantir que todas as letras sejam testadas} Nome := Nome + #32; {Pega a posição do primeiro espaço} i := Pos(separador, Nome); if i > 0 then begin TotalNomes := 0; {Separa todos os nomes} while i > 0 do begin Inc(TotalNomes); Total := TotalNomes; /// total recebe o numero de ocorrencias Nomes[TotalNomes] := Copy(Nome, 1, i - 1); Delete(Nome, 1, i); i := Pos(#32, Nome); end; end; end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Jefferson Pereira
function MontaString(Nome,separador: String): string;
begin
Nome := Trim(Nome);
Result := Nome;
{Insere um espaço para garantir que todas as letras sejam testadas}
Nome := Nome + #32;
{Pega a posição do primeiro espaço}
i := Pos(separador, Nome);
if i > 0 then
begin
TotalNomes := 0;
{Separa todos os nomes}
while i > 0 do
begin
Inc(TotalNomes);
Nomes[TotalNomes] := Copy(Nome, 1, i - 1);
Delete(Nome, 1, i);
i := Pos(#32, Nome);
end;
end;
end;
essa função esta quase perfeita pra mim, a minha necessidade é que após ler um string eu conseguise obter todas as posições.
ex:
a:=Nomes[1]
b:=Nomes[2]
a minha dificuldade e ter todos esses valores fora da função,pois se escrevo esse código dentro da procedure eu tenho o retorno.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.