テキストファイルから読み取り、解析し、意味のある情報を抽出し、その情報を使用してSQLクエリを実行し、応答、出力ファイルを生成する必要がある特定のシナリオに取り組んでいます。
約 3000 行のコードがあります。すべてが期待どおりに機能しています。しかし、私は私のプロジェクトを混乱させる可能性のある難問を考えていました。
読み込まれるテキスト ファイル (Text.txt と呼びましょう) は、1 行または複数行で構成されます。
私の場合、「行」はそのセグメント名によって識別されます。たとえば、ISA、BHT、HB、NM1 などです。各セグメントの末尾は、特殊文字「~」によって識別されます。
ファイルが複数の行で構成されている場合 (各行が 1 つのセグメントに対応するように); いう:-
いさ……~
NM1.......~
ダメージ……〜
SE........〜
など....次に、私のコードは基本的に各「行」(つまり各セグメント)を一度に1つずつ読み取り、次のコマンドを使用して一時バッファーに保存します:-
ReadLn(myFile,buffer);
次に、各行に基づいて評価を実行します。目的の出力を生成します。問題はありません。
ただし、問題は...ファイルが次のように表される単一行(複数のセグメントで構成される)のみで構成される場合はどうなりますか?
ISA.......~NM1.......~DMG.......~SE........~
次に、ReadLine コマンドを使用して、各セグメントではなく行全体を一度に 1 つずつ読み取ります。これは私のコードでは機能しません。
if、elseステートメントのペアを作成することを考えていました...これは、Txt.txtファイルで構成される行数に基づいています..など:-
行 = 1 の場合:- 各セグメントを一度に抽出します...特殊文字 '~' で区切られて、必要なタスクを実行します (3000 行のコード) それ以外の場合 行 > 1:- その後、一度に各行を抽出します (各セグメント) 必要なタスク (3000 行のコード) を実行します。
現在、3000 行のコードが 2 回繰り返されており、そのすべてのコードを 2 回コピーして貼り付けるのはエレガントではありません。
1 行のファイルまたは複数行のファイルに関係なく、評価に進むときに一度に 1 つのセグメントのみを使用するように、この問題を解決する方法についてフィードバックをいただければ幸いです。