Спасибо друзья.Не думал что последуют еще ответы, не заглядывал, а тут такое.
Alex2013 - спасибо за ваш ответ. К сожалению я еще не так глубоко освоил предмет, понять трудновато. Может тестировочный код просто подсунуть чтобы проверить что движок "разрешит" использовать? какую конструкцию попробовать?
Vadim писал(а):Это всё потому, что Вы нормальным русским языком не объяснили, где именно Вы программируете. 

 В FreePascal PByte - это встроенный тип данных. Если у Вас его нет - Вы используете что-то другое. Начав с "олбанского" языка, Вы сделали помощь в Вашей проблеме невозможной.
Настаиваю, что у Вас ошибка исключительно логическая, ошибка разработчика. Необходимо сначала продумать логику Ваших действий и только потом садиться программировать.
 
Вадим, в этом деле я новичок, и нектотрые вещи мне еще, возможно, не совсем понятны, вы уточните, в чем вы видите "олбанский". В ПО встроен скриптовый язык. Автор упоминает Pascal Script Lazarus, и руководство Remobjects pascal script.
Вот скрипт, с которого я начинал, он построен на ФУНКЦИЯХ описанных к использованию в движке. Как я упоминал исполнение получается очень медленным, в основном из-за копирования присвоением в цикле. По этому, я хочу исключить копирование из буфера в буфер, для начала. Решил делать это средствами самого паскаля. Естественно,я что то не учитываю, я и прошу помощи, что не так.
- Код: Выделить всё
- const
 PageSize = 512;
 ErGrSize = 512*1024{PageSize *page_count;};
 var
 Res: Boolean; //Результат выполнения функции. Принимает значение 1 в случае успешного выполнения и 0 в случае ошибки
 myFileName: String; //Имя файла, выбираемое в файловом диалоге
 iFileSize: Int64; // Размер открываемого дампа
 page_count, i, g: Integer;
 MyBuffer: array {[0..ErGrSize]} OF byte; // Обьявляем массив MyBuffer.
 
 begin
 //При запуске скрипта открывается файловый диалог, в котором необходимо выбрать дамп
 Res := GetOpenFileName('Выбери меня!', myFileName, 'Dumps', 'Дампы (*.user)|*.user| Все файлы|*.*', 'user');
 
 //SetLength(PageBuffer, ErGrSize); //объявляем PageBuffer (PageSize*page_count)
 // Устанавливаем размер буфера
 setarraylength(PageBuffer, ErGrSize);
 
 // Устанавливаем размер буфера
 setarraylength(MyBuffer, ErGrSize);
 
 
 if (Res) then //если файл выбран, то продолжаем выполнять скрипт, если нет, то переход на завершение
 begin
 //В лог выдаем сообщения об открытии файла
 AddMessage('Open file %s', [myFileName]);
 Res := iFileStreamCreate(myFileName, fmOpenRead or fmShareDenyWrite);
 // Проверка
 if not(Res) then Exit;
 
 iFileSize := iFileStream.Size;
 //В лог выдаем сообщение
 AddMessage('File size %d byte', [iFileSize]);
 // Последовательно, группа за группой считываем в буфер и сравниваем файл с дампом.
 
 for g:= 0 to (iFileSize div ErGrSize)-1  do     //filesize : 524288
 
 begin
 // считали группу из файла
 iFileStreamSeek(g*ErGrSize, soFromBeginning);
 iFileStreamRead(0, ErGrSize);
 
 //AddMessage('Прочитали файл', []);
 // и выводим в лог
 //ArrayToLog(PageBuffer, 512);
 
 
 //AddMessage('Копируем в MyBuff', []);
 //Просто копируем из буфера в массив.
 for i:= 0 to ErGrSize-1 do
 MyBuffer [i] := PageBuffer [i];
 
 // и выводим в лог, проверяем
 //ArrayToLog(MyBuffer, 512);
 
 
 // Считать 1024 страниц начиная с g*1024
 //AddMessage('Читаю EMMC группу', []);
 ReadPage(g*1024, 1024); ////Какой раздел будет читаться зависит от того, какой файл был выбран для сохранения
 //ReadPage всегда читается только по 512 байт независимо от размера обьявленного PageBuffer
 
 
 
 //AddMessage('Тест PageBuffer', []);
 // и выводим в лог
 //ArrayToLog(PageBuffer, 512);
 // выводим сообщение в лог
 //AddMessage('Тест MyBuffer', []);
 // и выводим в лог
 //ArrayToLog(MyBuffer, 512);
 
 
 //AddMessage('Сравниваю буферы', []);
 for i:= 0 to (ErGrSize-1)  do
 begin
 if PageBuffer[i] <> MyBuffer[i] then break; //сравниваем в цикле блок данных, при первом несовпадении цикл прерывается
 end;
 if i = ErGrSize then  //если i = x, то все байты в массивах совпадают
 //AddMessage('переходим к проверке следующей группы №%d', [g])
 else AddMessage(' требуется перезапись группы, i = %d', [i]);
 end;
 iFileStreamFree;
 AddMessage('Проверка заврешена', [])
 Time;
 end
 end.