Errore file bin (ma non uso file bin!)

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

Mi sta capitando un problema che non capisco e sinceramente non mi aspettavo.

Uso solo ed esclusivamente file di testo per salvataggio e caricamento, non ho mai scritto una sola funzione per aprire o leggere file binary, ma l'errore di GM7 è questo:

Codice: Seleziona tutto

Error opening binary file.
Purtroppo il debug non mi dice a quale file l'errore si riferisce e l'oggetto ne gestisce parecchi (tutti testuali).

Vi è mai capitata una cosa del genere? Come fareste per risolvere?

Grazie in anticipo.

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Sla »

Ti dice anche quale linea genera l'errore? Se sì, postala.
eppure mi sembra tutto giusto...

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

No. Per questo sono alla cieca.
Sto ricontrollando tutto, ma mi sembra un errore tanto assurdo... non saprei nemmeno cosa postare vista che l'errore non mi indica niente di particolare e il codice (i codici) dell'istanza sono parecchi e lunghi.

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Homunculus »

Non é da escludere che GM7 dia questo errore anche quando non riesce ad aprire dei normali file testuali, sinceramente non ricordo... Comunque mi pare strano che ti dia così poche info, incollaci TUTTO l'estratto dell'errore.

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

Capisco che non è difficile crederci. Ma non ho altre info. L'errore è tutto lì.

Codice: Seleziona tutto

___________________________________________
ERROR in
action number 1
of Create Event
for object obj_standard:

Error opening binary file.

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Sla »

invece le altre info le avevi eccome-.
Evento create,obj_standard, è già qualcosa.
Action number 1: o è un'icona per aprire dei file oppure è uno script.
Insomma posta ilcontenuto dello script o le icone che hai usato nell'evento create.
C'è sempre una causa.
Ultima modifica di Sla il 02/02/2014, 20:10, modificato 1 volta in totale.
eppure mi sembra tutto giusto...

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Homunculus »

Beh sai evento e oggetto perlomeno, puoi incollarci l'evento create di obj_standard? inoltre, quando indichi il path al file, includi anche working_directory?

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

