pansichar和string之间的问题(50分)

  • 主题发起人 主题发起人 vim
  • 开始时间 开始时间
V

vim

Unregistered / Unconfirmed
GUEST, unregistred user!
大家帮我看看下面的代码,我声明了一个记录类型用来记录数据库的数据然后再将记录里面的数据写入到文本文件中,其中记录类型的声明如下:
TWord=packed record
word:pansichar;
explain:pansichar;
end;
读数据库数据是依靠按钮事件来完成的,代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
tmpWord:Tword;
tmpIndex:TIndex;
i:integer;
begin
for i:=0 to 25 do
begin
tmpIndex.BeginPos:=hfile.Position;
tmpIndex.IndexValue:=pchar(char(65+i));
adoquery1.Close;
adoquery1.SQL.Text:='select word,explain from word where word like '+quotedstr(char(65+i)+'%');
adoquery1.Open;
while not adoquery1.Eof do
begin
tmpWord.word:=pansichar(adoquery1.fieldbyName('word').asstring);
tmpWord.explain:=pansichar(adoquery1.FieldByName('explain').AsString);
hFile.Write(tmpWord,sizeof(Tword));
adoquery1.Next;
end;
tmpIndex.EndPos:=hfile.Position;
hfile1.Write(tmpIndex,sizeof(TIndex));
end;
hfile.SaveToFile('WordDic.dic');
hfile1.SaveToFile('wordIndex.idx');
end;
数据可以写入到文本,但读出来的数据却不正确了,我查出来是pansichar的问题。因为直接写入字符串到记录里面的时候,写进文本后是可以正确读出来的。哪位高人帮帮忙?这个问题我搞了好久啊!其中的hfile和hfile1是TMemoryStream类型。
 
后退
顶部