Newsgroups : Borland : borland.public.delphi.nativeapi.win32 : 2007 Apr : Altered values when using move
| Subject: | Altered values when using move |
| Posted by: | "Tobias" (tobias_..@hotmail.com) |
| Date: | Mon, 30 Apr 2007 18:31:50 |
Hello,
I'am geting altered values when i uses move in the procedure below, what
can i do too fix that?
The last index of MegaArray only get values from 14500 to 14675
var
MegaArray : array of array of Integer;
TheArray : array of Integer;
ASize, i, j, Temp, Temp1, OffSet, iCounter : Integer;
p : Pointer;
ModSizeLen : String;
TheByte : Byte;
begin
//50 first bytes in MegaArray are reserved.
SetLength(TheArray, 10 * 1500);
ASize := Length(TheArray);
for i := 0 to Length(TheArray) - 1 do begin
TheArray[i] := i+1;
end;
iCounter := 0;
OffSet := 0;
j := 0;
while (OffSet <= ASize) do begin
OffSet := OffSet+1450;
if (OffSet >= ASize) then begin
OffSet := OffSet-1450;
break;
end;
SetLength(MegaArray, Length(MegaArray)+1);
SetLength(MegaArray[iCounter], 1500);
MegaArray[iCounter][0] := Byte(#1);
MegaArray[iCounter][1] := 255;
MegaArray[iCounter][2] := Byte(#2);
MegaArray[iCounter][3] := Byte(iCounter);
MegaArray[iCounter][4] := Byte(#3);
MegaArray[iCounter][5] := Ord('1');
MegaArray[iCounter][6] := Ord('4');
MegaArray[iCounter][7] := Ord('5');
MegaArray[iCounter][8] := Ord('0');
MegaArray[iCounter][9] := Byte(#4);
MegaArray[iCounter][10] := Byte(0);
MegaArray[iCounter][11] := Byte(#5);
//I want to uses move here aswell!
for i := 0 to 1449 do begin
MegaArray[iCounter][50+i] := TheArray[j];
inc(j);
end;
inc(iCounter);
end;
Temp := ASize - OffSet;
if Temp < 0 then
Temp := ((1450) - (-Temp));
if Temp > 0 then begin
//Build the Last package.
//p := Pointer(DWORD(P)+ DWORD(OffSet));
SetLength(MegaArray, Length(MegaArray)+1);
SetLength(MegaArray[iCounter], 1500);
MegaArray[iCounter][0] := Byte(#1);
MegaArray[iCounter][1] := 255;
MegaArray[iCounter][2] := Byte(#2);
MegaArray[iCounter][3] := Byte(iCounter); .
MegaArray[iCounter][4] := Byte(#3);
ModSizeLen := IntToStr(Temp);
Temp1 := 0;
for i := 0 to Length(ModSizeLen) do begin
TheByte := ord(ModSizeLen[i]);
MegaArray[iCounter][i+5] := TheByte;
end;
Temp1 := i+5;
MegaArray[iCounter][Temp1] := Byte(#4);
MegaArray[iCounter][Temp1 +1] := Byte(0);
MegaArray[iCounter][Temp1 +2] := Byte(#5);
//for i := 0 to Temp do begin
Move(TheArray[OffSet], MegaArray[iCounter][50], Temp); //Altered values in
this array.
//MegaArray[iCounter][50+i] := TheArray[OffSet+i];
//end;
end;