2016-06-23 23 views
-2

私はlazarusを使用しています。私はtxtファイルに情報を保存したかったのです。しかし、プログラムを再オープンするたびにtxtファイルに以前にあったものが上書きされます。次の行に書き込むか、毎回別のtxtファイルを作成することもOKです。これは私が持っているものです。lazarus/delphi(pascal) - 次回上書きせずにtxtファイルに書き込む

var 
    ... 
    s: TStringList; 

    s:= TStringList.Create; 
    s.Add(datetostr(now)); 
    s.SaveToFile(datetostr(now)+'.txt'); 
    s.Free; 

が、私にエラー

+0

ファイルストリームを開き、最後まで検索し、ストリームに保存します –

+0

エラーがある場合は、その内容を確認できます。できない。私たちは推測する必要がありますか?エラーメッセージを読んだことがありますか?おそらく、文字列としての日付にパス区切り文字があります。なぜ私たちは推測する必要があります。 –

+1

すべてのコンパイラエラーメッセージをチェックしましたが、「エラー」というメッセージが見つかりませんでした。 –

答えて

2

を与えi'tsあなたがやらなければならないことは、追加モードでファイルを開き、あなたのテキストを追加することです。これは、ファイルの末尾に新しいデータを入れます。

AssignFile(tfOut, C_FNAME); 

    try 
    // Open for append, write and close. 
    append(tfOut); 

    writeln(tfOut, 'New data for text file'); 
    writeln(tfOut, 'New informtion should be at the end of the file.'); 

    CloseFile(tfOut); 

    except 
    on E: EInOutError do 
    writeln('File error. Elaboration: ', E.Message); 
    end; 
+0

except節のWriteLnは、コンソールアプリケーションにとっては問題ありません。オペアンプのアプリケーションがVCLアプリケーションの場合は、そうではありません。 –

+0

大変ありがとうございます。 –

0

のTStringListを使用して別の方法は次のとおりです。

S:TStringListの。

s:= TStringList.Create;

s.loadfromfile( 'myfile.name');

s.Add(datetostr(now));

(又はs.text:= s.text + lineending + datetostr(現在))

s.SaveToFile( 'myfile.name')。

s.Free;

関連する問題