Fórum Dúvida - TXT #374283

29/08/2009

0

assignfile(arquivo,opendialog1.FileName); 
reset(arquivo); // ARMAZENA
readln(arquivo,conteudotxt); 


Tenho uma pergunta fiz um programa porém ele só ler a quantidade de linha que eu quiser.. como eu faço para ele ler todo o txt independendo da quantidade de linha que o mesmo tenha??

Obrigado!! ;)


Ipeixoto

Ipeixoto

Responder

Posts

29/08/2009

Prmcibor

Se entendi o que voce quer, vc pode fazer um While NOT EOF



assignfile(arquivo,opendialog1.FileName);
reset(arquivo); // ARMAZENA
WHILE NOT EOF(arquivo) do
begin
  readln(arquivo,conteudotxt); 
end;




Responder

Gostei + 0

30/08/2009

Marco Salles

Pode tb usar a VCL ( RichEdit , Memo , ListBox etc...)

procedure TForm1.Button1Click(Sender: TObject);
begin
opendialog1.InitialDir:=´C:\CaminhoPreferido\etx´;
if opendialog1.Execute then
  richedit1.Lines.LoadFromFile(openDialog1.FileName);
end;



Responder

Gostei + 0

30/08/2009

Ipeixoto

opendialog1.InitialDir := ´C:\´;
if opendialog1.Execute then //LER O ARQUIVO
assignfile(arquivo,opendialog1.FileName);
reset(arquivo);
WHILE NOT EOF(arquivo) do
begin
readln(arquivo,textoo);
for i := 1 to length(textoo) do {varre da primeira posição até a última}
begin


Deixa eu tentar explicar.. e porque o seguinte eu to carregando um arquivo txt de multiplas linhas.. depois eu teria que salvar esse conteudo (textfile) em um string.. após isso ler caractere por caractere para fazer um processo de encriptação.. que é o que está ocorrendo no último FOR..(matéria da encriptação da faculdade.) e após encriptado simplismente mandar esse texto encriptado (string) que irá enviar como parametro para um procedimento para salvar em outro txt.. meu problema e só conseguir ler todo esse arquivo txt multiplas linhas e por em uma string.. eu tava tentando com o código acima só que da erro 104 I/o =/

alguém pode me ajudar?


Responder

Gostei + 0

30/08/2009

Marco Salles

não há dificuldade nisso

procedure TForm1.Button1Click(Sender: TObject);
var
Lista:TStrings;
idx:integer;
begin
Lista:=TStringList.Create;
try
lista.LoadFromFile(´CaminhoDoArquivoValido´);
for idx:= 0 to Lista.Count - 1 do
  lista.Strings[idx]:=´Posso a cada Linha Alterar o Conteudo´ ;
Lista.SaveToFile(´QuerSalvarAonde\ArquivoEncriptografato.txt´);
finally
Lista.Free;
end;
end;
end;



é claro que aonde vc lê

lista.Strings[idx]:=´Posso a cada Linha Alterar o Conteudo´ ;

Provavelmente é uma função Criptografia


function Criptografar(const Str:String):String;
begin
result:=Str;
result:=´Muda Aqui Faça Assim Modifique´;
end;


lista.Strings[idx]:=Criptografar(  lista.Strings[idx]);



Responder

Gostei + 0

31/08/2009

Ipeixoto

marcos mais na verdade oque o professor disse e eu não soube falar e o seguinte..

eu tenhu uma txt por exemplo:

aajsnia
asjnaisjn
ajsniahs
ajsniahsniasj

ou seja vários caracteres em várias linhas diferentes.. e eu tenho que ler caractere por caractere fazer a função de encriptar entendeu??

não colocar toda uma linha ou todo um txt em uma string pq dependendo do tamanho pode da estouro.. =//


Responder

Gostei + 0

31/08/2009

Marco Salles

para ler caracter por caracter basta usar ;

