Ajuda com Arquivo Texto

Delphi

30/05/2006

Seguinte galera
Agradeço a todos de coração pela enorme ajuda com minha outra duvida

agora tenho + uma duvida que parece ser sinistra

eu tenho um arquivo ( JOB051.TXT ) que eu preciso pegar alguns dados dele e passar para outro arquivo ( JOB051MODIF.TXT ).

Se os Dados fossem todos na mesma linha eu usaria um copy(linha, 64, 7); e talz...

porem eu preciso pegar o campo q esta na linha de numero 10 do arquivo ( JOB051.TXT ).

O que eu sei:

function Copia(Linha: string): string;
var
MATR : string;
begin
MATR := Copy(Linha, 9, 4);


Eu copiaria na linha atual apartir do 9 caracter 4 caracters

o problema é q a matricula naum fica na primeira linha do arquivo + sim na 10 linha

qual procedimento devo tomar para passar para a decima linha e fazer a contagem dos caracters normalmente

sei la existe algo como Copy(Linha*10, 9, 4); eu ja tentei de tudo ate isso auhauahuah + naum funcionou :(


me ajudem pls...

abraço a todos!


Topetebg

Topetebg

Curtidas 0

Respostas

Eliasexner

Eliasexner

30/05/2006

Olá


Se vc estiver usando um arquivo de parametros onde cada linha representa um determinado
parametro, vc poderá usar a rotina abaixo que identifica o valor de cada linha baseado
no titulo do parametro. porém, o conteúdo deverá estar separado do sinal de ´=´ do título

Ex: MATRICULA=0032533


segue...
procedure TMainForm.Button1Click(Sender: TObject);
var
Lista: TStringList;
CaptionW: TCaption;
begin
if FileExists(ExtractFilePath(ParamStr(0)) + ´\Params.txt´) then
begin
Lista := TStringList.Create;
lista.LoadFromFile(ExtractFilePath(ParamStr(0)) + ´\Params.txt´);
ShowMessage(lista.Text);
if Lista.IndexOfName(UpperCase(´matricula´)) <> -1 then
begin
CaptionW := Lista.Values[UpperCase(´matricula´)];
ShowMessage(CaptionW);
end;
if lista <> nil then lista.free;
end;
end;




caso vc não use uma linha para cada parametro, vc poderia fazer um loop no arquivo até a linha 10 caso
ele esteja sempre nesta linha e ler o conteúdo com a função copy.

Espero ter ajudado


GOSTEI 0
Massuda

Massuda

30/05/2006

O jeito mais simples, mas não o mais eficiente, é usar um TStringList...
var
  Texto: TStringList;
  S: string;
...
  Texto := TStringList.Create;
  Texto.LoadFromFile(´seu\arquivo\texto.txt´);

  // como TStringList numera as linhas a partir de 0,
  // para pegar a linha 10, use Texto[9]
  S := Copy(Texto[9], 9, 4);

  Texto.Free;
...



GOSTEI 0
Topetebg

Topetebg

30/05/2006

o arquivo tem umas 500 linhas
na linha 1 tem o pagamento do cara
na linha 5 tem o nome do cara
na linha 8 tem o cpf do cara
na linha 10 a matricula

dai ja vem outro cara abaixo de novo
linha 1 apos a 10 anterior tem o pagamento do cara novo
na linha 5 apos a linha 10 anterior tem o pagamento do cara novo

e etc...

e abixo comeca tudo de novo com outro cara
e etc

ate acabar o arquivo


so q naum é essa a ordem ta...
os numeros da linha eu inventei foi so como exemplo

na verdade a matricula fica na linha 52 da posicao 65 ate a posicao 72
era so pra ter uma ideia
eu disponibilizei uma copia do arquivo para vcs deem uma olhada e veja o q da pra ser feito

olha o link
http://www.megaupload.com/?d=3AJW2HNL

Vou explicar os campos q quero
MATRICULA: linha 52 posicao 65 ate 72
VLCM: linha 52 posicao 83 ate 85
dai pula 55 linhas e repete o procedimento acima
MATRICULA: posicao 65 ate 72
VLCM: posicao 83 a 85
dai pula + 55 linha e continua
MATRICULA: 65 ate 72
VLCM: 83 a 85

e assim por diante ate acabar o arquivo TXT

lembrando q cada matricula + VLCM em cada linha do outro arquivo de saida

ou seja

pula 52 linhas copia a matricula e vlcm para a linha 1 do outro arquivo texto
pula 55 linhas copia a matricula e vlcm para a linha 2 do outro arquivo texto
Pula + 55 linhas copia a matricula e vlcm para a linha 3 do outro arquivo texto

assim ate acabar o arquivo txt


blz? nada complicado...




lembrando o link

http://www.megaupload.com/?d=3AJW2HNL


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

30/05/2006

Colega,

Como era de se esperar em arquivos textos para troca de informações, o arquivo possui identificadores de registros. No caso, o identificador que interessa neste momento é o [b:b99625e359]C1[/b:b99625e359], ou seja, apenas os registros (linhas) com identificador [b:b99625e359]C1[/b:b99625e359] nas duas primeiras posições de cada linha deverão ser avaliados.
Fiz um exemplo utilizando um TButton (btn1) e um TMemo (mmo1) com o arquivo baixado no diretório recebe.

var Arquivo: TextFile;
    LocalNome: string;
    LinhaDados: string;
begin
  LocalNome := ´c:\recebe\job051.txt´;
  AssignFile(Arquivo, LocalNome);
  Reset(Arquivo);

  while not Eof(Arquivo) do
  begin
    Readln(Arquivo, LinhaDados);
    if Copy(LinhaDados, 1, 2)=´C1´ then
    begin
      mmo1.Lines.Add(Copy(LinhaDados, 65, 10));
    end;
  end;

  CloseFile(Arquivo);
end;



GOSTEI 0
Topetebg

Topetebg

30/05/2006

nossa era exatamente isso que eu queria
brigadaum a todos... como sempre vc´s me ajudaram na minha angustia


:P


vlw galera vc´s sao nota 10

:D


GOSTEI 0
POSTAR