manipulacao de String

Delphi

14/01/2004

Gente, to precisando de um help urgente mesmo.

Fiz uma aplicacao cliente/servidor, mas o programa cliente fico com 5M, por causa do BDE, ai resolve fazer um banco de dados no cliente, usando um txt. Mas to me batendo pra destribui ele. Assim preciso que cada valor entre <> seja jogado em uma variavel do tipo String. Eis um exemplo:

<Henry><Curitiba><221075981><Programador>

Preciso de uma rotina que fique assim:
Nome: Henry
Cidade: Curitiba
ICQ: 221075981
Profissao: Programador.

Desde ja agradeco, um abraco, Henry.


Henry

Henry

Curtidas 0

Respostas

Beppe

Beppe

14/01/2004

procedure ParseTags(const Data: String; const Fields: array of String; Lines: TStrings);
var
  Stream: TStream;
  I: Integer;
begin
  Stream := TStringStream.Create(Data);
  try
    with TParser.Create(Stream) do
    try
      for I := Low(Fields) to High(Fields) do
      begin
        if Token = ´<´ then
        begin
          if NextToken = toEof then Exit;
          Lines.Add(Format(´¬s: ¬s´, [Fields[I], TokenString]));
          if NextToken <> ´>´ then Exit;
          if NextToken = toEof then Exit;
        end;
      end;
    finally
      Free;
    end;
  finally
    Stream.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ParseTags(Edit1.Text, [´Nome´, ´Cidade´, ´ICQ´, ´Profissão´], Memo1.Lines);
end;


O TParser é meio podrão, mas fez direitinho.


GOSTEI 0
Henry

Henry

14/01/2004

Miguinho Bipi, pode explica o codigo pra mim???
E me diz uma coisa, ele funciona pra quantos campos eu quise?


GOSTEI 0
Beppe

Beppe

14/01/2004

Pode ter quantos campos quiser, que são passados como argumento no open array Fields.

Ex: Desde que haja um campo idade na string a ser analizada, você pode acrescentar ´Idade´ naquele array.

PS: amanhã posso te explicar melhor, falow. :)


GOSTEI 0
Otto

Otto

14/01/2004

Aqui em casa funcionou blz.... gostei do exemplo e ja guardei aqui em casa. :wink:


GOSTEI 0
Beppe

Beppe

14/01/2004

Aqui em casa funcionou blz.... gostei do exemplo e ja guardei aqui em casa. :wink:


Vai me pagar pelos direitos?

PS: Tô brincando :twisted: , mas vai me pagar? :)


GOSTEI 0
POSTAR