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 одинаковых значений в массиве?
думай)