2016-09-29 7 views
-4

私はドキュメントのストリームについて読んでいますが、どのように動作するのか理解していますが、いつ使用するべきか分かりません。カスタムファイル拡張子にTFileStreamを使用しているDelphi

たとえば、プログラムAAA.exeがあり、いくつかの設定を保存する必要があるとしましょう。この場合はiniファイルを使用します。しかしTFileStreamTBinaryWriter/TBinaryReaderを使って、たとえばconfig.aaaというファイルを作成することもできます。

あなたは第二の例で見ることができるようにconfig.aaaは私が発明したカスタム拡張を持っており、のみ私は(書き込み順と読み順becasue同じでなければなりません)、それを読み取る方法を知っています。

config.iniconfig.aaaの作成の違いは何ですか?第二の選択肢は良いかどうか?私はそれが事件に依存していることを知っていますが、それが良い選択肢かどうかを知りたいと思います。

私のプログラムだけがアクセスできる特定のデータを保存するカスタム拡張子を持つカスタムファイルを作成できたと思います。

+0

通常、INIファイルはプレーンテキストで、TIniFileを使用するとテキストになります。 TFileStreamを使用すると、テキスト、バイナリ、またはテキスト以外のデータを含め、書き込みが必要なフォーマットで書き込みが必要なものを書き込むことができます。理解するのが難しいのは何ですか? 2番目の選択肢が良いかどうかは、自分のニーズに合ったプレーンテキストやその他の形式に応じて何をする必要があるかによって異なります。 –

+0

'TFileStream'は単に' FileCreate()/ FileOpen() '、' FileRead() '、' FileWrite() '、' FileSeek() '関数のストリームラッパーです。実際には、あなたの状況に適しているかどうか、 'TIniFile'を使ってテキストINIファイルを書いたり、マニュアルファイルI/Oを使ってカスタムバイナリファイルを書いたりしてください。実際の状況、書き込むデータの種類、およびユーザーがファイルの内容を直接表示/編集できるようにするかどうかによって異なります。 –

+0

ストリームと拡張子は関係ありません。本当に重要なのは内容です。 **あなたはどんなフォーマットを使いたいですか? –

答えて

3

これは一度に2つの異なる質問です。

いつストリームを使用する必要がありますか?

ストリームは、実際のストレージの仕様に関係なく、一貫した方法でデータにアクセスするための抽象です。たとえば、TMemoryStream,TFileStreamおよびTResourceStreamとします。これらはすべて、データを読み書きするための同じインターフェースを提供しますが、データは最終的にメモリ、ファイルシステム、PEファイルのさまざまな場所に格納されます。ここで重要なのは、基本ストレージの重要な違いにもかかわらず、ストリームを介してデータにアクセスする方法は常に同じであるということです。実際には、ストリームを別のストリーム(たとえば、ネットワーク経由でデータを読み取るストリーム)に置き換えるだけで、アプリケーションをそれ以上変更することなく動作させることができます。

質問に答えるには、ストレージデバイスを変更したり、特性の変更(圧縮の追加など)が必要になる可能性があるたびにストリームを使用する必要があります。

しかし、ストリームに保存する実際のデータとは完全に独立しています。データを解釈するのはあなた次第です。ストリームは、ストリームにアクセスするための統一された方法を提供し、デバイスの特質を隠すだけです。データのを意味するはまったく異なるものです。あなたのファイルについては

config.iniconfig.aaa(あるいは、実際に、pink unicorn.mp3)の間には実質的な違いはありません。ファイル名と拡張子は、内容を理解しやすくするためにそのファイルに付けるラベルですが、実際の解釈は名前に依存しません。 Windowsでは、拡張子をファイルの内容を決定するものとして使用することが多いため(これは、拡張が意味を持たないUnixの世界とは異なります)、これはWindowsに慣れた人にとっては奇妙に思えるかもしれません。 Windowsの場合でも、拡張機能は実際にはあまり意味がないことに気付くことができます。something.jpgからsomethingelse.pngへの写真の名前を変更するか、movie1.aviからmovie1.mp4への動画の名前を変更すると、視聴者/拡張機能を気にせずにコンテンツをスキャンし、そのコンテンツに基づいてファイルを表示/再生する方法を決定するためです。

Windowsの場合は、他の人(またはあなたの将来の自己)がファイルの内容を推測するのが容易になるため、共通の拡張子を使用することは理にかなっていますが、必須ではありません。

関連する問題