• Страница 1 из 1
  • 1
Модератор форума: [east_side]_trane, drifter-dron, valych, admin  
Урок по работе с файлами
Seva008Дата: Среда, 09.02.2011, 12:26:37 | Сообщение # 1

Группа: Пользователи
Сообщений: 80
Урок 1. (основы)

Итак, пока у меня есть время решил написать урок по работе с файлами с помощью встроенных в SA-MP функций, я не буду углубятся в них, а просто опишу как можно записать/прочитать в/из файла данные

Начнём мы пожалуй с перечисления тех самых функций с которыми мы будим работать

Такт 1. Описание функций

fopen(const name[], filemode: mode = io_readwrite); функция служит для открытия файла и передачи ссылки на него для дальнейшей работы входными параметрами являются:

name[] - имя отрываемого файла, включает и путь до него filemode - способ открытия, по умолчанию io_readwrite, давайте поподробнее рассмотрим все способы

io_read - открывает файл с возможностью чтения, если файл не существует то произойдёт краш сервера
io_write - открывает файл и перезаписывает всё его содержимое
io_readwrite - открывает файл с возможностью чтения/записи, если файл не существует, то создаёт его
io_append - открывает файл с возможностью дозаписи файла, если файл не существует, создаёт его

fclose(File: handle); Функция служит для закрытия работы с файлом

входными параметрами являются: handle - ссылка полученная функцией fopen

fremove(const name[]); Функция служит для удаления файла, если файл не возможно удалить, то вернёт false

входными параметрами являются: name[] - имя включающее в себя и путь до файла

fwrite(File: handle, const string[]); Функция служит для записи содержимого массива в файл

входными параметрами являются: handle - ссылка полученная функцией fopen string[] - записываемый массив

fread(File: handle, string[], size = sizeof string, bool: pack = false); Функция служит для чтения построчно данных из файла

входными параметрами являются: handle - ссылка полученная функцией fopen string[] - массив куда будут записываться считанные данные size - количество считываемых в строке байт pack - запаковывать-ли строку(возможно неправильно понял так как это и не использовал)

fexist(const pattern[]); Функция служит для проверки существования файла pattern[] - имя проверяемого файла включающее в себя и путь до файла

Ну что ж, на этом я думаю пока что стоит закончить, Так как эти функции являются самыми важными для нас.

Такт 2. Примеры

Давайте приведём пример чтения и записи строки в/из файла:

Пример чтения строки из файла:

stock ReadOneString(file[],tostring[])
{
if(!fexist(file)) return -1; /* проверяем наличие файла file, если он не существует то прекращаем выполнение функции и возвращаем значение -1 */

new File:opnfile; // создаём файловую переменную
opnfile=fopen(file,io_read); /* открываем файл file с возможностью чтения и записываем его идентификатор в opnfile */
fread(opnfile,tostring); // читаем первую строку из файла и записываем её в tostring
fclose(opnfile); // закрываем работу с файлом
return 1; // возвращаем 1 давая знать что всё прошло успешно
}

Пример записи строки в файл:

stock WriteOneString(tofile[],string[])
{
new File:opnfile; // создаём файловую переменную
opnfile=fopen(tofile,io_append); /* Открываем файл с параметром io_append, в данном случае он больше всего подходит */
fwrite(opnfile,string); // записываем в файл строку string
fclose(opnfile);// закрываем работу с файлом
return 1; // возвращаем 1 давая знать что всё прошло успешно
}

Урок 2. (освоение)

В этом уроке мы опишем остальные стандартные функции по работе с файлами.

Такт 1. Описание функций

fputchar(File: handle, value, bool: utf8 = true); Функция служит для записи символа в файл, в случае успешной записи вернёт true, иначе false handle - ссылка полученная функцией fopen value - записываемый символ utf8 - включена-ли поддержка utf8

fgetchar(File: handle, value, bool: utf8 = true); Функция служит для чтения символа из файла handle - ссылка полученная функцией fopen value - идентификатор в который запишется utf8 - включена-ли поддержка utf8

