-PR-
  • 暇なときにでも
  • 質問No.1311342
解決
済み

テキストファイルの最終行の削除

  • 閲覧数1128
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 4% (5/112)

C++Builder6です。
テキストファイルの最終行だけを削除する方法を
探しています。
詳しく言えば、ファイルを開けないで、最後にある
改行コード?のみを削除したいです。
よろしくお願いします。
  • 回答数3
  • 気になる数0

質問者が選んだベストアンサー

  • 回答No.2
レベル10

ベストアンサー率 60% (110/181)

ファイルを開かずにファイルを編集することは出来ません。
が、「開く」という意味が「ビジュアルなコンポーネントに表示しない」という意味なら可能です。

 char chr[3] = { '\0' };
 TFileStream* fstrm = new TFileStream( "ファイル名", fmOpenReadWrite );
 if ( fstrm->Size >= 2 )
 {
  fstrm->Seek( -2, soFromEnd );
  fstrm->Read( chr, 2 );
  if ( strcmp( chr, "\r\n" )==0 )
   fstrm->Size = fstrm->Size - 2;
 }
 delete fstrm;

ただ、正直言いますと、このような操作が必要な状況というのがいまいち分かりません。
  • ありがとう数0
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 43% (418/971)

基本的にファイルを開かずにファイル処理をするのは無理です。地道に実装するしかないように思います。 ちなみに、なぜファイルを開きたくないのでしょうか? ...続きを読む
基本的にファイルを開かずにファイル処理をするのは無理です。地道に実装するしかないように思います。

ちなみに、なぜファイルを開きたくないのでしょうか?
補足コメント
yama888

お礼率 4% (5/112)

テキストファイルを IniFile のように使いたいのですが、無理でしょうか?
投稿日時 - 2005-04-04 20:20:30
  • ありがとう数0
  • 回答No.3
レベル9

ベストアンサー率 44% (29/65)

No1さんの回答に対して、iniファイルのように使いたい とのことから、そのファイルはシステム内のいろいろな プログラムから読み取り・更新をするような設定ファイル 系のファイルなので、できるだけファイルを開くような ことはしたくないという意図ではないかと勝手に想像 しました。また、最後の改行文字を削除するということ から何らかのOSやフレームワークの環境で使用している モジュールの使用上、自 ...続きを読む
No1さんの回答に対して、iniファイルのように使いたい
とのことから、そのファイルはシステム内のいろいろな
プログラムから読み取り・更新をするような設定ファイル
系のファイルなので、できるだけファイルを開くような
ことはしたくないという意図ではないかと勝手に想像
しました。また、最後の改行文字を削除するということ
から何らかのOSやフレームワークの環境で使用している
モジュールの使用上、自分が意図しない改行コードが
入ってしまい、それを取り除くのがどうしても必要な
場合があるとか、そういうことだと勝手に想像しました。
本当は本人が詳細に説明するのが一番よいのですが、
とりあえず、この方向性で回答します。

いぜん、金融系のシステムで納期が厳しくて
設定情報をマスタDBにしてやる暇がないときに、
暇な時にあらかじめ作成しておいた以下の
モジュールを使って、設定ファイルの読み取り更新を
排他制御させて、やっていました。

更新したいファイル名にある決まった規則で識別子
をつけたロックファイルをロックする。

設定ファイル名を日付や世代番号をつけた名前で
バックアップファイルにリネームする。
バックアップファイルを読みながら
設定ファイルを元のファイル名で新規作成し、
その際に更新したい変更を反映させながら、
書き込んでいく。
最後にバックアップファイルと新たにできあがった
設定ファイルとのDIFFをとった差分と
該当アプリケーションのほうで変更したいとおもって
いた内容、および、アプリケーションモジュール名
や日付等をログに吐き出して、バックアップファイル
については何世代か世代管理を行なうようにした。
当然、エラーが発生した時はすべて元に戻すような
実装にしていた。

実際には
「設定ファイルを元のファイル名で新規作成し、
その際に更新したい変更を反映させながら、
書き込んでいく。」
の部分を各アプリケーションで必要なときに実装し、
あとは、リンクするだけで再利用するようなモジュールを
作っていた。
あまりにも、昔の話なので、もうソースファイルは
ないです。

なぜ、ファイルを開かないで、改行コードをとりたいのか
なんのためにとか?そういう情報があると、
別の方法をいろいろ考えれるかもしれない。
  • ありがとう数0
  • 回答数3
  • 気になる数0
このQ&Aで解決しましたか?

関連するQ&A

-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


-PR-

ピックアップ

-PR-
ページ先頭へ