Remove an line from .txt file -
GospodinX - 09.08.2018
Hi guys
I have .txt file with skins,for example:
Код:
0
1
2
3
4
10
15
20
50
128
I want to make that I can add/delete skins IG!Adding skin is simple,but problem is remove line.
I'm try with this function:
Код:
fdeleteline(filename[], removed[])
{
new string[64], str[32], File:handle, File:ftmp;
handle = fopen(filename,io_read);
format(str,sizeof(str),"%s.part",filename);
ftmp = fopen(str,io_write);
while(fread(handle,string))
if(strfind(string,removed) == -1)
fwrite(ftmp,string);
fclose(handle);
fclose(ftmp);
handle = fopen(filename,io_write);
ftmp = fopen(str,io_read);
while(fread(ftmp,string))
fwrite(handle,string);
fclose(handle);
fclose(ftmp);
return fremove(str);
}
Problem is when I use this:
fdeleteline("skins.txt","0");
So I want that he delete 0 skin,he will delete 10,20,50 ...I don't know how to fix this..
Re: Remove an line from .txt file -
GospodinX - 10.08.2018
Bump :/
Re: Remove an line from .txt file -
[WSF]ThA_Devil - 10.08.2018
Код:
while(fread(handle,string))
if(strfind(string,removed) == -1) {
fwrite(ftmp,string);
break;
}
Use that or change it to strcmp and compare the entire length of the string.
Re: Remove an line from .txt file -
jlalt - 10.08.2018
PHP код:
fdeleteline(filename[], removed[])
{
new string[64], str[32], File:handle, File:ftmp;
handle = fopen(filename,io_read);
format(str,sizeof(str),"%s.part",filename);
ftmp = fopen(str,io_write);
while(fread(handle,string))
if(strcmp(string,removed, true))
fwrite(ftmp,string);
fclose(handle);
fclose(ftmp);
handle = fopen(filename,io_write);
ftmp = fopen(str,io_read);
while(fread(ftmp,string))
fwrite(handle,string);
fclose(handle);
fclose(ftmp);
return fremove(str);
}
Re: Remove an line from .txt file -
GospodinX - 10.08.2018
It don't work...(No one..)
Re: Remove an line from .txt file -
Logic_ - 10.08.2018
Just use SQLite.
PHP код:
#define SQL_DATABASE_NAME "settings.db"
#define TABLE_SKINS "`Skins`"
new DB: sqlDatabase;
public OnGameModeInit() {
sqlDatabase = db_open(SQL_DATABASE_NAME);
if (sqlDatabase == DB: 0) {
print("An error occured trying to create a database.");
return 1;
}
db_free_result(db_query(sqlDatabase, "CREATE TABLE IF NOT EXISTS "#TABLE_SKINS" (`SkinID` INTEGER)"));
return 1;
}
public OnGameModeExit() {
if (sqlDatabase != DB: 0) {
db_close(sqlDatabase);
}
return 1;
}
RemoveSkin(skinid) {
new query[54];
format(query, sizeof query, "DELETE FROM "#TABLE_SKINS" WHERE `SkinID` = '%d'", skinid);
db_free_result(db_query(sqlDatabase, query));
return 1;
}
InsertSkins(skinid) {
new query[54];
format(query, sizeof query, "INSERT INTO "#TABLE_SKINS" (`SkinID`) VALUES('%d')", skinid);
db_free_result(db_query(sqlDatabase, query));
return 1;
}
Re: Remove an line from .txt file -
Jefff - 10.08.2018
or change
pawn Код:
if(strfind(string,removed) == -1)
to
pawn Код:
if(strfind(string,removed) != 0)
or
if(strfind(string,removed))
Re: Remove an line from .txt file -
jlalt - 11.08.2018
Quote:
Originally Posted by Jefff
or change
pawn Код:
if(strfind(string,removed) == -1)
to
pawn Код:
if(strfind(string,removed) != 0)
or
if(strfind(string,removed))
|
Remvoing skin id 5
Id 5 gets removed
Id 50 - 59 gets removed
Remove skin id 1
Id 1 gets removed id 10 - 19 gets removed...
Remove skin id 2
Id 2 gets removed id 20 - 29 gets removed
You've disappointed me Jefff, you have always been my inspiration <3
Re: Remove an line from .txt file -
denNorske - 11.08.2018
Original poster:
strfind is used to find a specific substring in a string. Lets say you have this string:
"I
am a duck"-
if you use strfind, the function will search through the string until it finds what you are looking for.
lets try to find "
am"?
strfind returns 2. (because "am" was found on the 3rd spot in the string.)
You should definitly use strcmp (read it as stringcompare). This function compares the original string with the string you want to find, and it has to be exactly the same.
"am" is not equal to "I am a duck".
Same goes to your problem. If you want to find "0" or "13" - you need to compare the entire word.
strfind searching for "1" will locate every number with 1 in it in your case - and delete them.
strcmp will not, as it will only take care of the "exact" same.
Available documentation on the functions here:
https://sampwiki.blast.hk/wiki/Strfind
https://sampwiki.blast.hk/wiki/Strcmp
You should get familiar with it's differences and use them correctly.
Re: Remove an line from .txt file -
GospodinX - 11.08.2018
denNorske:
jlalt is used strcmp and it don't work (
http://forum.sa-mp.com/showpost.php?...16&postcount=4 )
Logic:
Yeah.Thank you for your time to make this.I use MySQL and i know make this in MySQL.But I use include mSelection (
https://sampforum.blast.hk/showthread.php?tid=407045 ) and he load skins/vehicles from .txt file.So I want use it if it's possible.If not,i will use MySQL.