Sla ha scritto:invece le altre info le avevi eccome-.
Evento create,obj_standard, è già qualcosa.
Action number 1: o è un'icona per aprire dei file oppure è uno script.
Insomma posta ilcontenuto dello script o le icone che hai usato nell'evento create.
C'è sempre una causa.
Lo script è richiamato da questo pezzo di codice (Ho controllato i percorsi e sono tutti giusti (funzionano anche con altri oggetti e drawandoli sono perfetti)

Codice: Seleziona tutto

profile_path_dat=working_directory+"\data\dat1.thi"; profile_path_ext=working_directory+"\data\ext1.thi";
profile_path_dat_t=temp_directory+"\dat1.thi"; profile_path_ext_t=temp_directory+"\ext1.thi";
script_execute(scr_load_play,profile_path_dat,profile_path_dat_t,profile_path_ext,profile_path_ext_t,1,profile_path_res,profile_path_res_t);
script_execute(scr_save_ingame,profile_path_dat,profile_path_dat_t,profile_path_ext,profile_path_ext_t,1,profile_path_res,profile_path_res_t);
I path che finiscono in _t sono le copie temporanee dei file originali, servono per decriptarli/criptarli in una cartella temporanea.

I 2 script chiamati sono questi

(Non scrivo i pezzi di codice relativi a altri salvataggi e caricamenti che funzionano)

Codice: Seleziona tutto


{
    // CARICA

    var path_a,path_b,subcat_index;
    subcat_index=0;
    switch(random_a)
    {
        case 1: {
                    path_a=argument5+"11.thi"; path_b=argument6+"11.thi";
                    file_copy(path_a,path_b);
                    script_execute(scr_cr,path_b,"codicecriptaggioqui");
                    file=file_text_open_read(path_b);
                    giocate_cat=file_text_read_real(file); file_text_readln(file);
                    esatte_cat= file_text_read_real(file); file_text_readln(file);
                    while (file_text_eof(file))
                    {
                        subcat_index+=1;
                        giocate_subcat[subcat_index]=file_text_read_real(file); file_text_readln(file);
                        esatte_subcat[subcat_index]=file_text_read_real(file);  file_text_readln(file);
                    }
                    break;
                }
        case 2: {
                    path_a=argument5+"21.thi"; path_b=argument6+"21.thi";
                    file_copy(path_a,path_b);
                    script_execute(scr_cr,path_b,"codicecriptaggioqui");
                    file=file_text_open_read(path_b);
                    giocate_cat=file_text_read_real(file); file_text_readln(file);
                    esatte_cat= file_text_read_real(file); file_text_readln(file);
                    while (file_text_eof(file))
                    {
                        subcat_index+=1;
                        giocate_subcat[subcat_index]=file_text_read_real(file); file_text_readln(file);
                        esatte_subcat[subcat_index]=file_text_read_real(file);  file_text_readln(file);
                    }
                    break;
                }
    }
    file_text_close(file);
    file_delete(path_b);
}

Codice: Seleziona tutto

{
    // SALVA
    var path_a,path_b,subcat_index;
    subcat_index=0;
    switch(random_a)
    {
        case 1: {
                    path_a=argument5+"11.thi"; path_b=argument6+"11.thi";
                    file_copy(path_a,path_b);
                    script_execute(scr_cr,path_b,"codice");
                    file=file_text_open_write(path_b);
                    file_text_write_string(file,string(giocate_cat)); file_text_writeln(file);
                    file_text_write_string(file,string(esatte_cat)); file_text_writeln(file);
                    while (random_b!=subcat_index)
                    {
                        file_text_write_string(file,string(giocate_subcat[subcat_index])); file_text_writeln(file);
                        file_text_write_string(file,string(esatte_subcat[subcat_index])); file_text_writeln(file);
                        subcat_index+=1;
                    }
                        file_text_write_string(file,string(giocate_subcat[subcat_index+1])); file_text_writeln(file);
                        file_text_write_string(file,string(giocate_subcat[subcat_index+1])); file_text_writeln(file);
                        sub_cat_index+=1;
                    while (file_text_eof(file))
                    {
                        file_text_write_string(file,string(giocate_subcat[subcat_index])); file_text_writeln(file);
                        file_text_write_string(file,string(esatte_subcat[subcat_index])); file_text_writeln(file);
                        subcat_index+=1;
                    }
                    break;
                }
    case 2: {
                    path_a=argument5+"21.thi"; path_b=argument6+"21.thi";
                    file_copy(path_a,path_b);
                    script_execute(scr_cr,path_b,"codice");
                    file=file_text_open_write(path_b);
                    file_text_write_string(file,string(giocate_cat)); file_text_writeln(file);
                    file_text_write_string(file,string(esatte_cat)); file_text_writeln(file);
                    while (random_b!=subcat_index)
                    {
                        file_text_write_string(file,string(giocate_subcat[subcat_index])); file_text_writeln(file);
                        file_text_write_string(file,string(esatte_subcat[subcat_index])); file_text_writeln(file);
                        subcat_index+=1;
                    }
                        file_text_write_string(file,string(giocate_subcat[subcat_index+1])); file_text_writeln(file);
                        file_text_write_string(file,string(giocate_subcat[subcat_index+1])); file_text_writeln(file);
                        sub_cat_index+=1;
                    while (file_text_eof(file))
                    {
                        file_text_write_string(file,string(giocate_subcat[subcat_index])); file_text_writeln(file);
                        file_text_write_string(file,string(esatte_subcat[subcat_index])); file_text_writeln(file);
                        subcat_index+=1;
                    }
                    break;
                }
    file_text_close(file);
    file_delete(path_b);
    file_delete(argument6);
    }
}

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

Sla ha scritto:invece le altre info le avevi eccome-.
Evento create,obj_standard, è già qualcosa.
Action number 1: o è un'icona per aprire dei file oppure è uno script.
Insomma posta ilcontenuto dello script o le icone che hai usato nell'evento create.
Sono cose scontate essendo l'oggetto sul quale sto lavorando a dare problemi e il problema è arrivato modificando uno dei due script.
Non davo informazioni aggiuntive scrivendovi obj_standard e Action number 1.
Infatti nel primo messaggio avevo già chiaro il problema: "(...)il debug non mi dice a quale file l'errore si riferisce e l'oggetto ne gestisce parecchi"

Spero che con le informazioni che ho scritto si riesca a capire qualcosa ;)
Sla ha scritto:C'è sempre una causa.
Non avevo dubbio.
Per questo ho chiesto se a qualcuno fosse già capitata una cosa simile.

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da gameplay_extreme »

Sla ha scritto:C'è sempre una causa.
il problema è trovarla... :lol:
Spoiler
lo so lo so, è in questi casi che il vero debuger entra in azione :rockrock:
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Homunculus »

Hai provato a commentare una delle due chiamate agli scripts, e poi l'altra, per capire perlomeno se il problema é relativo a uno specifico script?

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da gameplay_extreme »

una curiosità: c'è un motivo particalore per cui usi script_execute(nome_script, arg0, arg1,...) al posto di nome_script(arg0, arg1, ...) ?
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

gameplay_extreme ha scritto:una curiosità: c'è un motivo particalore per cui usi script_execute(nome_script, arg0, arg1,...) al posto di nome_script(arg0, arg1, ...) ?
No, ho semplicemente fatto sempre così

