一个与DLL相关的奇怪现象
不得闲 2007-11-08 11:14:12 大家先来看一段代码
我有一个类申明如下:
TFileClass = Class
private
FFileId: integer;
FNodeBookType: Widestring;
FFileName: Widestring;
FComment: Widestring;
FLastModify: TDateTime;
FCreateTime: TDateTime;
procedure SetComment(const Value: Widestring);
procedure SetCreateTime(const Value: TDateTime);
procedure SetFileId(const Value: integer);
procedure SetFileName(const Value: Widestring);
procedure SetLastModify(const Value: TDateTime);
procedure SetNodeBookType(const Value: Widestring);
public
Constructor Create(Name: Widestring);
property NodeBookType: Widestring read FNodeBookType write SetNodeBookType;
property Comment: Widestring read FComment write SetComment;
property FileName: Widestring read FFileName write SetFileName;
property CreateTime: TDateTime read FCreateTime write SetCreateTime;
property FileId: integer read FFileId write SetFileId;
property LastModify: TDateTime read FLastModify write SetLastModify;
end;
然后我在DLL中有一个函数如下:
function FillStringsEx(Strings: integer;SearchText: pchar): integer;
var
sql: string;
List: Tstrings;
FileClass: TFileClass;
begin
List := TStrings(Strings);
List.Clear;
sql := 'select NodeDirIndex,NodeDirText,Comment,CreateTime,LastModify,NodeBookType from T0_NodeDir ';
Query.SQL.Add(sql);
try
Query.Open;
While not Query.Eof do
begin
FileClass := TFileClass.Create(Query.fieldByName('NodeDirText').AsString);
FileClass.FileName := Query.fieldByName('NodeDirText').AsString;
FileClass.Comment := Query.fieldByName('Comment').AsString;
FileClass.CreateTime := Query.fieldByName('CreateTime').AsDateTime;
FileClass.LastModify := Query.fieldByName('LastModify').AsDateTime;
FileClass.NodeBookType := Query.fieldByName('NodeBookType').AsString;
FileClass.FileId := Query.Fields[0].AsInteger;
List.AddObject(FileClass.FileName,FileClass);
Query.Next;
end;
result := 1;
except
result := 0;
end;
Query.Close;
Query.SQL.Clear;
end;
然后我在外面调用这个DLL中的函数
FillStringsEx(Integer(ListBox2.items),pchar(RzEdit2.Text));
然后访问ListBox2的 Items中的对象的时候,返回的FileClass的属性的值居然是相互颠倒的
DLL中的FileClass对象到外面调用的时候,FileName却变成了Comment,而Comment则变成了NodeBookType,而NodeBookType则变成了FileName,请有知道为什么的吗?