procedure TForm1.Button2Click(Sender: TObject);
var
Lista:TStrings;
idx,i,Tamanho:integer;
linha:String;
begin
  Lista:=TStringList.Create;
  try
    lista.LoadFromFile(´CaminhoDoArquivoValido´);
    for idx:= 0 to Lista.Count - 1 do
      begin
      Linha:=lista.Strings[idx];
      tamanho:=length(linha);
        for i:=1 to tamanho do
          Linha[i]:=´A´;  //Aqui entra as suas condiçoes
        lista.Strings[idx]:=Linha
      end;
    Lista.SaveToFile(´QuerSalvarAonde\ArquivoEncriptografato.txt´);
  finally
    Lista.Free;
    end;
end;



Responder

Gostei + 0

03/09/2009

Ipeixoto

Marcos só tá dando um erroo..!

procedure TForm1.Button1Click(Sender: TObject);
var
encriptLista:TStrings;
idx,i,Tamanho, codasc, key, calc:integer;
linha:String;
temp : Char;
begin
  encriptLista:=TStringList.Create;
  key := strtoint(edit1.Text);
  try
    encriptlista.LoadFromFile(´C:\original.txt´);
    for idx:= 0 to encriptLista.Count - 1 do
      begin
      Linha:=encriptlista.Strings[idx];
      tamanho:=length(linha);
        for i:=1 to tamanho do
        begin
        calc := key mod 256;
        codasc := ord(linha[i]);
        calc := calc + codasc;
        temp := Chr(calc);
        Linha[i]:=temp;
        encriptlista.Strings[idx]:=Linha
        end;
      end;
    encriptLista.SaveToFile(´C:\encript.txt´);
  finally
    encriptLista.Free;
    end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
decriptLista:TStrings;
didx,di,dTamanho, dcodasc, dkey, dcalc:integer;
dlinha:String;
dtemp : Char;
begin
  decriptLista:=TStringList.Create;
  try
    decriptlista.LoadFromFile(´C:\encript.txt´);
    dkey := strtoint(edit1.Text);
    for didx:= 0 to decriptLista.Count - 1 do
      begin
      dLinha:=decriptlista.Strings[didx];
      dtamanho:=length(dlinha);
        for di:=1 to dtamanho do
        begin
        dcalc := dkey mod 256;
        dcodasc := ord(dlinha[di]);
        dcalc := dcodasc - dcalc;
        dtemp := Chr(dcalc);
        dLinha[di]:=dtemp;
        decriptlista.Strings[didx]:=dLinha
        end;
      end;
    decriptLista.SaveToFile(´C:\decript.txt´);
  finally
    decriptLista.Free;
    end;
end;

end.


Acontece o seguinte quando eu coloco a chave de encriptação 1 por exemplo.. ele retorna a txt original mesmo.. ou seja isso fala q a rotina de encriptação que e uma soma besta e decriptção está certa.. pq quando eu coloco outros números da errado??

=// to desesperado já!


Responder

Gostei + 0

03/09/2009

Marco Salles

Dá errado pq vc ta colocando as coisas no Lugar ERRADO

Vamos primeiro na encriptação

procedure TForm1.Button1Click(Sender: TObject); var encriptLista:TStrings; idx,i,Tamanho, codasc, key, calc:integer; linha:String; temp : Char; begin encriptLista:=TStringList.Create; key := strtoint(edit1.Text); try encriptlista.LoadFromFile(´C:\original.txt´); for idx:= 0 to encriptLista.Count - 1 do begin Linha:=encriptlista.Strings[idx]; tamanho:=length(linha); for i:=1 to tamanho do begin calc := key mod 256; codasc := ord(linha[i]); calc := calc + codasc; temp := Chr(calc); Linha[i]:=temp; encriptlista.Strings[idx]:=Linha *******LOCAL TA ERRADO end; end; encriptLista.SaveToFile(´C:\encript.txt´); finally encriptLista.Free; end; end;