Скоро появится описание: fblockwrite(File: handle, const buffer[], size = sizeof buffer); fblockread(File: handle, buffer[], size = sizeof buffer); fseek(File: handle, position = 0, seek_whence: whence = seek_start); flength(File: handle); fmatch(name[], const pattern[], index = 0, size = sizeof name);


Я не нуб,хоть и им был!
 
СообщениеУрок 1. (основы)

Итак, пока у меня есть время решил написать урок по работе с файлами с помощью встроенных в SA-MP функций, я не буду углубятся в них, а просто опишу как можно записать/прочитать в/из файла данные

Начнём мы пожалуй с перечисления тех самых функций с которыми мы будим работать

Такт 1. Описание функций

fopen(const name[], filemode: mode = io_readwrite); функция служит для открытия файла и передачи ссылки на него для дальнейшей работы входными параметрами являются:

name[] - имя отрываемого файла, включает и путь до него filemode - способ открытия, по умолчанию io_readwrite, давайте поподробнее рассмотрим все способы

io_read - открывает файл с возможностью чтения, если файл не существует то произойдёт краш сервера
io_write - открывает файл и перезаписывает всё его содержимое
io_readwrite - открывает файл с возможностью чтения/записи, если файл не существует, то создаёт его
io_append - открывает файл с возможностью дозаписи файла, если файл не существует, создаёт его

fclose(File: handle); Функция служит для закрытия работы с файлом

входными параметрами являются: handle - ссылка полученная функцией fopen

fremove(const name[]); Функция служит для удаления файла, если файл не возможно удалить, то вернёт false

входными параметрами являются: name[] - имя включающее в себя и путь до файла

fwrite(File: handle, const string[]); Функция служит для записи содержимого массива в файл

входными параметрами являются: handle - ссылка полученная функцией fopen string[] - записываемый массив

fread(File: handle, string[], size = sizeof string, bool: pack = false); Функция служит для чтения построчно данных из файла

входными параметрами являются: handle - ссылка полученная функцией fopen string[] - массив куда будут записываться считанные данные size - количество считываемых в строке байт pack - запаковывать-ли строку(возможно неправильно понял так как это и не использовал)

fexist(const pattern[]); Функция служит для проверки существования файла pattern[] - имя проверяемого файла включающее в себя и путь до файла

Ну что ж, на этом я думаю пока что стоит закончить, Так как эти функции являются самыми важными для нас.

Такт 2. Примеры

Давайте приведём пример чтения и записи строки в/из файла:

Пример чтения строки из файла:

stock ReadOneString(file[],tostring[])
{
if(!fexist(file)) return -1; /* проверяем наличие файла file, если он не существует то прекращаем выполнение функции и возвращаем значение -1 */

new File:opnfile; // создаём файловую переменную
opnfile=fopen(file,io_read); /* открываем файл file с возможностью чтения и записываем его идентификатор в opnfile */
fread(opnfile,tostring); // читаем первую строку из файла и записываем её в tostring
fclose(opnfile); // закрываем работу с файлом
return 1; // возвращаем 1 давая знать что всё прошло успешно
}

Пример записи строки в файл:

stock WriteOneString(tofile[],string[])
{
new File:opnfile; // создаём файловую переменную
opnfile=fopen(tofile,io_append); /* Открываем файл с параметром io_append, в данном случае он больше всего подходит */
fwrite(opnfile,string); // записываем в файл строку string
fclose(opnfile);// закрываем работу с файлом
return 1; // возвращаем 1 давая знать что всё прошло успешно
}

Урок 2. (освоение)

В этом уроке мы опишем остальные стандартные функции по работе с файлами.

Такт 1. Описание функций

fputchar(File: handle, value, bool: utf8 = true); Функция служит для записи символа в файл, в случае успешной записи вернёт true, иначе false handle - ссылка полученная функцией fopen value - записываемый символ utf8 - включена-ли поддержка utf8

fgetchar(File: handle, value, bool: utf8 = true); Функция служит для чтения символа из файла handle - ссылка полученная функцией fopen value - идентификатор в который запишется utf8 - включена-ли поддержка utf8

Скоро появится описание: fblockwrite(File: handle, const buffer[], size = sizeof buffer); fblockread(File: handle, buffer[], size = sizeof buffer); fseek(File: handle, position = 0, seek_whence: whence = seek_start); flength(File: handle); fmatch(name[], const pattern[], index = 0, size = sizeof name);


