stock LineSub(filename[], coment[])
{
new File:temp = fopen("temp.tmp", io_write),
File:pfile = fopen(filename, io_read),
line, tmp[1024];
if(!fexist(filename))
return 0;
while(fread(pfile, tmp))
{
line ++;
if(line != 1)
fwrite(temp, tmp);
}
fclose(temp);
fclose(pfile);
fremove(filename);
temp = fopen("temp.tmp", io_read);
pfile = fopen(filename, io_write);
fwrite(pfile, coment);
while(fread(temp, tmp))
fwrite(pfile, tmp);
fclose(temp);
fclose(pfile);
fremove("temp.tmp");
return 1;
}
LineSub(const filename[], const coment[], lineid)
{
if (!fexist(filename))
{
return 0;
}
new
File: temp=fopen("temp.tmp", io_write),
File: pfile=fopen(filename, io_read),
line, tmp[128]
;
if (!pfile)
{
return 0;
}
while(fread(pfile, tmp))
{
line ++;
if (line != lineid)
{
fwrite(temp, tmp);
}
else
{
fwrite(temp, coment);
fwrite(temp, "\r\n");
}
}
fclose(temp);
fclose(pfile);
if ((pfile = fopen(filename, io_write)))
{
if ((temp = fopen("temp.tmp", io_read)))
{
new nchar;
while((nchar = fgetchar(temp, 0, true)) != EOF)
{
fputchar(pfile, nchar);
}
}
}
fclose(temp);
fclose(pfile);
fremove("temp.tmp");
return 1;
}
Com esse cуdigo nгo chega a substituir nem a primeira linha. Ah, eu utilizo format para salvar a nova linha e posteriormente a stock para fazer a substituiзгo, o problema estб em substituir outra linha que nгo seja a primeira.
|
new string[128], str[128];
format(string, sizeof(string), "ArquivoC%d.txt", ArquivoLoad);
format(str, sizeof(str), "%d \r\n", LikeG++);
LineSub(string, str);
LineSub(string, str, 3);
new File:temp, tmpx[256], LikeG[128], DLike[128];
new string[128];
new line = 0;
format(string, sizeof(A), "ArquivoC%d.txt", ArquivoLoad);
temp = fopen(string, io_readwrite);
while(fread(temp, tmpx, sizeof(tmpx), false))
{
if(line == 3)
{
format(LikeG, sizeof(LikeG), "%d", tmpx);
line = 4;
}
else if(line == 4)
{
format(DLike, sizeof(DLike), "%d", tmpx);
line = 5;
}
}
fclose(temp);
new S[128];
format(S, sizeof(S), "%d - %d", LikeG, DLike);
SendClientMessage(playerid, -1, S);