Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 38
  1. #1

    [c++] eliminare un record da un file

    Salve ragazzi
    facendo un po di ricerche nel forum e su internet non sono riuscito a trovare una funzione in c++ che mi elimini una riga da un file senza riscriverlo completamente trascurando la linea che non vogliamo cancellare.
    Cioè non esiste una funzione tipo quella di php
    Codice PHP:
    $query mysql_query("DELETE FROM tabella WHERE nome = gianni"); 
    Potete confermare questa mia ricerca?

    Ora vorrei sapere come posso farlo riscrivendo il file e utilizzando i vector.
    vi posto il codice che sono riuscito a scrivere ma non funziona bene poichè cancella tutto il file o meglio non lo riscrive.
    Questa è la mia classe:
    Codice PHP:
    #include <iostream>
    #include <string>
    using namespace std;
    class 
    squadre {
    //definisco gli attributi relativi alla classe
        
    string nome;
        
    int giocate;
        
    int vinte;
        
    int perse;
        
    int pari;
        
    int gf;
        
    int gs;
        
    int penalita;
    public:
        
    //definizione dei vari metodi della classe
        //Costruttore di default
        
    squadre() {
        
    nome "";
        
    giocate 0;
        
    vinte 0;
        
    perse 0;
        
    pari 0;
        
    gf 0;
        
    gs 0;
        
    penalita 0;
        }
        
    //Costruttore
        
    squadre (string nameint playedint wonint lostint drawnint scoredint concededint penality) {
        
    nome name;
        
    giocate played;
        
    vinte won;
        
    perse lost;
        
    pari drawn;
        
    gf scored;
        
    gs conceded;
        
    penalita penality;
        }
        
    //Distruttore
        
    ~squadre() {
        
    cout << "Libero la memoria occupata...";
        }
        
    //Prototipi dei vari metodi sulla classe (definizione trattata successivamente)
        
    void elimina();
    }; 
    E questa è la definizione del metodo elimina:
    Codice PHP:
    void squadre::elimina(){
    //Puntatore al file
    FILE *filepunt;
    if((
    filepunt fopen("squadre.dat","rb"))==NULL)
        { 
        
    //Il file non esiste non posso eliminare nessuna squadra
        //Restituisco un messaggio di errore
        
    cout << "\n  Il file 'squadre.dat' e' inesistente.\nNon e' stata inserita nessuna squadra!";
    } else {
    //il file è stato aperto precedentemente. Chiedo all'utente il nome della squadra da eliminare
    cout << "Inserisci il nome della squadra da eliminare\n";
    //creo una variabile locale per il nome e una per definire se esiste una squadra con quel nome
    int trovato=0;
    string nome_temp;
    cin >> nome_temp;
    //verifico se effettivamente il nome inserito esiste 
        
    while(fread (this,sizeof(*this),1,filepunt) && !feof(filepunt)) 
        {                 
            if(
    nome == nome_temp
            { 
                
    cout << "Trovata 1 squadra con il nome inserito:  ";
                    
    //Stampo i titoli delle colonne
                    
    cout << "Nome";
                    
    cout << "\tGiocate";
                    
    cout << "\tVinte";
                    
    cout << "\tPerse";
                    
    cout << "\tPari";
                    
    cout << "\tFatti";
                    
    cout << "\tSubiti";
                    
    cout << "\tPenalita'";
                    
    cout << "\n" << endl;
                    
    cout << nome;
                    
    cout << "\t" << giocate;
                    
    cout << "\t" << vinte;
                    
    cout << "\t" << perse;
                    
    cout << "\t" << pari;
                    
    cout << "\t" << gf;
                    
    cout << "\t" << gs;
                    
    cout << "\t" << penalita;
                    
    cout << endl << endl;
                
    trovato 1;
                break;       
            }
        }

        if(
    trovato==1) {    
            
    vector<squadrevect;
            
    //inserisco nel vector tutti gli elementi tranne quello da eliminare
        
    while(fread (this,sizeof(*this),1,filepunt) && !feof(filepunt)) 
        {                 
            if(
    nome != nome_temp
            { 
    vect.push_back(*this);}
        }
        
    //chiudo il file e lo apro in modalita scrittura cancellando ogni dato sul file
        
    fclose(filepunt);
        
    filepunt fopen("squadre.dat","wb");
        
    //inserisco gli elementi del vector all'interno del file
        
    vector<squadre>::iterator iter;
        for(
    iter vect.begin(); iter != vect.end(); iter++){
            
    fwrite(thissizeof(*this), 1filepunt);
        }
        
        } else {
        
    cout << "Non esiste nessuna squadra con questo nome!";
        }
        
    fclose(filepunt);    
    }

    Che errore ho commesso?
    Grazie

  2. #2
    Ciao, non ho tempo purtroppo di guardare il codice ma:

    Codice PHP:
    $query mysql_query("DELETE FROM tabella WHERE nome = gianni"); 
    riguarda l'esecuzione di una query su un database.
    Tu non usi un database, quindi non puoi fare una cosa del genere.

    Se hai necessità di utilizzare le funzionalità di un database e vuoi farla semplice, potresti utilizzare SQLite, che mi pare adatto al tuo scopo.


  3. #3
    Era un esempio quello del codice per indicare che un comando cosi non c'è.
    Ma mi interessa maggiormente sapere perchè la riscrittura con vector non funziona. Molto probabilmente ho solo commesso piccoli errorini logici visto che lo script non mi da errori.
    Potresti aiutarmi a risolverli? Grazie

  4. #4
    Ragazzi nessuno mi da una mano??? UPP

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    E' inutile che cerchi ... devi leggere, eliminare, riscrivere ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Originariamente inviato da oregon
    E' inutile che cerchi ... devi leggere, eliminare, riscrivere ...
    In che senso?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da theboss280489
    In che senso?
    "senza riscriverlo completamente trascurando la linea che non vogliamo cancellare"

    ... devi fare così.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Originariamente inviato da theboss280489
    Era un esempio quello del codice per indicare che un comando cosi non c'è.
    Ma mi interessa maggiormente sapere perchè la riscrittura con vector non funziona. Molto probabilmente ho solo commesso piccoli errorini logici visto che lo script non mi da errori.
    Potresti aiutarmi a risolverli? Grazie
    Ma perché dai queste riposte da intenditore? Leggi le discussioni prima di dare una risposta ed è gia la seconda volta che scrivi una cosa del genere nei miei confonti e mi fai passare per pazzo.
    Ti rispiego passo passo quello che ho scritto.
    Era un esempio quello del codice per indicare che un comando cosi non c'è.
    quindi quel comando era un esempio: sono consapevole che quel comando non esista!
    Ma mi interessa maggiormente sapere perchè la riscrittura con vector non funziona. Molto probabilmente ho solo commesso piccoli errorini logici visto che lo script non mi da errori.
    Potresti aiutarmi a risolverli?
    quindi non mi interessa quel comando ma sono interessato al fatto che la vectorn non funziona!!!!!
    Quindi prima di scrivere quelle conclusioni da intenditore cerca di leggere il post.
    GRAZIE!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma cosa vuoi?


    Stai rispondendo a me o ad antotan ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Semplicemente a te.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.