Автор - Seva008
Дата добавления - 09.02.2011 в 12:26:37
JoДата: Среда, 09.02.2011, 21:27:38 | Сообщение # 2

Группа: Пользователи
Сообщений: 22
Seva008, объясни пожалуйста а лучше напиши команду пожалуйста вот допустим я хочу записать в файл какое то значение (текст) допустим /napisat (текст) и он сохраняется в файл а потом прочитать /read и он читает данный файл точнее данную запись что бы я окончательно понял)) за ранее благодарю
 
СообщениеSeva008, объясни пожалуйста а лучше напиши команду пожалуйста вот допустим я хочу записать в файл какое то значение (текст) допустим /napisat (текст) и он сохраняется в файл а потом прочитать /read и он читает данный файл точнее данную запись что бы я окончательно понял)) за ранее благодарю

Автор - Jo
Дата добавления - 09.02.2011 в 21:27:38
Seva008Дата: Четверг, 10.02.2011, 08:47:02 | Сообщение # 3

Группа: Пользователи
Сообщений: 80
Сейчас напишу

Добавлено (10.02.2011, 08:47)
---------------------------------------------
Ну это через лог делается:
if(strcmp(cmd, "/napisat", true) == 0)
{
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Ололо подсказочка:текст напышы!1111");
return 1;
}
format(string, sizeof(string), "%s: %s", sendername, result);
ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);//В гф вставляй!
SayLog(string[]);
return 1;
}

stock SayLog(string[])
{
new entry[256];
format(entry, sizeof(entry), "%s\n",string);
new File:hFile;
hFile = fopen("say.log", io_append);
fwrite(hFile, entry);
fclose(hFile);
}
вот код для записи

для чт.

if(strcmp(cmd,"/read",true)==0)
{
new File: file = fopen("say.log", io_read);
fread(file, strFromFile2);
return 1;
}//тоже для гф


Я не нуб,хоть и им был!
 
СообщениеСейчас напишу

Добавлено (10.02.2011, 08:47)
---------------------------------------------
Ну это через лог делается:
if(strcmp(cmd, "/napisat", true) == 0)
{
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Ололо подсказочка:текст напышы!1111");
return 1;
}
format(string, sizeof(string), "%s: %s", sendername, result);
ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);//В гф вставляй!
SayLog(string[]);
return 1;
}

stock SayLog(string[])
{
new entry[256];
format(entry, sizeof(entry), "%s\n",string);
new File:hFile;
hFile = fopen("say.log", io_append);
fwrite(hFile, entry);
fclose(hFile);
}
вот код для записи

для чт.

if(strcmp(cmd,"/read",true)==0)
{
new File: file = fopen("say.log", io_read);
fread(file, strFromFile2);
return 1;
}//тоже для гф


Автор - Seva008
Дата добавления - 10.02.2011 в 08:47:02
JoДата: Четверг, 10.02.2011, 10:39:24 | Сообщение # 4

Группа: Пользователи
Сообщений: 22
Seva008, я тебе безумно благодарен а вот еще 1 вопрос как сделать эту же команду вот /napisat но уже чтоб она выглядела так типо /napisat (текст)(имя файла) и потом чтоб данный файл сохранялся под именем которое будет введено в (имя файла) и так же с чтением файла вводишь /read (текст)(имя файла) и он будет читать тот файл который указан в (имени файла)
 
СообщениеSeva008, я тебе безумно благодарен а вот еще 1 вопрос как сделать эту же команду вот /napisat но уже чтоб она выглядела так типо /napisat (текст)(имя файла) и потом чтоб данный файл сохранялся под именем которое будет введено в (имя файла) и так же с чтением файла вводишь /read (текст)(имя файла) и он будет читать тот файл который указан в (имени файла)

Автор - Jo
Дата добавления - 10.02.2011 в 10:39:24
Seva008Дата: Четверг, 10.02.2011, 10:46:53 | Сообщение # 5

Группа: Пользователи
Сообщений: 80
Это не возможно,так же с /read,ты сам поменяй там SayLog на PiskaLog и всё)

