GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: mauladam - 2011. december 27. - 18:50:12

Cím: fdeleteline függvény
Írta: mauladam - 2011. december 27. - 18:50:12
Sziasztok!
Próbáltam írni egy fdeleteline függvényhez hasonlító függvényt, aminek az lenne a lényege, hogyha a fájlban van olyan sor, aminek az elsõ karakterlánca megegyezik a keresett sztringgel, akkor azt a sort törölje ki, és a többit tartsa meg.
Így próbálkoztam:
[pawn]stock fdeletekey(fajlnev[], kulcs[])
{
if(!fexist(fajlnev)) return 0;
new valu[32], val, Float:v;
new File:tmpfajl;
fajl1 = fopen(fajlnev, io_read);
tmpfajl = fopen(\"tmpfajl.tmp\", io_write);
while(fread(fajl1, sor)){
   if(sscanf(sor, \"s[32]s[32]\", k,valu) && sscanf(sor, \"s[32]i\", k,val) && sscanf(sor, \"s[32]f\", k,v) && sscanf(sor, \"s[32]l\", k,valu)){
      if(strcmp(kulcs, k)){
         fwrite(tmpfajl, sor);
      }
   }
}
fclose(fajl1);
fremove(fajlnev);
fclose(tmpfajl);
fajl1 = fopen(fajlnev, io_write);
tmpfajl = fopen(\"tmpfajl.tmp\", io_read);
while(fread(tmpfajl, sor)){
   fwrite(fajl1, sor);
}
fclose(tmpfajl);
fremove(\"tmpfajl.tmp\");
fclose(fajl1);
return 1;
}
[/pawn]
Az a gond vele, hogyha egy másik függvényben használom, és azt a függvényt használom a filterscriptben, akkor crashel.
Pawn error nincs, tehát nem tudom mi lehet a baja.
Észrevettem egy dolgot, mégpedig, hogyha elindítom a szervert, a konzolba kapok egy sscanf errort:
 
[18:47:45] sscanf error: The current build ONLY supports 0.3d

 
AZ a furcsa ebben, hogy 0.3d-t használok.
Remélem valaki tud majd segíteni.
Cím: fdeleteline függvény
Írta: kurta999 - 2011. december 28. - 00:03:41
Frissítsd az sscanf-et!
http://sampforum.hu/index.php?topic=4331.msg204545#msg204545


A crash oka pedig az lehet, hogy egy olyan fájlot próbálsz megnyitni io_read móddal, ami nem létezik.
Vagy esetleg az sscanf-nél a string buffer méret kicsi a stringnek, amibe beletöltöd a sort. Akkor is crashel.