Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как использовать только часть массива? [WinXP]


Страницы:   1 2

Kolan ©   (2006-06-05 13:33:00) 

Здравствуйте,
 Проблема такая: У меня есть ф-ция для подсчета кс:
function TCustomProtocolManager.EvalUserDataControlSumm(
 Arr: array of Byte): Word;

Как видно ей надо передать массив байт.

Далее..
Я получаю массив байт последний из которых - кс. Прмер:
1 2 3 4 5 6 7 8 90- пусть 90 - кс.
Чтобы проверить правильность кс мне нужно сравнить кс из полученного массива срасчетной. Те в ф-цию EvalUserDataControlSummнужно передать массив БЕЗ песледнего элемента.

Как это сделать?

Есть вариант завести временный массив туда перекопиролвать всё кроме песледнего, я считаю это долго и ненужно.

Пробовал использовать Copy:

TheoryDataControlSumm := EvalUserDataControlSumm(Copy(UserData,
   Low(UserData), Length(UserData)-2));


Но:
[Pascal Error] KFreGrafDeviceSpecialProtocolManagers.pas(166): E2008 Incompatible types


Kolan   (2006-06-05 13:52:00) [21]

Всё, извеняюсь понял.
Массив UserData был передан в процедуру вот так:
procedure TKFreGrafReceiveProtocolManager.ProcessPackageData({..}
 UserData: array of Byte);


Поэтому Copy незнала, что он динамический и не могла сработать...

Благодарю за обсуждение.


Kolan   (2006-06-05 13:47:00) [22]


> А в чём проблема?

Проблемы то нет, лишняя переменная, может без нё можно..


Kolan   (2006-06-05 13:46:00) [23]

Нет портить массив нельзя.


tesseract   (2006-06-05 13:44:00) [24]


> Без временного не обойтись?


А в чём проблема? Можно проще SetLenght(UserData,high(UserData)) - обрежеться последний символ.


Kolan   (2006-06-05 13:43:00) [25]

Как-то тип привести, чтобы он понял что это массив.


Kolan   (2006-06-05 13:41:00) [26]


> tesseract ©   (05.06.06 13:40) [1]

Без временного не обойтись?


tesseract   (2006-06-05 13:40:00) [27]

TempArr:Array of byte;

SetLength(TempArray,high(UserData)-1);
System.move(UserData,TempArray,high(UserData)-1);


Должно работать , но не проверял.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо