Dein b hat eine Größe von 640*480*4 = 1.228.800 Byte und wird als lokale Variable auf dem Stack angelegt. Der Default für die maximale Stackgröße ist bei Delphi (XE) 1.048.576 Byte!
Besser so:
Delphi-Quellcode:
b: array of array of Cardinal;
begin
SetLength(b, 640, 480);
Allerdings ist b dann 0-basiert, also statt
b[1, 1]
musst du dann
b[0, 0]
schreiben.