我正在尝试编写一些代码,这些代码会将动态对象数组读/写到文件中。对象表示 java 源代码的结构。我需要能够扫描整个源代码并收集有关字段、方法和类的信息。我有一个算法可以做到这一点,结果保存在 TFieldStruc、TMethodStruc 和 TClassStruc 的结构中,它们都是 TCoreStruc 的后代(TObject 的后代)。Java 源代码需要几分钟才能被扫描并生成虚拟结构。因此,我的应用程序扫描所有源代码一次并将其保存为更易于访问的格式,该格式在 IDE 启动时加载。
有没有办法(除了将对象“导出为字符串”,然后在加载它们时再次重新创建它们)将 TFieldStruc、TMethodStruc 和 TClassStruc 的整个三个数组流式传输到文件中,以便以后可以读取它们?
我尝试读取和写入“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;