gleich am anfang schon der gleiche fehler:
Delphi-Quellcode:
SetLength(Result, 1);
result[1]:=0;
muß wieder Result[0] sein. SetLength(Result, n) setzt Result so dass man auf Result[0]...Result[n-1] zugreifen kann, nicht aber auf Result[n].
Entsprechend mußt Du weiter unten alle Indizes von Result[] um eins verkleinern.