Добавлено (10.02.2011, 10:46)
---------------------------------------------
а неет возможно ща напишу


Я не нуб,хоть и им был!
 
СообщениеЭто не возможно,так же с /read,ты сам поменяй там SayLog на PiskaLog и всё)

Добавлено (10.02.2011, 10:46)
---------------------------------------------
а неет возможно ща напишу


Автор - Seva008
Дата добавления - 10.02.2011 в 10:46:53
JoДата: Четверг, 10.02.2011, 10:50:15 | Сообщение # 6

Группа: Пользователи
Сообщений: 22
Seva008, давай жду))
 
СообщениеSeva008, давай жду))

Автор - Jo
Дата добавления - 10.02.2011 в 10:50:15
Seva008Дата: Четверг, 10.02.2011, 10:54:13 | Сообщение # 7

Группа: Пользователи
Сообщений: 80
if(strcmp(cmd, "/napisat", true) == 0)
{
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Ололо подсказочка:текст напышы!1111 и имя файла!111");
return 1;
}
new string[256];
format(string, sizeof(string), "%s: %s", sendername, result);
ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);//В гф вставляй!
SayLog(string[]);
return 1;
}

stock SayLog(string[])
{
new entry[256];
new string[256];
format(entry, sizeof(entry), "%s\n",string);
new File:hFile;
hFile = fopen(string, io_append);
fwrite(hFile, entry);
fclose(hFile);
}
вот код для записи

для чт.

if(strcmp(cmd,"/read",true)==0)
{
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Ололо подсказочка:текст напышы!1111 и имя файла!!");
return 1;
}
new string[256];
new File: file = fopen(string, io_read);
fread(file, strFromFile2);
return 1;
}//тоже для гф

вроде так

Добавлено (10.02.2011, 10:54)
---------------------------------------------
Я не помню честно,я давно не работал с файлами))


Я не нуб,хоть и им был!
 
Сообщениеif(strcmp(cmd, "/napisat", true) == 0)
{
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Ололо подсказочка:текст напышы!1111 и имя файла!111");
return 1;
}
new string[256];
format(string, sizeof(string), "%s: %s", sendername, result);
ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);//В гф вставляй!
SayLog(string[]);
return 1;
}

stock SayLog(string[])
{
new entry[256];
new string[256];
format(entry, sizeof(entry), "%s\n",string);
new File:hFile;
hFile = fopen(string, io_append);
fwrite(hFile, entry);
fclose(hFile);
}
вот код для записи

для чт.

if(strcmp(cmd,"/read",true)==0)
{
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Ололо подсказочка:текст напышы!1111 и имя файла!!");
return 1;
}
new string[256];
new File: file = fopen(string, io_read);
fread(file, strFromFile2);
return 1;
}//тоже для гф

вроде так

Добавлено (10.02.2011, 10:54)
---------------------------------------------
Я не помню честно,я давно не работал с файлами))


Автор - Seva008
Дата добавления - 10.02.2011 в 10:54:13
JoДата: Четверг, 10.02.2011, 11:02:47 | Сообщение # 8

Группа: Пользователи
Сообщений: 22
Seva008, спасибо тебе=))
 
СообщениеSeva008, спасибо тебе=))

Автор - Jo
Дата добавления - 10.02.2011 в 11:02:47
Seva008Дата: Четверг, 10.02.2011, 11:18:12 | Сообщение # 9

Группа: Пользователи
Сообщений: 80
Незачто :)

Я не нуб,хоть и им был!
 
СообщениеНезачто :)

Автор - Seva008
Дата добавления - 10.02.2011 в 11:18:12
MaXMuTДата: Пятница, 17.06.2011, 20:08:28 | Сообщение # 10

Группа: Пользователи
Сообщений: 90
Авторов не забываем указывать,ок?И источник.

Вернулся на форум.Пишите в личу,если кому надо помочь по скриптенгу( только на форуме,в скайпе не помогаю )
 
СообщениеАвторов не забываем указывать,ок?И источник.

Автор - MaXMuT
Дата добавления - 17.06.2011 в 20:08:28
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
02:48:05
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2025

vkontakte :samp-pawno.ru: