Page 1 of 1

ошибка Out Of Range

Posted: 20.12.2014 18:41
by Stels
Подскажите, не могу понять в чем причина

Code: Select all

Const
123Type = $2222;
var
i: integer;
123Array: array of Cardinal;
begin
    if FindType(123Type,BackPack) <> 0 then
    begin
        AddToSystemJournal('Всего найдено '+IntToStr(FindCount)+' 123');
        for i:=0 to (FindCount-1) do
            begin
                123Array[i]:=FindType(123Type,BackPack);
                Ignore(FindItem);
            end;
         IgnoreReset;
     end.
Компиляция проходит нормально, но при выполнении строки 123Array:=FindType(123Type,BackPack); выдает ошибку Out of Range, в чем может быть причина? При этом тип массива не важен, кардинал или ворд... ошибка таже

Re: ошибка Out Of Range

Posted: 20.12.2014 18:52
by Kobzar
GetFindedList

Re: ошибка Out Of Range

Posted: 20.12.2014 18:59
by CFA
Не задан размер массива 123Array

Code: Select all

    if FindType(123Type,BackPack) <> 0 then
    begin
        SetArrayLength(123Array, FindCount); // или SetLength
        for i:=0 to (FindCount-1) do

Re: ошибка Out Of Range

Posted: 20.12.2014 19:06
by Stels
Kobzar wrote:GetFindedList
Благодарю

Re: ошибка Out Of Range

Posted: 20.12.2014 19:07
by Stels
CFA wrote:Не задан размер массива 123Array

Code: Select all

    if FindType(123Type,BackPack) <> 0 then
    begin
        SetArrayLength(123Array, FindCount); // или SetLength
        for i:=0 to (FindCount-1) do
насколько я знаю, если не указывать размер у массива, то он принимается за максимально-возможный
Но суть я понял :)

Re: ошибка Out Of Range

Posted: 20.12.2014 19:17
by CFA
Нет, если ему не указывать размер, это будет динамический массив, с нулевой длиной.