@@ -89,13 +89,13 @@ procedure DSS_RecreateArray_PSingle(var res: PSingleArray0; var p: PSingle; cnt:
89
89
procedure DSS_RecreateArray_PDouble (var res: PDoubleArray0; var p: PDouble; cnt: PAPISize; const incount: TAPISize; const nr: TAPISize=0 ; const nc: TAPISize=0 );
90
90
procedure DSS_RecreateArray_PInteger (var res: PIntegerArray0; var p: PInteger; cnt: PAPISize; const incount: TAPISize; const nr: TAPISize=0 ; const nc: TAPISize=0 );
91
91
procedure DSS_RecreateArray_PPAnsiChar (var res: PPAnsiCharArray0; var p: PPAnsiChar; cnt: PAPISize; const incount: TAPISize);
92
- procedure DSS_RecreateArray_PPointer (var res: PPointerArray0; var p: PPointer; cnt: PAPISize; const incount: TAPISize);
92
+ procedure DSS_RecreateArray_PPointer (var res: PPointerArray0; var p: PPointer; cnt: PAPISize; const incount: TAPISize; preserve: Boolean=false );
93
93
function DSS_RecreateArray_PByte (var p: PByte; cnt: PAPISize; const incount: TAPISize): PByteArray;
94
94
function DSS_RecreateArray_PSingle (var p: PSingle; cnt: PAPISize; const incount: TAPISize; const nr: TAPISize=0 ; const nc: TAPISize=0 ): PSingleArray0;
95
95
function DSS_RecreateArray_PDouble (var p: PDouble; cnt: PAPISize; const incount: TAPISize; const nr: TAPISize=0 ; const nc: TAPISize=0 ): PDoubleArray0;
96
96
function DSS_RecreateArray_PInteger (var p: PInteger; cnt: PAPISize; const incount: TAPISize; const nr: TAPISize=0 ; const nc: TAPISize=0 ): PIntegerArray0;
97
97
function DSS_RecreateArray_PPAnsiChar (var p: PPAnsiChar; cnt: PAPISize; const incount: TAPISize): PPAnsiCharArray0;
98
- function DSS_RecreateArray_PPointer (var p: PPointer; cnt: PAPISize; const incount: TAPISize): PPointerArray0;
98
+ function DSS_RecreateArray_PPointer (var p: PPointer; cnt: PAPISize; const incount: TAPISize; preserve: Boolean=false ): PPointerArray0;
99
99
// MATLAB doesn't handle pointers that well,
100
100
// this just gets a single string from the pointer of strings
101
101
function DSS_Get_PAnsiChar (var p: Pointer; Index: TAPISize): PAnsiChar; CDECL;
@@ -470,7 +470,7 @@ procedure DSS_RecreateArray_PPAnsiChar(var res: PPAnsiCharArray0; var p: PPAnsiC
470
470
end ;
471
471
472
472
// ------------------------------------------------------------------------------
473
- function DSS_RecreateArray_PPointer (var p: PPointer; cnt: PAPISize; const incount: TAPISize): PPointerArray0;
473
+ function DSS_RecreateArray_PPointer (var p: PPointer; cnt: PAPISize; const incount: TAPISize; preserve: Boolean ): PPointerArray0;
474
474
begin
475
475
if (cnt[1 ] < incount) then
476
476
begin
@@ -480,12 +480,13 @@ function DSS_RecreateArray_PPointer(var p: PPointer; cnt: PAPISize; const incoun
480
480
end ;
481
481
cnt[0 ] := incount;
482
482
Result := PPointerArray0(p);
483
- FillByte(Result^, incount * sizeof(Pointer), 0 ); // needs to zero it for compatibility
483
+ if not preserve then // If we have capacity, decide if we will preserve existing data
484
+ FillByte(Result^, incount * sizeof(Pointer), 0 );
484
485
end ;
485
486
486
- procedure DSS_RecreateArray_PPointer (var res: PPointerArray0; var p: PPointer; cnt: PAPISize; const incount: TAPISize);
487
+ procedure DSS_RecreateArray_PPointer (var res: PPointerArray0; var p: PPointer; cnt: PAPISize; const incount: TAPISize; preserve: Boolean );
487
488
begin
488
- res := DSS_RecreateArray_PPointer(p, cnt, incount);
489
+ res := DSS_RecreateArray_PPointer(p, cnt, incount, preserve );
489
490
end ;
490
491
491
492
// ------------------------------------------------------------------------------
0 commit comments