2

オブジェクトの動的配列をファイルに読み書きするコードを書き込もうとしています。オブジェクトは、Java ソース コードの構造を表します。ソース コード全体をスキャンし、フィールド、メソッド、およびクラスに関する情報を収集できる必要があります。これを行うアルゴリズムがあり、結果は TFieldStruc、TMethodStruc、および TClassStruc の構造に保持されます。これらはすべて TCoreStruc の子孫 (TObject の子孫) です。Java ソース コードがスキャンされ、仮想構造が生成されるまでに数分かかります。このため、私のアプリケーションはすべてのソース コードを 1 回スキャンし、IDE が起動するたびに読み込まれる、よりアクセスしやすい形式に保存します。

TFieldStruc、TMethodStruc、TClassStruc の 3 つの配列全体をファイルにストリーミングして、後で読み取ることができるようにする方法はありますか (オブジェクトを「文字列に」エクスポートし、ロード時に再作成する以外に) 方法はありますか?

「TFieldStruc のファイル ..」と TFileStream の読み取りと書き込みを試みて、オブジェクトをファイルに保存して読み戻そうとしましたが、どちらの場合も、デバッガーで「アクセスできない値」が表示され、続いて「アクセス違反」が発生します。オブジェクトが再度アクセスされるとすぐにエラーが発生します。この問題を解決する方法について誰かがアイデアを持っている場合は、それをいただければ幸いです。以下は、フィールド/メソッドのいずれかが問題を引き起こしている可能性がある場合の TCodeStruc へのコードです。

type
  TCoreStruc = class(TObject)
    public
      LowerPointer : integer;
      HigherPointer : integer;
      Line : integer;
      Word : integer;
      Char : integer;
      CoreType : ansistring;
      IsPublic : boolean;
      IsPrivate : boolean;
      IsStatic : boolean;
      IsFinal : boolean;
      Name : ansistring;
      NestedStruc : TCoreStruc;
      constructor Create(Name, CoreType : ansistring; NestedStruc : TCoreStruc; IsPublic, IsPrivate, IsStatic, IsFinal : boolean);
      procedure UpdateValues(NestedStruc : TCoreStruc; IsPublic, IsPrivate, IsStatic, IsFinal : boolean);
      procedure SetPosition(Line, Word, Char : integer);
  end;
4

1 に答える 1