Newsgroups : Borland : borland.public.delphi.nativeapi.win32 : 2007 Apr : Altered values when using move

www.cryer.info
Managed Newsgroup Archive

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;

Replies:

www.cryer.info
Managed Newsgroup Archive