Ребят у меня вопрос: Мне надо реализовать сборку информации об инвентаре нескольких чаров в одном скрипте и чтобы не писать для каждого чара отдельную процедуру я решил написать одну процедуру с возможностью подстановки разных массивов. Короче процедуру из скрипта бота Локомотива:
Как вы уже поняли такой подход не сработал... массив который я подставляю в процедуру в качестве аргумента остается забитым нулями. Кто знает что я сделал не так, прошу отпишите. Заранее Спасибо
Добавлено через 3 минуты
Кстати я проделал то же самое с Функцией GetInv (то есть добавил новый аргумент: массив в котором нужно проводить поиск) И все работает. Разницу вижу в том, что в случае с процедурой InventoryCreat в аргумент должна записываться информация, а в функции GetInv происходит считывание информации из аргумента. Думаю дело в этом ... я прав?
Последний раз редактировалось ChiterEPT, 25.05.2008 в 01:51.
Причина: Добавлено сообщение
Сейчас попробую оба варианта, спасибо что откликнулись.
Добавлено через 33 минуты
Цитата:
Сообщение от alexsl
ИМХО через VAR, т.е. передавать указатель на переменную, иначе параметры передаются как значения.
procedure InventoryCreate(var array1: array[0..79,0..9] of integer);
Во так работает спасибо Алекс , а теперь объясни мне в чем дело... когда мы обьявляем array1 как переменную процедура получает возможность записывать в нее данные???
Цитата:
Сообщение от NLObP
procedure InventoryCreate(array1 : array of integer);
begin
end;
Ругается на Too many actual parameters.
Последний раз редактировалось ChiterEPT, 25.05.2008 в 21:02.
Причина: Добавлено сообщение
Во так работает спасибо Алекс , а теперь объясни мне в чем дело... когда мы обьявляем array1 как переменную процедура получает возможность записывать в нее данные???
если пишеш
procedure InventoryCreate(array1: array[0..79,0..9] of integer);
то в процедуру передаётся не сам массив а его копия, если
procedure InventoryCreate(var array1: array[0..79,0..9] of integer);
то в процедуру передаётся указатель на массив и все действия которые мы с ним делаем делаются с переданным массивом, если бы мы писали
procedure InventoryCreate(const array1: array[0..79,0..9] of integer);
то мы бы так же передавали указатель но при этом он бы был доступен только для чтения
ЗЫ есть ещё ключевые слова типа var и const но я неуверен что они поддерживаются FastScript так что лучше небуду о них писать...
__________________
Я здесь практически не появляюсь!, Skype - ikskor