Ler campo de uma tabela e separar o q esta preenchido ...

Delphi

02/06/2004

PessoALL,

tenho uma campo de uma tabela onde ele sua caracteristica sao:

Paradox
Campo A 90

e tem varios registros preenchidos da seguinte forma:
064105401
065200201

Preciso percorrer a tabela e nesse campo percorrer a string separando de 3 em 3 ... seria +/- assim
1º resgistro
064
105
401

2º registro
065
200
201

como eu poderia fazer ?

Obr pela ajuda


Scandolara

Scandolara

Curtidas 0

Respostas

Biffi

Biffi

02/06/2004

Existem várias formas

var str1,str2,str3 : string;


str1 := copy(table1.fieldbyname(´NOMEDOCAMPO´).AsString,1,3);
str2 := copy(table1.fieldbyname(´NOMEDOCAMPO´).AsString,4,3);
str3 := copy(table1.fieldbyname(´NOMEDOCAMPO´).AsString,7,3);

caso você não soubesse o tamanho da string (valor do campo), poderia utilizar laços de repetição. Mas ai poste aqui detalhadamente o que voce quer fazer.


Espero ter ajudado


GOSTEI 0
Scandolara

Scandolara

02/06/2004

isso .. amigo,

eu nao sei o tamanho certo ... tem variacoes de tamanho ,.,.

como posso fazer isso ?

obr


GOSTEI 0
Biffi

Biffi

02/06/2004

Só me dá uma dica.

Quando conseguir atribuir os três primeiros caracteres para uma variável, o que será feito. Exibir mensagens, incluir em outro campo?

Você pode explicar melhor (mais detalhes) o que desejás fazer, tipo, que separar de três em três para exibir uma mensagem, para somar com outro campo, etc...


GOSTEI 0
Scandolara

Scandolara

02/06/2004

Amigo,

Apos isso , vou adicionar em uma tabela e vou pegar os proximos 3 da string , adciono na tabela, pego o proximo ..., e assim por diante .. ate chegar o fim da string

Ex.:
TABELA da String
Nome Codigo Descicao
MEDE 001 064200250405
MEDE 002 003205500
ADVO 003 011111250033050090010

Tabelas q vou descarregar
Nome Desc
MEDE 064
MEDE 200
MEDE 250
MEDE 405
ADVO 011
ADVO 111
ADVO 250
ADVO 033
ADVO 050
ADVO 090
ADVO 010

É isso q gostaria de fazer ...

e naum estou conseguindo

obr + 1 vvez parceiro

ate


GOSTEI 0
Biffi

Biffi

02/06/2004

vamos ver ser eu entendi direito. Você vai ler um campo de uma tabela e separá-lo em de 3 em 3 caracteres, e a cada uma dessas separações inserir os 3 caracteres em outra.

ficaria assim:
for i:= 1 to length(table1.fieldbyname(´NOMEDOCAMPO´).AsString) do begin
j := 1;
aux := ´´; // variavel tipo string
while j < 4 do begin
aux := aux + table1.fieldbyname(´NOMEDOCAMPO´).AsString[j];
inc(j);
end;
table2.Insert;
table2.fieldbyname(´NOMEDOCAMPO´).AsString := aux;
table2.post;
end;


Caso eu tenha interpretado errado, poste novamente....

valew


GOSTEI 0
Paulo_amorim

Paulo_amorim

02/06/2004

Olá

Independente do que vc quer fazer, vc pode utilizar o Copy e variar num laço de repetição (aqui utilizarei uma função que retorna TStrings):

function SeparaTexto(Texto:String; Quant: Integer): TStrings;
var i : Integer;
begin
     Result := TStringList.Create;
     for  i := 0 to Length(Texto) do
     begin
          Result.Add ( Copy(Texto, i * Quant + 1, Quant) );
     end;
end;


No caso, ele eh bem simples mas acho que atende...

Espero que ajude
Até+


GOSTEI 0
Rômulo Barros

Rômulo Barros

02/06/2004

procedure TForm1.Button1Click(Sender: TObject);
Var
 MyString : String;
 Resp, C: Word;
begin
  MyString := ´12345678´;
  C := 1;
    Repeat
      If(9 Mod C = 0)Then
        ShowMessage(Copy(MyString,C,3));
      inc(C);
    Until(C > Length(MyString));
end;

end.



GOSTEI 0
POSTAR