Newsgroup: it.comp.lang.delphi
Titolo: [D5 + FILE DI TESTO]

Gentili partecipanti del nw di DELPHI,
sono un principiante alle prime armi con Delphi, (ex VB) e mi trovo nella
situazione di dover effettuare questo tipo di operazione ma non so come fare
potreste aiutarmi ???
Devo da un file di testo leggere un riga (normalmente uso la funzione
ReadLn), modifcare alcuni caratteri e poi riscriverla nella stessa
posizione, nello stesso file, ma chiaramente diversa dalla riga iniziale.
Il problema sussiste nel momento in cui chiamo la funzione WriteLn, viene
sollevata un'eccezzione n° 103 File I/O error.
Grazie per il vostro prezioso aiuto.
Saluti, Michele

 wrote in message
4iA97.5603$y_3.4...@news.infostrada.it...


 ha scritto nel messaggio
news:oSC97.21380$%7.26...@news6.giganews.com...


sollevata un'eccezzione n° 103 File I/O error.
Non puoi fare una cosa del genere.
O apri il file come binario o riscrivi il file.
Su file di testo non e' possibile compiere un'operazione del
genere.
--
CyberWalkie - walkietalkie(at)
libero.it

 wrote:

Non puoi. I file di testo possono essere aperti  o in lettura o in scrittura.
Se il file non è enorme potresti leggerlo tutto (magari usando, come consigliato
TStringList), modificarlo  e riscriverlo, oppure, ma le cose si complicano, non
come file di testo.
Massimo.
-- 
"Ciao Rex, che cavolo di situazione eh? Due dentro, due fuori, puo' succedere di tutto!"

genere.
Ops.. ho scritto piu' o meno le tue stesse cose prima di leggere la tua
risposta. Mi scuso :)


 ha scritto nel messaggio
news:4iA97.5603$y_3.4...@news.infostrada.it...


 il file di testo.
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('C:\tuofile.txt');
    //fai le modifiche
    sl.SaveToFile('C:\tuofile.txt');
  finally
    sl.Free;
  end
end;
Ciao, Antò.

 ha scritto nel messaggio
news:Xns90F0781AD4F2Ean...@212.41.208.70...


testo.
Versione senza TStringList :
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var InputFile, OutputFile : TextFile ;
    StringaLetta, StringaScritta : String ;
begin
  AssignFile( InputFile, 'C:\MYSQL\DOCS\MANUAL.TXT' ) ;
  AssignFile( OutputFile, 'C:\WINDOWS\DESKTOP\OUTPUT.TXT' ) ;
  Reset( InputFile ) ;
  Rewrite( OutputFile ) ;
  while not Eof( InputFile ) do
  begin
    ReadLn( InputFile, StringaLetta ) ;
    StringaScritta := UpperCase( StringaLetta ) ;
    WriteLn( OutputFile, StringaScritta ) ;
  end ;
  CloseFile( InputFile ) ;
  CloseFile( OutputFile ) ;
end.
Versione con TStringList :
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, Classes ;
var Stream : TStringList ;
    I : Integer ;
begin
  Stream := TStringList.Create ;
  Stream.LoadFromFile( 'C:\MYSQL\DOCS\MANUAL.TXT' ) ;
  for I := 0 to Stream.Count - 1 do
  begin
    Stream.Strings[I] := UpperCase( Stream.Strings[I] ) ;
  end ;
  Stream.SaveToFile( 'C:\WINDOWS\DESKTOP\OUTPUT.TXT' ) ;
end.
--
CyberWalkie - walkietalkie(at)
libero.it

uses SysUtils;
[...]
non ho controllato, ma... sicuro che la SysUtils serva? io per il fatto 
che mi venivano sempre fuori dei programmi di dimensioni mostruose 
(oltre 40kb per programmi banali) ci sono impazzito un bel po', per poi 
scoprire che SysUtils (inserita sempre automaticamente nei nuovi 
progetti...), tra resourcestring e inizializzazione, "stazza" oltre 20kb 
fissi (cioč anche se non usi una sola funzione di quella Unit). Per non 
parlare della Classes :/
Fateci attenzione...

non ho controllato, ma... sicuro che la SysUtils serva?
Non lo so, ma non e' una questione che, onestamente, mi
interessa approfondire...
--
CyberWalkie - walkietalkie(at)
libero.it