P.S. non avevo letto i messaggi precedenti. Tra poco edito.

EDIT: Scrivo domani, sono KO

Grazie a tutti

EDIT ANCORA
Il problema si presenta nello script di salvataggio commentando quello di caricamento. (Grazie per l'idea)
Purtroppo i percorsi dei file sono gli stessi (argument5 e 6 sono identici x entrambi gli script).
Sto cominciando a pensare si tratti di un bug, ma ne avrei trovato traccia su internet... invece non c'è nulla.

Ora sono veramente stanco, domani proverò a rifare questa room in un altro progetto, magari ne vengo a capo.

Grazie ancora Sla, Homunculus, Gameplay Extreme :cappa:

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Solid Snake »

Forse non puoi aprire un file se è già stato aperto.

Codice: Seleziona tutto

apri_file_in_lettura("ciao.txt");
apri_file_in_scrittura("ciao.txt");//Non lo puoi aprire

Codice: Seleziona tutto

apri_file_in_lettura("ciao.txt");
chiudi_file();
apri_file_in_scrittura("ciao.txt");//Lo puoi aprire
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

Hola Snake.

Il file viene chiuso dopo essere stato aperto. ;)

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Tizzio »

Se ci pensi, col tuo metodo un h4kèR potrebbe stoppare l'esecuzione del tuo gioco appena finita la scrittura del file, prendere il file creato temporaneamente (non criptato) e utilizzarlo per i propri scopi malefici (non so a cosa servano i tuoi files, ma in ogni caso ti propongo la soluzione migliore)

Per evitare tutti sti casini di files temporanei, non puoi criptare direttamente l'output quando è ancora dentro GM?

Codice: Seleziona tutto

str = "la mia stringa da criptare
con testi che vanno accapo
anche molto lunga";
(puoi andare accapo con str += chr(13))

e poi fai

Codice: Seleziona tutto

file_text_write_string(myAwesomeFile, myCryptString(str, "prcddo"));
in lettura fai

Codice: Seleziona tutto

str = myDecryptString(file_text_read_string(myAwesomeFile, "prcddo");
Fine, finito te ende.
Nessun problema di files temporanei che rompono, nessun errore interno di GM che non riesce ad aprire i files (purtroppo quel tipo di errori non sono gestibili, se non Disattivando forzatamente gli errori dal global game settings e gestendoli a mano :cry: )

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

Ciao Tizzio.

Tutte le operazioni sui file avvengono in 1 solo step, compresa la loro eliminazione. Nella cartella temporanea non si vedono i file creati ed immediatamente distrutti.

A parte il fatto che il modo di hackerare un gioco si trova sempre, prima o poi, pure criptando le cose 50 volte.

Detto questo... sì, potrei usare altri mille metodi, ma secondo me è il caso di capire da cosa dipende l'errore. Girare attorno ai problemi (soprattutto nella programmazione) non è la soluzione migliore. Anzi, è l'antisoluzione...

Secondo me eh ;)

Mi son preso mezza giornata libera, oggi svuoto la testa, poi creo un nuovo programma che fa solo questa funzione, così vediamo un po'.

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Solid Snake »

BotaniciTraffici ha scritto:Hola Snake.

Il file viene chiuso dopo essere stato aperto. ;)
Mi ha chiamato Snake :rockrock:

Prova a mettere qualche show_message("prddio") per debuggare il flusso del codice.
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da Tizzio »

BotaniciTraffici ha scritto:Detto questo... sì, potrei usare altri mille metodi, ma secondo me è il caso di capire da cosa dipende l'errore. Girare attorno ai problemi (soprattutto nella programmazione) non è la soluzione migliore. Anzi, è l'antisoluzione...
Proprio per questo motivo ti ho suggerito l'approccio più corretto per questo tipo di problema.
E' proprio scorretto salvare un file, e leggerlo criptandolo, per poi ri-leggerlo e decrittarlo, bisognerebbe cercare la via più semplice ed efficacie per risolvere i problemi senza girarci attorno con strani "hack"
Mi sembra davvero strano, ma alla fine ogn'uno fa come vuole :cappa:

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Errore file bin (ma non uso file bin!)

Messaggio da BotaniciTraffici »

Sì, molto probabilmente hai ragione. Quello che fa il programma adesso come adesso però è semplicemente copiare il file, decriptarlo, leggerlo. In via teorica non dovrebbe essere un problema né di gestione né di utilizzo di risorse o memoria.

Comunque utilizzerò un sistema completamente diverso perché mi hai convinto ;)

Grazie ancora.

P.S. Se qualcuno capisse dove sta l'errore però mi toglierebbe lo stesso una grossa curiosità.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti