我们正在尝试在delphi中使用由Free Pascal生成的pas文件。链接在: http://www.markwatson.com/opensource/FastTag_Pascal.zip如何解决这个EInvalidPointer错误,同时将Free Pascal翻译成Delphi?
在测试时,它会提示InValidPointer。请在调试器中查看以下错误行。
interface
procedure ReadLexicon;
type sarray = array[1..12] of string;
type big_sarray = array[1..1000] of string; { used for word lists and tags: limit on size of input text }
type psarray = ^sarray;
{function GetTagList(word: string): psarray;}
procedure TagWordList(wordList : big_sarray; var tags : big_sarray);
implementation
uses SysUtils, Classes;
{ Hash Table Support - copied from FreePascal source: benchmork shootout examples }
type
THashEntryPtr = ^THashEntryRec;
THashEntryRec = record
name : string;
number : psarray;
next : THashEntryPtr;
end;
const
TABLE_SIZE = 100000;
...
...
...
function GetTagList(word: string): psarray;
var
ret : psarray;
ok : boolean;
begin
ok := localHash.fetch(word, ret);
if ok then GetTagList := ret else GetTagList := nil;
end;
procedure TagWordList(wordList : big_sarray; var tags : big_sarray);
var i : integer;
x : real;
psa : psarray;
lastThreeChars : string;
lastTwoChars : string;
lastChar : string;
firstTwoChars : string;
tagFirstTwoChars : string;
begin
for i := 0 to length(wordList) do
begin
**psa := GetTagList(wordList[i]);///// EInvalidPointer ERROR**
if psa <> nil then tags[i] := psa^[1] else tags[i] := '???';
end;
...
...
...
我们该如何解决这个问题。 非常感谢您提前。
亲爱的Marco van de Voort,它现在可以工作,但我仍然不知道为什么它应该按照您的建议替换,而且加载该词典文件并运行似乎非常缓慢。非常感谢你。 – Dylan 2010-10-31 02:10:37