I've figured it out, no need to worry, it was due to me not having declared the TRGB32Array variable type properly. Instead, now I'm using the TRGBTripleArray and pRGBTripleArray types, which are declared like so:
const
PixelCountMax = 32768;
type
TRGBTripleArray = array[0..PixelCountMax-1] of TRGBTriple;
pRGBTripleArray = ^TRGBTripleArray;
I also needed to set the Bitmap PixelFormat's properly before trying to use ScanLine. I also found that I don't need to use the ^ character to refer to what the pointer points to, Delphi seems to do it automatically.