Показать сообщение отдельно
Старый 04.09.2009, 18:39   #2
Пользователь
 
Регистрация: 09.06.2009
Сообщений: 73
Сказал Спасибо: 10
Имеет 10 спасибок в 9 сообщенях
klemberg пока неопределено
По умолчанию

delphi Код:
var      ItemBase:array[1..100] of integer;// создали массив      objectID:integer;      i: integer;     // номер ближайшего свободного элемента массива procedure Init; //Вызывается при включении скрипта begin      i:=1;    // скрипт только стартанул,                  // первый раз сохраняем objectID в первый элемент массива end; // при приходе пакета begin      if FromServer and (pck[1]=#$21)  and (ReadD(12)= itemID) then begin           // при условии           if  условие then                // записать  objectID в массив                objectID:=ReadD(8);                // как  ЗАПИСАТЬ ?                ItemBase[i]:= objectID;  // да просто :)                inc(i,1);                // но при данном алгоритме обязательно нужно увеличить i на единицу                                         // и следить за тем, чтобы i не было больше размерности массива, в нашем случае - 100\           end;      end;      sendMSG(IntToStr(ItemBase[1]));    // для последнего ПХ, вывод содержимого первого элемента массива в окно лога. end.

Добавлено через 5 минут
это был первый вариант, при котором каждое значение objectID записывается в следующий по порядку элемент массива.


вариант второй, при котором каждое значение objectID записывается в первый свободный элемент массива:
delphi Код:
var      ItemBase:array[1..100] of integer;// создали массив      objectID:integer;      i: integer; procedure Init; //Вызывается при включении скрипта begin end; // при приходе пакета begin      if FromServer and (pck[1]=#$21)  and (ReadD(12)= itemID) then begin           // при условии           if  условие then                // записать  objectID в массив                objectID:=ReadD(8);                for i:=1 to 100 do begin                     if (ItemBase[i] == 0) then begin                                              // как  ЗАПИСАТЬ ?                          ItemBase[i]:= objectID;  // да просто :)                          Break// прерываем дальнейший перебор массива.                     end;                end;           end;      end;      sendMSG(IntToStr(ItemBase[1]));    // для последнего ПХ, вывод содержимого первого элемента массива в окно лога. end.

оба варианта - не более, чем примеры.
при обеих схемах рано или поздно массив заполнится и что тогда?

а если прийдт 15 пакетов с одинаковым значеним objectID, есть ли смысл хранить 15 одинаковых значений в массиве?

думай)

Последний раз редактировалось TAMBIK, 16.09.2009 в 14:34. Причина: Добавлено сообщение
klemberg вне форума   Ответить с цитированием
За это сообщение klemberg нажился спасибкой от: