Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    Perche' dici che non l'ho letto?



    Un "crash" (o segmentation fault) e' comunque un errrore e avviene in una "specifica" riga, quasi sempre a causa di un puntatore che ha un valore sbagliato.

    Volevo sapere quando avviene l'errore (il crash) e lo puoi sapere eseguendo passo passo riga per riga il tuo sorgente.
    penso sia questo
    39 sqlite3_exec() 0xb77c8cab
    ho fatto il debug con eclipse
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ok ... quindi, per risolvere mostra il codice attuale (con le correzioni che ti ho indicato) in cui non esegui la funzione sqlite3_exec e, al suo posto, visualizzi con delle printf i parametri passati a tale funzione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #13
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    Ok ... quindi, per risolvere mostra il codice attuale (con le correzioni che ti ho indicato) in cui non esegui la funzione sqlite3_exec e, al suo posto, visualizzi con delle printf i parametri passati a tale funzione.
    ora non crasha:
    codice:
    void save_tmp_file(const char* path,sqlite3* sql){
    	FILE* f;
    	long size;
    	char* buf;
    	char* mex=0;
    	f=fopen(path,"r");
    	fseek(f,0,SEEK_END);
    	size=ftell(f);
    	rewind(f);
    	buf=(char*)malloc(sizeof(char)*(size+1));
    	fread(buf,1,size,f);
    	buf[size] = '\0';
    	printf("%s",buf);
    	
    	/*if(!sqlite3_exec(sql,buf,0,0,&mex)){
    		printf("%s",mex);
    	}*/
    	fclose(f);
      	free(buf);
    	
    }
    e l'output è
    INSERT INTO Fornitori (PartIVA,Cognome,Nome,NomeDitta,Indirizzo) VALUES (2000,'Cognome','Nome','Nome Ditta','Indirizzo');
    mah
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  4. #14
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    codice:
    if ( !sql )
    	{
    		printf("Puntatore a sqlite3 nullo!\n");
    		return;
    	}
    mi è stato suggerito quel controllo e quanto pare è nullo
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ti ripeto che la fopen deve aprire il file in binario.

    Ovviamente il puntatore di cui parli non deve essere NULL (ma pensavo che non lo fosse ...).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #16
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    Ti ripeto che la fopen deve aprire il file in binario.

    Ovviamente il puntatore di cui parli non deve essere NULL (ma pensavo che non lo fosse ...).
    il problema è che non dovrebbe...
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da Metflar
    il problema è che non dovrebbe...
    Risali alla funzione che deve impostare quel puntatore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #18
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    Risali alla funzione che deve impostare quel puntatore.
    vabbè ho risolto forzandolo cmq in teoria in questa funzione dovrebbe essere stato inizializzato:
    codice:
    int conn(sqlite3 *sql,const char* db){
    	
    	
        if (!file_exists(db)&&!sqlite3_open(db, &sql)) {
    		
            printf ("Errore nella selezione del database.\n");
            create(sql,db);
        }
    	
    	
    	return 0;
    }
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.