15.12.2010, 18:46
Не могу решить небольшую проблему. Имеется одна функция для считывания данных с массива, что стоят после знака = (взята из gf):
Мне понадобилось её немного усовершенствовать (может быть в этом и есть моя ошибка):
(то есть добавил параметр size, который указывает размер разбираемого массива)
Вот код для примера, в котором была использована эта функция:
(GetKey(data) тоже взята из gf)
Ну и в результате выходит вот такая ошибка:
Код:
stock GetValue(line[])
{
new valRes[128];
valRes[0] = 0;
if(strfind(line, "=", true) == -1) return valRes;
strmid(valRes, line, strfind(line, "=", true) +1, strlen(line), sizeof(valRes));
return valRes;
}
Код:
stock GetValue(line[], size)
{
new valRes[size];
valRes[0] = 0;
if(strfind(line, "=", true) == -1) return valRes;
strmid(valRes, line, strfind(line, "=", true) +1, strlen(line), sizeof(valRes));
return valRes;
}
Вот код для примера, в котором была использована эта функция:
Код:
new test1[128], test2[128], test3[128];
new File:file = fopen("test.cfg", io_read), data[128];
while(fread(file, data, sizeof(data)))
{
StripNewLine(GetValue(data, sizeof(data))); // строка 1
if(strcmp(GetKey(data), "test1", true) == 0) { test1 = GetValue(data, sizeof(data)); } // строка 2
if(strcmp(GetKey(data), "test2", true) == 0) { test2 = GetValue(data, sizeof(data)); } // строка 3
if(strcmp(GetKey(data), "test3", true) == 0) { test3 = GetValue(data, sizeof(data)); } // строка 4
}
fclose(file);
Ну и в результате выходит вот такая ошибка:
Код:
error 035: argument type mismatch (argument 1) <- строка 1 error 033: array must be indexed (variable "test1") <- строка 2 error 033: array must be indexed (variable "test2") <- строка 3 error 033: array must be indexed (variable "test3") <- строка 4

