PDA

Просмотр полной версии : [Вопрос] error 035



PawnoNoob
13.05.2017, 22:52
Всем привет. Скажу сразу, что я знаю о том, что 035 ошибка - несоответствие типа аргументов, но почему-то, к сожалению, никак не получается её исправить.

Перейдём к делу: решил я реализовать некую систему, данные для которой загружаются из базы данных.

mysql_tquery(mysql, !"SELECT * FROM `test`", !"TestSys", "");
Тут, в принципе, ошибки нет. Перейдём к самой функции:


public TestSys()
{
new rows;
cache_get_row_count(rows);
if(rows)
{
for(new i = 0; i < rows; i ++)
{
cache_get_value_name_int(i-1, !"row1", row1{i});
}
}
else print(!"Не загружено.");
return true;
}
Собственно, ошибка возникает в строке "cache_get_value_name_int". Что в ней не так?
Ну и переменная:

new row1[10 char];

DeimoS
13.05.2017, 23:08
Потому что нельзя обращаться к байтам в случае с аргументами, которые передаются по ссылке.
Можно обойти это так:

public TestSys()
{
new rows;
cache_get_row_count(rows);
if(rows)
{
for(new i = 0, buff; i < rows; i ++)
{
cache_get_value_name_int(i-1, !"row1", buff);
row1{i} = buff;
}
}
else print(!"Не загружено.");
return true;
}

PawnoNoob
13.05.2017, 23:52
Потому что нельзя обращаться к байтам в случае с аргументами, которые передаются по ссылке.
Можно обойти это так:

public TestSys()
{
new rows;
cache_get_row_count(rows);
if(rows)
{
for(new i = 0, buff; i < rows; i ++)
{
cache_get_value_name_int(i-1, !"row1", buff);
row1{i} = buff;
}
}
else print(!"Не загружено.");
return true;
}

А если несколько переменных?

DeimoS
14.05.2017, 00:11
public TestSys()
{
new rows;
cache_get_row_count(rows);
if(rows)
{
for(new i = 0, buff; i < rows; i ++)
{
cache_get_value_name_int(i-1, !"row1", buff);
row1{i} = buff;
cache_get_value_name_int(i-1, !"row2", buff);
row2{i} = buff;
cache_get_value_name_int(i-1, !"row3", buff);
row3{i} = buff;
cache_get_value_name_int(i-1, !"row4", buff);
row4{i} = buff;
}
}
else print(!"Не загружено.");
return true;
}