Array
(
)

formatar string por ,

Guibas
   - 01 set 2004

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


Okama
   - 01 set 2004

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.


Aroldo Zanela
   - 01 set 2004

Colega,

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

#Código

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];
b := Lista.Strings[1];
c := Lista.Strings[2];
d := Lista.Strings[3];

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[nI]<>´"´ then
Result := Result + Expressao[nI];
end;
end;