procedure TForm1.Button1Click(Sender: TObject);
var
encriptLista:TStrings;
idx,i,Tamanho, codasc, key, calc:integer;
linha:String;
temp : Char;
begin
encriptLista:=TStringList.Create;
key := strtoint(edit1.Text);
try
encriptlista.LoadFromFile(´C:\original.txt´);
for idx:= 0 to encriptLista.Count - 1 do
begin
Linha:=encriptlista.Strings[idx];
tamanho:=length(linha);
for i:=1 to tamanho do
begin
calc := key mod 256;
codasc := ord(linha[i]);
calc := calc + codasc;
temp := Chr(calc);
Linha[i]:=temp;
end;
encriptlista.Strings[idx]:=Linha ******AQUI Hooooooooooooo
end;
encriptLista.SaveToFile(´C:\encript.txt´);
finally
encriptLista.Free;
end;
end;


Responder

Gostei + 0

03/09/2009

Ipeixoto

procedure TForm1.Button1Click(Sender: TObject);
var
encriptLista:TStrings;
idx,i,Tamanho, codasc, key, calc:integer;
linha:String;
temp : Char;
begin
  encriptLista:=TStringList.Create;
  key := strtoint(edit1.Text);
  try
    encriptlista.LoadFromFile(´C:\original.txt´);
    for idx:= 0 to encriptLista.Count - 1 do
      begin
      Linha:=encriptlista.Strings[idx];
      tamanho:=length(linha);
        for i:=1 to tamanho do
        begin
        calc := key mod 256;
        codasc := ord(linha[i]);
        calc := calc + codasc;
        temp := Chr(calc);
        Linha[i]:=temp;
        end;
        encriptlista.Strings[idx]:=Linha
      end;
    encriptLista.SaveToFile(´C:\encript.txt´);
  finally
    encriptLista.Free;
    end;

end;
procedure TForm1.Button2Click(Sender: TObject);
var
decriptLista:TStrings;
didx,di,dTamanho, dcodasc, dkey, dcalc:integer;
dlinha:String;
dtemp : Char;
begin
  decriptLista:=TStringList.Create;
  try
    decriptlista.LoadFromFile(´C:\encript.txt´);
    dkey := strtoint(edit1.Text);
    for didx:= 0 to decriptLista.Count - 1 do
      begin
      dLinha:=decriptlista.Strings[didx];
      dtamanho:=length(dlinha);
        for di:=1 to dtamanho do
        begin
        dcalc := dkey mod 256;
        dcodasc := ord(dlinha[di]);
        dcalc := dcodasc - dcalc;
        dtemp := Chr(dcalc);
        dLinha[di]:=dtemp;
        end;
        decriptlista.Strings[didx]:=dLinha
      end;
    decriptLista.SaveToFile(´C:\decript.txt´);
  finally
    decriptLista.Free;
    end;
end;


Marcos bem fiz como vc falou porem ainda não deu certo.. =// séra o pascal?? pq em c da certo =/

coloquei chave 12 e nem deu.. pq as vezes no encript.txt aparece ? ai não da certo =//


Responder

Gostei + 0

03/09/2009

Marco Salles

Cara testa ai

Teste aqui e deu certinho

A função de encriptografar é sua.. Mas mesmo assim me arrisquei com
ela.. Encriptografei e descriptografei

Usei o Txt Original assim ;
Mudar testo
Outra Linha


Encriptografou assim
Responder

Gostei + 0

04/09/2009

Ipeixoto

você usa qual S.O e versão do delphi??

aqui eu to usando o Windows Vista + delphi 2009 lite

ele encripta assim
Responder

Gostei + 0

04/09/2009

Marco Salles

Uso Vista + Delphi2007 .. e posso garantir que ficou beleza

Bem o tipo String e o Tipo Char no delphi2009 , houve uma pequena mudança
Ainda não cheguei lá . Mas acho que eles sofreram alterações para receber
os Padrões Unicode..


Responder

Gostei + 0

04/09/2009

Ipeixoto

vou tentar o baixar o Delphi2007 pq tentei de tudo e o encript e decript não da mesmo.. tentei até com o delphi 7 e tbm não dá isso e pra segunda.. vou tentar obrigado ;(


Responder

Gostei + 0

04/09/2009

Ipeixoto

Marcos meu amigoo deu certo muito obrigado pelo seu tempo..

:P


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar