Biztos van már ebbõl is többféle verzió, ezért kreáltam egyet én is. :angel:
Segítségével egy fájlból beolvasva kétfelé lehet szedni egy beolvasott sor adatait, melyet az egyenlõség jellel választanak el.
Példaként legyen a fájl neve Config.ini, a tartalma a következõ:
Autologin=1
AdminSkin=214
[/quote]
A példa szkript:
public
OnFilterScriptInit()
{
new
File:F = fopen(\"Config.ini\", io_read),
str[128],
name[64],
value[64];
if(F)
{
while(fread(F, str))
{
if(ini_cut(str, name, value)) printf(\"Error. line: %s\", str);
else printf(\"%s <--> %s\", name, value);
}
fclose(F);
}
return 1;
}
Eredményként ezt kapjuk:
Autologin <--> 1
AdminSkin <--> 214
[/quote]
És a kód:
stock
ini_cut(line[], name[], value[], const delim = \'=\') // author by Zsolesszka
{
new
ch,
pos = 0,
pos2 = 0,
bool:valid = true;
while((ch = line[pos++]) >= \' \')
{
while(line[pos] == \' \') pos++;
if(ch == delim) { valid = false; continue; }
if(valid)
name[pos - 1] = ch, name[pos] = EOS;
else
value[pos2++] = ch, value[pos2] = EOS;
}
return valid;
}
Megjegyzés:
Természetesen a string méretek megadásánál ügyelni kell a megfelelõ méretek megadására, a példában szerintem bõséges méreteket adtam meg, ha úgy kerül használatra akkor nem hiszem hogy gond lesz belõle, a hiba a következõ lenne: Ha túl hosszú nevet adna valaki a megjegyzésnek vagy az adatnak pl.: hblkahjdalhdaslkhflkhaslhxlkdhfaclhxlkdahflxahfxlahjfalxfdasfasdhflkas=2318732187632187632187361283762817362871638 de nem hiszem hogy ilyen extrém hosszú elnevezésekkel látna el bárki is valamilyen adatot.