http://laska-samp.biz/articles/pawn-book/osnovy-skripttting/ispol-split
°•°•° Проект SAMP - Romashka [0.3e] ™18+™ °•°•° :: Теория :: Pawn :: Основы скриптинга

Использование split

Допустим, нам нужно сохранить транспорт в файл.

Научимся считывать данные с файла в строках, где указано не 1, а несколько параметров сразу разделенных запятой или другим знаком.
Функция split как раз и отделяет эти параметры. Для начала в любом месте скрипта пишем эту функцию:

stock split(const strsrc[ ], strdest[ ][ ], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc[i]==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}


Теперь объявим массив enum и глобальную переменную:

enum zInfo
{
Float:zX,
Float:zY,
Float:zZ,
};
new CarInfo[3][zInfo];


Массив zInfo будет хранить считанные с файла данные.
Внутри массива мы объявляем переменные для хранения координат X,Y,Z (zX, zY, zZ).
Сразу обратите внимание.
Чтобы обратиться к переменной из массива zInfo, чтобы передать ее значение другой переменной, нам нужно использовать массив CarInfo.
Первая цифра в квадратных скобках, это количество строк в массиве, во вторых квадратных скобках будет имя ячейке, к которой мы обращаемся, например: zX. То есть обращение к ячейке массива будет выглядеть так: CarInfo[5][zX] (мы обращаемся к 5 строке массива, к ячейке zX.
Саму загрузку данных из файла нужно делать в отдельном public, как показано на примере ниже.

stock LoadCars()
{
new arrCoords[3][64];
new strFromFile2[256];
new File: file = fopen("cars.cfg", io_read);
if (file)
{
new idx;
while (idx < sizeof(CarInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
CarInfo [idx][ zX] = floatstr(arrCoords[0]);
CarInfo [idx][ zY] = floatstr(arrCoords[1]);
CarInfo [idx][ zZ] = floatstr(arrCoords[2]);
idx++;
}
fclose(file);
}
return 1;
}


Idx – это номер строки.
С помощью цикла while мы поочередно считывает с каждой строки файла координаты.

Процесс считывания:



Опубликовано 11 December 2013