Array List old style

Nekro

Терра инкогнита
Сообщения
4,042
Реакции
2,295
Ребят подскажите, вот так в новом работает, а в старом нет


C-подобный:
new String:sPath[256] = "sound/1.mp3";

new ArrayList:hSoundList;
hSoundList = ArrayList:ByteCountToCells(128);

ClearArray(hSoundList);            //Тут ошибка warning 213: tag mismatch
PushArrayString(hSoundList, sPath);    //Тут тоже ошибка warning 213: tag mismatch
 

Вложения

  • Screenshot_5.png
    Screenshot_5.png
    7 КБ · Просмотры: 28

stotik

Участник
Сообщения
116
Реакции
34
Ребят подскажите, вот так в новом работает, а в старом нет


C-подобный:
new String:sPath[256] = "sound/1.mp3";

new ArrayList:hSoundList;
hSoundList = ArrayList:ByteCountToCells(128);

ClearArray(hSoundList);            //Тут ошибка warning 213: tag mismatch
PushArrayString(hSoundList, sPath);    //Тут тоже ошибка warning 213: tag mismatch
ну это ж не ошибка, а предупреждение всего лишь

ArrayList.Clear();

Есть же метод специальный для чистки

ну и добавить элемент можно таким образом
ArrayList.PushString()
 
Последнее редактирование:

Nekro

Терра инкогнита
Сообщения
4,042
Реакции
2,295
в твоем случае скорее всего будет так

hSoundList.Clear();
Это понятно, но
hSoundList.Clear();

C-подобный:
hide_and_seek.sp(332) : warning 215: expression has no effect
hide_and_seek.sp(332) : error 001: expected token: ";", but found "."
hide_and_seek.sp(332) : error 029: invalid expression, assumed zero
hide_and_seek.sp(332) : error 017: undefined symbol "Clear"
hide_and_seek.sp(332) : fatal error 127: too many error messages on one line
 

Вложения

  • Screenshot_6.png
    Screenshot_6.png
    4.2 КБ · Просмотры: 11

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #6
C-подобный:
hSoundList = ArrayList:ByteCountToCells(128);
Это не может вообще никак работать, потому что эта функция просто умножает полученное значение на 4, предварительно увеличив его на 3.
К тому же, старые функции ничего не знают об ArrayList, надо использовать генерик Handle.

Правильно так:
C-подобный:
new String:sPath[256] = "sound/1.mp3";

new Handle:hSoundList = CreateArray(ByteCountToCells(128));

ClearArray(hSoundList);
PushArrayString(hSoundList, sPath);
 

Nekro

Терра инкогнита
Сообщения
4,042
Реакции
2,295
C-подобный:
hSoundList = ArrayList:ByteCountToCells(128);
Это не может вообще никак работать, потому что эта функция просто умножает полученное значение на 4, предварительно увеличив его на 3.
К тому же, старые функции ничего не знают об ArrayList, надо использовать генерик Handle.

Правильно так:
C-подобный:
new String:sPath[256] = "sound/1.mp3";

new Handle:hSoundList = CreateArray(ByteCountToCells(128));

ClearArray(hSoundList);
PushArrayString(hSoundList, sPath);
Благодарю, работает
 
Сверху Снизу