Не могу понять почему не работет код ниже, обрывается где то
const
m = 3;
type
l = ^p;
p = record
k : string;
// v : integer;
n : l;
end;
var
h : l;
a : array [0..m-1] of l;
t : string;
i : integer;
procedure Init;
var i : integer;
begin
for i := 0 to m-1 do
a[i] := nil;
end;
function Hash(k : string) : integer;
var tp : integer;
begin
tp := Ord(k[1]) mod 97;
Hash := tp;
end;
function Search(k : string) : l;
var i : integer; t : l;
begin
i := Hash(k);
t := a[i];
while (t^.k <> k) and (t <> nil) do t := t.n;
Result := t;
end;
function Add(k : string) : l;
var i : integer; t,s : l;
begin
i := Hash(k);
t := a[i];
if Search(k) = nil then
begin
new(s);
s^.k := k;
s^.n := nil;
if a[i] = nil then a[i] := s
else t.n := s;
end;
end;
begin
Init;
Add('abc');
Add('bcd');
Add('cde');
//writeln(a[0].k);
//if Search('aec') <> nil then writeln('yes') else writeln('no');
readln;
end.