Duvida LOOP

Delphi

12/09/2009

var
Leitura:TStrings;
idx,i,Tamanho:integer;
x,x1,x2 : Integer;
linha,y,comp,t:String;
a,b,ax,bx : Char;
begin
  Leitura:=TStringList.Create;
  x := 0;
  try
    Leitura.LoadFromFile(´C:\original.txt´);
    for idx:= 0 to Leitura.Count - 1 do
      begin
      Linha:=Leitura.Strings[idx];
      tamanho:=length(linha);
        for i:=1 to tamanho do
        begin
        x:=x+1;
        y := y + linha[i];
        if x = 2 then
        begin
          a := y[1];
          b := y[2];
          x1 := ord(a);
          x2 := ord(b);
          x1 := x1+1;
          x2 := x2+1;
          ax := chr(x1);
          bx := chr(x2);
          comp := comp+ax;
          comp := comp+bx;
          y := ´´;
          x := 0;
          t := t + comp;
        end;
        comp := ´´;
        end;
        Leitura.Strings[idx]:=t
      end;
  Leitura.SaveToFile(´C:\salvar.txt´);
  finally
    Leitura.Free;
    end;
end;


Estou tentando ler um txt com vários caracteres... dai eu tenho que pegar de 2 em 2 e alterar eles.. eu tava fazendo um teste somente aumentando 1 letra para teste.. mais na verdade vou fazer uma função de encriptação chamada Cifra de Hill... mais a minha duvida e so a seguinte.. ler de 2 em 2.. leio as 2 primeiras mudo elas usando a função mando gravar.. depois leio as outras 2 e assim adiante..

:cry:

qualquer ajuda e bem vinda ;)


Ipeixoto

Ipeixoto

Curtidas 0

Respostas

Ipeixoto

Ipeixoto

12/09/2009

:cry:


GOSTEI 0
Afarias

Afarias

12/09/2009

Dá pra reformular a pergunta?? Não entendi qual sua dúvida.

Só uma dica, seria melhor usar TextFile ou FileStream para ler e escrever o arquivo, TStrings vai ter dificuldade com arquivos grandes. Segue um exemplo (simples, e q funciona apenas para caracteres de 1 byte):


procedure CriarArquivoModificado(const ArqOrigem, ArqDestino: string);
var
  o, d: TStream;
  bo, bd: array[0..1] of byte;
  r, i: Integer;
begin
  o := TFileStream.Create(ArqOrigem, fmOpenRead);
  try
    d := TFileStream.Create(ArqDestino, fmCreate or fmOpenWrite);
    try
      while o.Position<o.Size do
      begin
        r := o.Read(bo, SizeOf(bo));
        for i := 1 to r do
          bd[i-1] := bo[i-1]+1;
        d.Write(bd, r);
      end;
    finally
      d.Free;
    end;
  finally
    o.Free;
  end;
end;


E, se vai trabalhar mesmo com TStringList, pelo menos deixe pra salvar apenas no final da operação, e não a cada ´loop´


T+


GOSTEI 0
POSTAR