【发布时间】:2013-06-17 17:17:12
【问题描述】:
我正在尝试编写一些代码,将动态对象数组读/写到文件中。这些对象表示 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;
【问题讨论】:
-
这是数百万次的骗局。搜索序列化。
标签: delphi