毎回申し訳ありません。ドラッグ・ドロップも解決しました。
今度は、外部ファィルとしてではなく、リソースとして100Kbぐらいのテキスト・テーブルをプログラム中に取り込む方法についてご教授下さい。
現在、プログラム練習として、医療用DICOMデータ解析プログラムを作成しています。DICOM Tagの膨大なテキスト・テーブルを参照して、目標のデータが何処に存在するかを知るプログラムです。宜しくお願いします。
バージョンは何でしょうか?
また、医療用DICOMデータ解析がどのようなもので、
DICOM Tagがどんなものかを表示すれば、レスが早いと思います。
TClientDataSetを使ってデーターベースとして扱えばどうでしょうか?
HOta様、
早速のご返事ありがとうございます。
Delphi 7 Personalを用いています。
DICOMデータはLossless JPEG圧縮を用いた画像データですが、JPEGデータの前に病院名、患者名、患者ID、日付、撮影条件などの膨大な情報がASCII文字列で並びます。そして、その可変長文字列を識別するために、タグと呼ばれる特殊コードが区切ります。
例えば、患者氏名だと、必ずバイト列で
00 10 00 10 'P' 'N' X ********
という構造をとります(ここまでたどり着くのも大変でした)。ここでXは後に続く患者氏名のバイト数です。********はASCII文字列で終端記号に\0を持ちません。ここで、00 10 00 10の4バイトがタグと呼ばれるものです。このタグに続いて、識別ASCII列(ここでは'P''N'の2バイトがきます)が存在します。
現在外部ファィルとして持っているのは、このタグ情報(タグが何を表すか、その後の識別ASCII列が何か、といったテキストでできたテーブル)です。
その容量は150KBぐらいです。
説明が下手で申し訳ありません。その詳細は以下のWebにありますが、難解で私には難しすぎます。
http://medical.nema.org/dicom/2004.html
宜しくお願いします。
説明不足でした。
タグの00 10 00 10は患者氏名をあらわすもので、患者IDならば00 10 00 20といった感じです。
Delphi 7 Personalなら、データーベース機能がないので、
TClientDataSetはありません。
JPEG画像データ+文字列だと、TStreamを使って読み込み、
解析するのが良いでしょう。
TFileStreamに読み込み、'00 10 00 10','00 10 00 20'があるまで、
読み飛ばして、その後のデーターを読み出せばいけると思います。
150KB程度なら問題ないでしょう。
HOta様、
お忙しいところ、ありがとうございます。
もしもTClientDatSetがあれば、そこに読み込むのはどのようにすれば良いのでしょうか。通常のテキストファィルの読み書き関数を用いるのでしょうか。
つまらない質問で申し訳ありません。
TClientDatSetはテキストファイルをデーターベースとして扱えます。
大きなデーターは、データーベースで運用するのが、
確実で、早い方法です。
読み書きはデーターベースの扱いになります。
近頃は、テキストファイルの扱いはほとんどしなくなりました。
HOta様、
ご教授ありがとうございました。今後とも宜しくお願いします。