[Ajuda] Manageando string
#1

Boas, tenho o seguinte cуdigo:
pawn Код:
stock RT_getText(rt_lang[], rt_key[])
{
    new rt_Trans[128], File:rt_file;
    rt_file = fopen ( formatDirectory(rt_lang) , io_read );
    format(rt_key, strlen(rt_key)+3, "%s =", rt_key);
    while(fread(rt_file, rt_Trans)){
        if(strfind(rt_Trans, rt_key, true)==0){
            strdel(rt_Trans, 0, strlen("HELLO = "));
            return rt_Trans;
        }
    }

    return rt_Trans;
}
Atй aqui tudo bem, ele vai buscar a string e retira a parte da key exemplo:

No arquivo esta:
Код:
HELLO = Hello, %s!
executando este cуdigo:
pawn Код:
main() {
print(RT_getText("ing", "HELLO"));
}
Ele retorna:
Код:
Hello, %s!
Mas se eu for a usar o format, exemplo:
pawn Код:
main() {

new string[128];
format(string, 128, RT_getText("ing", "HELLO"), "VeNuZ_");
print(string);
}
Ele retorna:

Код:
Hello, =!
Alguйm me pode ajudar?
Reply
#2

1° Talvez estб:

PHP код:
main()
{
    new 
string[128];
    
format(string128RT::getText("ing""HELLO"), "VeNuZ_");
    print(string);

2° Ou estб:
PHP код:
main()
{
    new 
string[128];
    
formatF(stringRT::getText("ing""HELLO"), "VeNuZ_");
    print(string);

Reply
#3

Neste caso usando 1 ou outro vai dar ao mesmo, o %s fica com um =, sу nгo percebo o porquк..
Reply
#4

° Tente usar estб stock:
PHP код:
stock RT_getText(rt_lang[], rt_key[])
{
    new 
rt_Trans[128], File:rt_file;
    
rt_file fopen formatDirectory(rt_lang) , io_read );
    
format(rt_keystrlen(rt_key)+3"%s"rt_key);
    while(
fread(rt_filert_Trans)){
        if(
strfind(rt_Transrt_keytrue)==0){
            
strdel(rt_Trans0strlen(rt_key)+3); 
            return 
rt_Trans;
        }
    }
    return 
rt_Trans;

Reply
#5

pawn Код:
stock RT_getText(rt_lang[], rt_key[])
{
    new rt_Trans[128], File:rt_file;
    rt_file = fopen ( formatDirectory(rt_lang) , io_read );
    format(rt_key, strlen(rt_key)+3, "%s =", rt_key);
    while(fread(rt_file, rt_Trans)){
        if(strfind(rt_Trans, rt_key, true) != -1){ // foi mexido aqui
            strdel(rt_Trans, 0, strlen(rt_key)+1); // e aqui
            return rt_Trans;
        }
    }

    return rt_Trans;
}
Reply
#6

Cуdigo final:
pawn Код:
stock RT_getText(rt_lang[], rt_key[])
{
    new rt_Trans[128], File:rt_file;
    rt_file = fopen ( formatDirectory(rt_lang) , io_read );
    format(rt_key, strlen(rt_key)+3, "%s", rt_key);
    while(fread(rt_file, rt_Trans)){
        if(strfind(rt_Trans, rt_key, true)==0){
            strdel(rt_Trans, 0, strlen(rt_key)+3);
            return rt_Trans;
        }
    }

    return rt_Trans;
}
Obrigado pela ajuda, o primeiro format estava a lixar tudo xD
Reply
#7

Eu hein, vai entender '-'

Quote:
Originally Posted by VeNuZ_
Посмотреть сообщение
Cуdigo final:
pawn Код:
stock RT_getText(rt_lang[], rt_key[])
{
    new rt_Trans[128], File:rt_file;
    rt_file = fopen ( formatDirectory(rt_lang) , io_read );
    format(rt_key, strlen(rt_key)+3, "%s", rt_key);
    while(fread(rt_file, rt_Trans)){
        if(strfind(rt_Trans, rt_key, true)==0){
            strdel(rt_Trans, 0, strlen(rt_key)+3);
            return rt_Trans;
        }
    }

    return rt_Trans;
}
Obrigado pela ajuda, o primeiro format estava a lixar tudo xD
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)