Fórum Duvida LOOP #374845
12/09/2009
0
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
Curtir tópico
+ 0
Responder
Posts
13/09/2009
Ipeixoto
:cry:
Responder
Gostei + 0
14/09/2009
Afarias
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):
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+
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+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)