їGuardar y Leer textos?
#1

Pues la verdad es que no tengo ni la mбs mнnima idea de como leer un texto de un archivo :S

Lo que tengo pensado es aсadir algo a mi server de pruebas algo para guardar Flotantes, Integrales y Textos y despues Leerlos :S

Por ejemplo:

Guardar: "%s, %s, %f, %f, %f, %f, %d" ((Nombre, Pass, X, Y, Z, A, Skin))

y Leer lo mismo.. No encuentro nada que lo explique :S
Reply
#2

pawn Код:
SaveDate(playerid)
{
    new File:handle = fopen("tuarchivo.txt", io_write);
    new string[TAMAСO DE LO QUE VAS A GUARDAR], name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "%s, %s, %f, %f, %f, %d", name, variablepass, x, y, z, GetPlayerSkin(playerid));
    fwrite(handle, string);
    fclose(handle);
    return 1;
}

Eso es para guardar, aunque hay mбs mйtodos de hacerlo por otros sistemas y demбs.

Y esto es para cargar:

pawn Код:
LoadMapIcons()
{
    new File:handle = fopen("tuarchivo.txt", io_read);
    if(fexist("tuarchivo.txt"))
    {
        new Float:x, Float:y, Float:z, line[256], CountAccounts = 0; // y mбs variables
        while(fread(handle, line))
        {
            if(!unformat(line, "p<SEPARADO>tus variables", variables))
            {
                              //Aquн cargas las variables del jugador asignandole a cada uno la variable determinada que separу el unformat
                CountAccounts++;
            }
        }
        fclose(handle);
        printf("Fueron cargados %d cuentas desde el archivo 'tuarchivo.txt'.", CountAccounts);
        return 1;
    }
    else return 0;
}

Asн cargaba yo las cosas y las guardaba aunque hace mucho que ya no toco file, estoy usando mбs MySQL. Me duele un poco la cabeza ahora, disculpas si lo hice desordenado o hay algъn error de ortografнa. Me pareciу mбs efectivo ayudarte que no responder nada.
Reply
#3

Quote:
Originally Posted by Harrinston
Посмотреть сообщение
pawn Код:
SaveDate(playerid)
{
    new File:handle = fopen("tuarchivo.txt", io_write);
    new string[TAMAСO DE LO QUE VAS A GUARDAR], name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "%s, %s, %f, %f, %f, %d", name, variablepass, x, y, z, GetPlayerSkin(playerid));
    fwrite(handle, string);
    fclose(handle);
    return 1;
}

Eso es para guardar, aunque hay mбs mйtodos de hacerlo por otros sistemas y demбs.

Y esto es para cargar:

pawn Код:
LoadMapIcons()
{
    new File:handle = fopen("tuarchivo.txt", io_read);
    if(fexist("tuarchivo.txt"))
    {
        new Float:x, Float:y, Float:z, line[256], CountAccounts = 0; // y mбs variables
        while(fread(handle, line))
        {
            if(!unformat(line, "p<SEPARADO>tus variables", variables))
            {
                              //Aquн cargas las variables del jugador asignandole a cada uno la variable determinada que separу el unformat
                CountAccounts++;
            }
        }
        fclose(handle);
        printf("Fueron cargados %d cuentas desde el archivo 'tuarchivo.txt'.", CountAccounts);
        return 1;
    }
    else return 0;
}

Asн cargaba yo las cosas y las guardaba aunque hace mucho que ya no toco file, estoy usando mбs MySQL. Me duele un poco la cabeza ahora, disculpas si lo hice desordenado o hay algъn error de ortografнa. Me pareciу mбs efectivo ayudarte que no responder nada.

Gracias, pero al final.. їCуmo saco un texto?
Estбn los floatstr() strval() y demбs, pero del include string no se cual es para sacar textos :S
Reply
#4

Te recomiendo usar djson es mas facil para leer o cargar archivos, y tambiйn contiene cachй a parta de que dispone de una wiki donde puedes ver como funciуna visita www.dracoblue.net y mira en project, luego localiza djson.

El metodo que usa harriston es lo mismo que hace djson, pero djson te ahorra lineas.

Saludos.
Reply
#5

Para sacar un texto pasalo a una string.

pawn Код:
new string[TAMAСO];
format(string, sizeof(string), "%s", VariableQueAlmacenaElTexto);
Y en la string te queda el texto, si es que te entendн bien lo que querйs hacer es eso. Porque si vos querйs sacar un valor de una string hacйs:

pawn Код:
format(string, sizeof(string), "11424233");
Variable = strval(string);
Reply
#6

No quiero usar djson, ni zcmd, ni dcmd ni nada de eso que van sacando, no quiero includes, solo para usar el include de samp, el a_samp.inc, como explica Harrinston..
El problema es que creo que no me entendieron :S

Quiero sacar un texto..
Imaginense que archivo.ini contiene esto:
Код:
Esto es un texto|23|0.0000|0.0000|2.0000|90.0000
"Esto es un texto" es el texto a exportar, o sacar de archivo.ini.
"23" es el skin
Lo demбs son floats..
Pues el 23, que es un nъmero integral(integer) se saca con strval(), y los floats se sacan con floatstr()
Yo lo que busco es una funciуn para sacar "Esto es un texto" del "archivo.ini" y exportarlo a una variable.

Simplemente pido la funciуn o lo necesario, espero que me hayan entendido.
Reply
#7

LOL, Harrinston te dejo el cуdigo nada mбs para que tu cambiaras unas cosas
pawn Код:
new File:handle = fopen("tuarchivo.txt", io_read);
    if(fexist("tuarchivo.txt"))
    {
        new line[256],tmp[128],tmp2,Float:tmp3,Float:tmp4,Float:tmp5,Float:tmp6;
        while(fread(handle, line))
        {
            if(!unformat(line, "p<|>s[256]dffff", tmp,tmp2,tmp3,tmp4,tmp5,tmp6))
            {
                //Aquн las variables tmp almacenan la info
                // Donde tmp se guarda el texto, donde tmp2 se guarda el numero despuйs del texto y asн sucesivamente, estбn segun el orden del ejemplo que tu pusiste
            }
        }
        fclose(handle);
    }
EDIT: Aclaro que para que ese cуdigo funcione debes usar sscanf2
Reply
#8

Era mбs simple explicarlo asн desde el principio.


pawn Код:
new File:handle = fopen("archivo.txt", io_read);
if(fexist("archivo.txt"))
{
    new line[128], text[128];
    while(fread(handle, line))
    {
        if(!unformat(line, "p<|>s[128]", text))
        {
            //Acб hacйs lo que quieras, el texto ya estб en la variable text.
        }
    }
    fclose(handle);
    return 1;
}

Y si no querйs usar sscanf, simplemente lo spliteбs con split, pero te recomiendo usar sscanf porque es mбs rбpido y mбs efectivo.


EDIT: Como dijo Josta, estб mбs fбcil imposible, sуlo tienes que cambiarle el archivo a mi cуdigo y hacer lo que quieras con la variable que has sacado.
Reply
#9

Ohhhh ya entendi xD, como te lo deja harriston es.
Reply
#10

De aca yo aprendi casi todo, es mas facil de lo que parece https://sampwiki.blast.hk/wiki/File_Functions
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)