[REL]tfile 3.1 Best ini files system #update 16.07.12 -
Terminator3 - 25.06.2012
I present you, my new plugin named tfile 3.0, is based on C++ fstream and it's better than standard file.inc (more characters available)
Why it is better then others file systems?
Almost all to set one value to file must use one function, in my plugin you use one function to save or get unlimited number of data
Functions:
fGetData(const file[], const format[], {Float,_}:...)
Get the data from the file
- const file[] - name of a file
- const format[] - list of keys and value types to get from file, see below*
- {Float,_}:... - arguments to save data from file
Return numbers of getting values from file
fSaveData(const file[], const format[], {Float,_}:...)
Saves data to the file
- const file[] - name of a file
- const format[] - the same as fGetData*
- {Float,_}:... - arguments (values) to save in the file
Returns true if all is correct
fAddData(const file[], const string[], bool:exist = false)
Add data to the file
- const file[] - name of a file
- const string[] - text to save in file
- bool:exist = false - file must exist, default no
Returns true if all is correct
fDeleteData(const file[], const key[])
Deletes the data from the file
- const file[] - file name
- const key[] - key or list of keys separated by ,
Returns true if all is correct
fKeyExist(const file[], const key[])
Check if key or keys (max 32) exist in file
- const file[] - file name
- const key[] - key or list of keys separated by ,
For one key returns true/false, for more returns number that represented by bits which one key exist or not
fCreate(const file[], const string[])
Creates a file and saves something to him
- const file[] - file name
- const string[] - text to save in file
Returns true if all is correct
Additional functions
fConvertTags(const file[], oldtag, newtag)
Convert diverting char
- const file[] - file name
- oldtag - old diverting char, for example '='
- newtag - new diverting char, for example '-'
Returns true if all is correct
fChangeConfig(keytab = '=', nicelook = false, ignorekeycase = false, keysize = 30, linesize = 256)
- keytab = '=' - diverting char
- nicelook = false - if true file looks "key = value" is false "key=value"
- ignorekeycase = false - whether to ignore case when searching for a key in a file
- keysize = 30 - max length of key name
- linesize = 256 - max size of one line in file
Returns true if all is correct
*What is the format? i explain the example
pawn Code:
new pass[24], Float:hp, sex = 'F';
GetPlayerHealth(playerid, hp);
fSaveData("test.txt", "Money<d>Pass<s>HP<f>sex<c>", GetPlayerMoney(playerid), pass, hp, sex);
and in file we find:
Quote:
Money=10000
Pass=mama
HP=100.0
sex=F
|
and the same to get:
pawn Code:
new money, pass[24], Float:hp, sex;
fGetData("test.txt", "Money<d>Pass<s>HP<f>sex<c>", money, pass, hp, sex);
SetPlayerMoney(playerid, money);
SetPlayerHealth(playerid, hp);
<i> or <d> - number
<s> - string, text
<f> - float value
<c> - one char
pawn Code:
new x = fKeyExist("test.txt", "Money,Score,sex,Money");
if(x & 1) // if Money exist
print("Money exist");
if(x & 2) // if Score exist
print("Score exist");
if(x & 4) // if sex exist
print("sex exist");
if(x & 8) // if Money exist
print("Money exist");
pawn Code:
fDeleteData("test.txt", "Money,sex");
after that file looks:
pawn Code:
new str[64];
format(str, sizeof str, "Money=%d\nScore=%d\nVIP=1\n", GetPlayerMoney(playerid), GetPlayerScore(playerid));
fAddData("test.txt", str);
Download:
tfile3.inc;
Mirror
tfile.dll;
Mirror
tfile.so;
Mirror
Source Code;
Mirror
Re: [REL]tfile 3.0 Best file system! -
zgintasz - 25.06.2012
Nice
![Wink](images/smilies/wink.png)
! I want to see some speed test results.
EDIT: hehe, first post
Re: [REL]tfile 3.0 Best file system! -
Littlehelper - 25.06.2012
Looks nice, gonna test it.
Re: [REL]tfile 3.0 Best file system! -
TheArcher - 25.06.2012
Looks a nice one, can you do some tests please. I'm so curious.
Re: [REL]tfile 3.0 Best file system! -
Face9000 - 25.06.2012
Nice job.
Re : [REL]tfile 3.0 Best file system! -
Vukilore - 25.06.2012
I'm waiting for a response of ******, to be sure
Re: Re : [REL]tfile 3.0 Best file system! -
Terminator3 - 25.06.2012
Quote:
Originally Posted by Vukilore
I'm waiting for a response of ******, to be sure ![Cheesy](images/smilies/biggrin.png)
|
Everybody loves professionals
Quote:
Originally Posted by TheArcher
Looks a nice one, can you do some tests please. I'm so curious.
|
Tests?
Re: [REL]tfile 3.0 Best file system! -
rVar - 25.06.2012
Awesome! Waiting for speed results comparing this with y_ini.
Re: [REL]tfile 3.0 Best file system! -
Terminator3 - 25.06.2012
Quote:
Originally Posted by rVar
Awesome! Waiting for speed results comparing this with y_ini.
|
It's hard to tell, in y_ini you uses one function to set one value to file, it's easy to test the speed, you just make big loop and count the time for example 10000 runs of function, then just divide time by 10000
Here you have one function and you can write big number of arguments but more time will take loop for all arguments in function then others things, and you will never set/get so many arguments to/from file, so if you divide by numbers of arguments you get more time for checking arguments, searching then, than normally run time of function
Re: Re : [REL]tfile 3.0 Best file system! -
TheArcher - 25.06.2012
Quote:
Originally Posted by Terminator3
Tests?
|
Quote:
Originally Posted by rVar
Waiting for speed results comparing this with y_ini.
|
4 char
Re: [REL]tfile 3.0 Best file system! -
Prumpuz - 01.07.2012
When trying to use this plugin I always get this:
Code:
Run time error 19: "File or function is not found"
I even tried something simple and small in a bare gamemode:
pawn Code:
fCreate("test.txt", "Testing");
And it still gives me the error, I've tried both on Windows and Linux. I have tfile3 included, the plugin is in the plugins folder and "tfile" is in the plugins line in server.cfg
Am I missing something?
Re: [REL]tfile 3.0 Best file system! -
KingHual - 01.07.2012
I'll do a few tests myself in an hour and post the results here.
Re: [REL]tfile 3.0 Best file system! -
Terminator3 - 01.07.2012
Quote:
Originally Posted by Prumpuz
When trying to use this plugin I always get this:
Code:
Run time error 19: "File or function is not found"
I even tried something simple and small in a bare gamemode:
pawn Code:
fCreate("test.txt", "Testing");
And it still gives me the error, I've tried both on Windows and Linux. I have tfile3 included, the plugin is in the plugins folder and "tfile" is in the plugins line in server.cfg
Am I missing something?
|
Any error in server_log.txt with loading plugin ?
Re: [REL]tfile 3.0 Best file system! -
Terminator3 - 01.07.2012
Quote:
Originally Posted by ******
Will it read the data? Will it detect that every key exists? Will it overwrite correctly? I've not tested this so I don't know.
|
Yes, order does not matter.
Quote:
Originally Posted by ******
Finally, the name is misleading - this isn't a FILE plugin, it's an INI plugin. Files can contain many different types of data in many different formats, this will only handle one of those types. Speaking of which, how does it handle INI sections and comments, something most of the INI parsers here don't deal with well?
|
Sorry, i always used the name 'file system' because in SA: MP rather, no one uses files for other things as storing data in this way. But i can always change the name of 'topic'
Quote:
Originally Posted by ******
There are so many mistakes in that code it's not even funny - and the compiler will catch NONE of them. In other systems:
|
Similar like in sscanf
I was thinking about doing a function to open and close the file, but ultimately I made the argument file name because even if I make this function the fGet/SaveData will still read whole file line by line
Re: [REL]tfile 3.0 Best file system! -
KingHual - 01.07.2012
Quote:
Originally Posted by ******
Touchй!
|
Though, you were comparing the file system to other file systems, not to sscanf (since they obviously have nothing in common).
Re: [REL]tfile 3.0 Best file system! -
Kaperstone - 02.07.2012
Looks intersting...
will test it out.
Can you provide test results ?
Re: [REL]tfile 3.0 Best file system! -
Niko_boy - 02.07.2012
oh great , a ini system based on plugin , really rox
Re: [REL]tfile 3.0 Best file system! -
Edvin - 03.07.2012
Nice release.
Good work.
Re: [REL]tfile 3.0 Best file system! -
Terminator3 - 10.07.2012
Big update of optimality and improvement of several errors
Re: [REL]tfile 3.0 Best file system! -
NeyMar96 - 16.07.2012
If the server shutdown it not save the data