[Ajuda] Substituir linha
#1

Olб, estou com um problema onde tento substituir a linha de determinado arquivo, porйm eu preciso que substitua a linha 4 e acaba substituindo a linha 1 apenas. O que hб de errado?

PHP код:
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;
} 
Reply
#2

Testa isso:

PHP код:
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; 
} 
Reply
#3

Onde vocк pegou esta funзгo?
Essa sua funзгo nгo hб o parвmetro para alterar a linha.

Tente usar a funзгo do @DarkBr.
Reply
#4

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.
Reply
#5

Quote:
Originally Posted by ByAwolN
Посмотреть сообщение
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.
Vocк estб usando a funзгo do Dark?
De que forma estб fazendo?
Reply
#6

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Vocк estб usando a funзгo do Dark?
De que forma estб fazendo?
Sim, testei com ela.

Isso й um comando, estб funcional, eu sу gostaria de substituir a linha 3 ao invйs da 1.
PHP код:
                new string[128], str[128];
                
format(string, sizeof(string), "ArquivoC%d.txt", ArquivoLoad);
                
format(str, sizeof(str), "%d \r\n", LikeG++);
                
LineSub(string, str); 
Reply
#7

PHP код:
LineSub(string, str, 3); 
Tente assim.
Usando a funзгo do Dark.
Reply
#8

Deu certo, finalmente kkkk
Muitнssimo obrigado, Luan e Dark

Sу mais uma dъvida para nгo precisar criar outro tуpico... Estou agora tentando formatar a linha para enviar uma mensagem para o jogador, porйm nгo estб pegando o nъmero correto da linha. Lembrando que sгo nъmeros inteiros.

PHP код:
                                        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); 
Reply
#9

Nгo entendi este cуdigo.
Reply
#10

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Nгo entendi este cуdigo.
No caso estou tentando pegar o nъmero das linhas 3 e 4 do arquivo para formatar e enviar uma mensagem ao jogador. Qual seria a forma mais fбcil de fazer isso? Dessa forma estб retornando os valores errados. Apenas quero enviar uma mensagem pegando o que estб na linha 3 e 4
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)