GARANTIR DESCONTO

Fórum inserndo texto... #260072

25/11/2004

0

Olá galera.

o seguinte: preciso de uma rotina para inserir uma frase em um arquivo txt salvo no HD. Sendo que pulando uma linha.

Como faço?


Slyavalon

Slyavalon

Responder

Posts

26/11/2004

Asensio

Olá,

1º Você quer savar esse textos no seu HD ou quer pegar um arquivo salvo do HD e inserir as frases como vc quer?

Só preciso entender isso para poder passar as cordenadas corretas para você.


Fui


Responder

Gostei + 0

26/11/2004

Rômulo Barros

...
Var
  Linhas : TStrings;
Begin
   Try
      Linhas := TStringList.Create();
      Linhas.LoadFromFile(´C:\Arquivo.txt´);
      Linhas[1] := ´Minha Frase na Segunda Linha do Arquivo´;
      Linhas.SaveToFile(´C:\Arquivo.txt´);
   Finally
   End;
End;


:wink: :wink: :wink: :wink: :wink:


Responder

Gostei + 0

26/11/2004

Rômulo Barros

[color=green:adb27dec7a][b:adb27dec7a]Corrigindo:[/b:adb27dec7a][/color:adb27dec7a]
[quote:adb27dec7a=´Undeclared Identifier´]
...
Var
  Linhas : TStrings;
Begin
   Try
      Linhas := TStringList.Create();
      Linhas.LoadFromFile(´C:\Arquivo.txt´);
      Linhas[1] := ´Minha Frase na Segunda Linha do Arquivo´;
      Linhas.SaveToFile(´C:\Arquivo.txt´);
   Finally
   End;
End;


:wink: :wink: :wink: :wink: :wink:[/quote:adb27dec7a]

... 
Var 
  Linhas : TStrings; 
Begin 
   Try 
      Linhas := TStringList.Create(); 
      Linhas.LoadFromFile(´C:\Arquivo.txt´); 
      Linhas[1] := ´Minha Frase na Segunda Linha do Arquivo´; 
      Linhas.SaveToFile(´C:\Arquivo.txt´); 
   Finally 
      FreeAndNil(Linhas);
   End; 
End;



Responder

Gostei + 0

26/11/2004

Paulo_amorim

Olá

Pode-se também trabalhar com o arquivo texto direto, sem uso de TStrings:

var
   txt: TextFile;
begin
  AssignFile(txt, <seu arquivo>);
  try
    Reset(txt);
    Writeln(txt, Chr(13) + <sua string>);
  finally
    CloseFile(txt);
  end;
end;


Undeclared Identifier, tua rotina deve gerar um Warning: tire o create do bloco finally...

Linhas := TStringList.Create;
try
{ ... }
finally
  Linhas.Free;
end;



Responder

Gostei + 0

26/11/2004

Rômulo Barros

Undeclared Identifier, tua rotina deve gerar um Warning: tire o create do bloco [b:3b420af00b]finally... [/b:3b420af00b]


:?: :?: :?: :?: :?:


Responder

Gostei + 0

26/11/2004

Paulo_amorim

Olá

Tire o Create do bloco try..finally

   Linhas := TStringList.Create();
   try
      Linhas.LoadFromFile(´C:\Arquivo.txt´);
      Linhas[1] := ´Minha Frase na Segunda Linha do Arquivo´;
      Linhas.SaveToFile(´C:\Arquivo.txt´);
   finally
      FreeAndNil(Linhas);
   End;


Até+


Responder

Gostei + 0

26/11/2004

Rômulo Barros

Olá Tire o Create do bloco try..finally
   Linhas := TStringList.Create();
   try
      Linhas.LoadFromFile(´C:\Arquivo.txt´);
      Linhas[1] := ´Minha Frase na Segunda Linha do Arquivo´;
      Linhas.SaveToFile(´C:\Arquivo.txt´);
   finally
      FreeAndNil(Linhas);
   End;
Até+


Agora eu entendi :wink:

Mas, se eu fizer isso e ocorre qualquer erro durante o CREATE da minha TStrings, a mesma não será liberada de memória. [b:312d47b832]Né isso?[/b:312d47b832]


Responder

Gostei + 0

27/11/2004

Massuda

[quote:d3a0cb4bd2=´Undeclared Identifier´]Mas, se eu fizer isso e ocorre qualquer erro durante o CREATE da minha TStrings, a mesma não será liberada de memória.[/quote:d3a0cb4bd2]Seu raciocínio está correto. Entretanto, quando ocorre um problema em um construtor, o Delphi garante que o [b:d3a0cb4bd2]destrutor é executado automaticamente[/b:d3a0cb4bd2] e assim não ocorre o leak de memória.

É como se o compilador gerasse o seguinte código para seu construtor:
constructor TFooBar.Create;
  // ...
begin
  try
    // seu código aqui
  except
    Free;
  end;
end;


Por outro lado, isso significa que o destrutor de uma classe deve estar sempre preparado para o caso do objeto não ter sido completamente construído.


Responder

Gostei + 0

28/11/2004

Slyavalon

Galera valeu mesmo, muito obrigado pelas dicas!!!!


Responder

Gostei + 0

29/11/2004

Paulo_amorim

Olá

[quote:ebfd8591e7=´Undeclared Identifier´]Mas, se eu fizer isso e ocorre qualquer erro durante o CREATE da minha TStrings, a mesma não será liberada de memória. [b:ebfd8591e7]Né isso?[/b:ebfd8591e7][/quote:ebfd8591e7]

Mas se ocorrer um erro durante o CREATE ele não terá sido criado, e portanto não haverá o que ser destruído, certo?
Por exemplo, se ele não encontrar o arquivo especificado, ele irá gerar erro e não será instanciado... portanto não será necessário o Free..

Até+


Responder

Gostei + 0

29/11/2004

Rômulo Barros

Olá [quote:4bf4f90ddd=´Undeclared Identifier´]Mas, se eu fizer isso e ocorre qualquer erro durante o CREATE da minha TStrings, a mesma não será liberada de memória. [b:4bf4f90ddd]Né isso?[/b:4bf4f90ddd]


Mas se ocorrer um erro durante o CREATE ele não terá sido criado, e portanto não haverá o que ser destruído, certo?
Por exemplo, se ele não encontrar o arquivo especificado, ele irá gerar erro e não será instanciado... portanto não será necessário o Free..

Até+[/quote:4bf4f90ddd]

[color=green:4bf4f90ddd][b:4bf4f90ddd]Entendi, Paulo A. Obrigado !!![/b:4bf4f90ddd][/color:4bf4f90ddd] :wink: :wink: :wink:


Responder

Gostei + 0

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

Aceitar