01/09/2004

formatar string por ,

gostaria de format uma string ex:

´03´,´007´,12345,´CASA´,...

criar tipo variasveis pra pegar os valores tipo ....
a := 03
b := 007
c := 12345
d := casa

os campos caracteres vem com ´ ´ e o inteiro sem ´´


Guibas

Respostas

01/09/2004

Okama

Você pode implementar com as funçõs Copy e Pos, mas pode ocorrer erro quando a string tiver ´,´ ou número decimal dentro dela como: ´01´, 1,25, ´Casa´, ´Cama, Mesa e Banho´

Se a intensão é ler de um arquivo texto use cada variável em uma linha e utilize ReadLn.


Responder Citar

01/09/2004

Aroldo Zanela

Colega,

Leve em consideração o que o Okama mencionou. Fora isto, me parece apropriada o seguinte exemplo:

procedure TForm1.Button1Click(Sender: TObject);
var LineData: String;
    FieldData: String;
    Lista: TStringList;
    nI, nZ, nP: SmallInt;
    a, b, c, d: String;
begin

  LineData  := ´"03","007",12345,"CASA"´;
  Lista     := TStringList.Create;
  Lista.Clear;

  nZ        := Length(LineData);

  For nI := 1 to nZ do
  begin
    nP        := Pos(´,´,LineData);
    FieldData := ´´;
    if nP>0 then
    begin
      FieldData := RetirarAspas(Copy(LineData,1,nP-1));
      LineData  := Copy(LineData,nP+1,Length(LineData)-nP);
      Lista.Add(FieldData);
    end else
    begin
      FieldData := RetirarAspas(Copy(LineData,nP+1,Length(LineData)));
      Lista.Add(FieldData);
      break;
    end;
  end;

  a := Lista.Strings[0&93;;
  b := Lista.Strings&91;1&93;;
  c := Lista.Strings&91;2&93;;
  d := Lista.Strings&91;3&93;;

  ShowMessage(a+10+b+10+c+10+d);

  Lista.Free;
end;
function RetirarAspas(Expressao: String): String;
var nI, nZ: SmallInt;
begin
  nZ      := Length(Expressao);
  Result  := ´´;
  for nI := 1 to nZ do
  begin
    if Expressao&91;nI&93;<>´"´ then
      Result := Result + Expressao&91;nI&93;;
  end;
end;



Responder Citar