In our previous episode, ??ilvinas Ledas said: > > function TFrame.getAllFrame(): TArrayOfSmallInt; > var > tmpBuf: TArrayOfSmallInt; > i: Integer; > begin > startOverlapLen := Length(startOverlap); > mainAreaLen := Length(mainArea); > endOverlapLen := Length(endOverlap); > > SetLength(tmpBuf, startOverlapLen+mainAreaLen+endOverlapLen); > > { > for i := 0 to startOverlapLen-1 do > tmpBuf[i] := startOverlap[i]; > > for i := 0 to mainAreaLen-1 do > tmpBuf[i+startOverlapLen] := mainArea[i]; > > for i := 0 to endOverlapLen-1 do > tmpBuf[i+startOverlapLen+mainAreaLen] := endOverlap[i]; > } > > Move(startOverlap[0], tmpBuf[0], SizeOf(SmallInt)*startOverlapLen); > Move(mainArea[0], tmpBuf[startOverlapLen], SizeOf(SmallInt)*mainAreaLen); > Move(endOverlap[0], tmpBuf[startOverlapLen+mainAreaLen], > SizeOf(SmallInt)*endOverlapLen); > > Result := tmpBuf; > > end;
The move also tries to take the address element 0 for arrays when they are 0. The for loop doesn't execute in that case. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal