Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Procedura di cancellazione c/c++

    Ho alcuni problemi con la procedura di cancellazione di un elemento inserito nel file. Qualcuno può aiutarmi?
    Non capisco quali errori ci possano essere!!! Grazie a tutti!!!!

    codice:
    //Procedura per cancellare un abbonamento
    void CancellaProdotto()   
    {           
      char cFileTemp[]="tempfile.dat"; /*File temporaneo: serve per copiare tutti i 
        dati da mantenere nel file1; verrà poi rinominato con il nome del file1*/
      PointerElem1 pTemp1;  //variabile puntatore per la gestione della lista1
      PointerElem1 pTemp1_2;
      char Codicel[LCODICE];
      PointerElem1 pApp1; // variabile nella quale viene ricopiata la lista1
      bool bCancellato=false;  //variabile che indica se è stato cancellato 
      bool bElem=false;  //se è vera vuol dire che vi era un solo elemento nella lista1
      CaricaFile1();
      system("CLS");
      system("color C");
      pApp1=pLista1;
      cancella(Codicel,LCODICE);
      cout<< "Inserisci codice prodotto: ";
      cin.getline(Codicel,sizeof(Codicel));
      while (pApp1 != NULL)
      {
        if(ControllaListaVuota1(pLista1))
        { 
          system("cls");
          system("color C");
          cout<<"Non sono stati inseriti elementi!!!\n";
          system("pause");
        } 
        else
        { 
          if (iNRecordFile1==1) //se vie è un solo elemento nella lista
          {
            //se è uscito i dati vengono cancellati, altrimenti no
            if (strcmp(pLista1->DatiProdotto.codice,Codicel)==0)
            {
              bElem=true;
              bCancellato=true;
              pTemp1_2=pLista1;
              pLista1=pTemp1_2->pNext1;
              //cancella l'elemento dalla lista
              delete pTemp1_2;
              remove(cFile1);
            }    
          }
          //se si tratta di più di un elemento nella lista
          if (bElem==false)
          {     
            pTemp1=pLista1;
            pTemp1_2=pLista1->pNext1; 
            while (pTemp1_2 !=NULL)
            {   
              if (strcmp(pTemp1_2->DatiProdotto.codice,Codicel)==0)
              {
                bCancellato=true;
                pTemp1->pNext1=pTemp1_2->pNext1;
                //Cancella l'elemento dalla lista
                delete pTemp1_2;
              }
              pTemp1_2=pTemp1_2->pNext1;
              pTemp1=pTemp1->pNext1;
            }
            pTemp1=pLista1;
            while (pTemp1 !=NULL)
            {      
              if(strcmp(pTemp1->DatiProdotto.codice,Codicel)!=0)
              {     
                strcpy(Catalogo.codice,pTemp1->DatiProdotto.codice);
                strcpy(Catalogo.descrizione,pTemp1->DatiProdotto.descrizione);
                strcpy(Catalogo.minima,pTemp1->DatiProdotto.minima);
                strcpy(Catalogo.misura,pTemp1->DatiProdotto.misura);
                strcpy(Catalogo.prezzo,pTemp1->DatiProdotto.prezzo);
                strcpy(Catalogo.quantita,pTemp1->DatiProdotto.quantita);
                strcpy(Catalogo.reparto,pTemp1->DatiProdotto.reparto);
                /*Apro il file in modalità "ios::app": questo permette di aggiungere 
                  il record appena inserito nella lista. I dati vengono scritti
                  nel FileTemp*/
                FileOut.open(cFileTemp ,  ios::out | ios::binary | ios::app);
                if(FileOut)
                {
                  //Controllo che il file sia aperto e funzionante
                  if(FileOut.good())
                  {
                    //Effettuo la scrittura del record in coda al file
                    FileOut.write((char*) &Catalogo, sizeof(Prodotto));
                  }
                  //Chiusura del file
                  FileOut.close();
                }
              }
              pTemp1=pTemp1->pNext1;
            }
          }//if
           pApp1=pApp1->pNext1;
        }//else
    
      }
    
     deleteFile(cFile1);
      rename(cFileTemp, cFile1);  //il FileTemp viene rinominato con il nome del File1
      
      if (iNRecordFile1!=0)
      {
        cout<<"...............Cancellazione avvenuta con successo!!!...............\n";
        system("pause");
      }
      EliminaListaMemDin1(pLista1, Catalogo);
      return;
      Menu_princ();
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi utilizzare i tag CODE per mostrare il codice, con la corretta indentazione, altrimenti si fa una tale fatica ad esaminarlo che si rinuncia e non si hanno risposte ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Per favore qualcuno può aiutarmi?? grazie mille

  4. #4
    Alessandra t sta chiedendo di ripostare meglio il codice con un idenzatione e con dei colori, in modo da riuscire a capire meglio perché così ci si perde via molto facilmente!

    Ps. so roberto XD

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da michela85cancro
    Alessandra t sta chiedendo di ripostare meglio il codice con un idenzatione e con dei colori, in modo da riuscire a capire meglio perché così ci si perde via molto facilmente!
    Lo ha già fatto editando il primo messaggio. Non c'è bisogno dei colori.

    Originariamente inviato da alessandra.b
    Per favore qualcuno può aiutarmi?? grazie mille
    È difficile (per non dire impossibile) da comprendere quel codice. Come sono state definite le funzioni CaricaFile1(), cancella(), remove() e le altre, oltre che quel tipo PointerElem1? E cos'è Catalogo? Meglio se cerchi di "isolare" il problema e di postare codice comprensibile, altrimenti difficilmente riceverai aiuti... tra l'altro (ma questo dipende dai miei personalissimi gusti, di cui ovviamente chissenefrega) trovo a dir poco orribile quello stile per i nomi di funzioni e variabili, mi ricorda Java :D

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.