[C con Clase] función remove()

Yolmer Rosales yolmer.rosales en gmail.com
Jue Sep 16 23:48:56 CEST 2010


Saludos amigos de la lista

si pueden aclarar mi duda les agradeceré mucho

se trata de remove y tampoco funcionó con  DeleteFile

el caso de esta función es que debe eliminar un archivo, y veo que lo hace
bien al menos con un programa mínimo como este:

#include <iostream>
#include <stdio.h>
#include <windows.h>

*using namespace* std;

*int* main(int argc, *char* *argv[])
{
    FILE *archivo;
    archivo = fopen("archivo.tmp","w");
    fclose(archivo);
    system("PAUSE");
    remove("archivo.tmp");
*    return* EXIT_SUCCESS;
}

pero en mi programa completo el archivo se queda al cerrar el programa no da
error de compilación pero no hace lo que debe

como no tengo idea del error copio completo el programa si quieren ver los
otros archivos del programa avisen por favor llevo siglos en esto

#include <windows.h>
#include <ctype.h>
#include "lista.h"
#include <stdio.h>
#include "ids.h"
#include <iostream>





//*************Prototipos*******************
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK DlgProc2(HWND,UINT,WPARAM,LPARAM);
int CreateStatic(HINSTANCE,HWND,HWND,int,int,int,int,LPSTR);
int CreateEdit(HINSTANCE,HWND,HWND,int,int,int,int,int,LPSTR);
int CreateEditVert(HINSTANCE,HWND,HWND,int,int,int,int,int,LPSTR);
int CreateButton(HINSTANCE,HWND,HWND,int,int,int,int,int,LPSTR);
int MuestraFicha(HWND,FICHA*,Lista*);

//**************Función Principal***********
int WINAPI WinMain(    HINSTANCE hInstance,
                HINSTANCE hPrevInstance,
                LPSTR lpszArgument,
                int nArgument)
{
    //************ Declaración de variables **************
    HWND hwnd;     //manejador de ventana
    MSG mensaje;
    WNDCLASSEX wincl;


    /************ Inicialización de la clase *************/
    wincl.hInstance     = hInstance;
    wincl.lpszClassName = "MiClase";
    wincl.lpfnWndProc   = WndProc;
    wincl.style         = CS_DBLCLKS;
    wincl.cbSize        = sizeof(WNDCLASSEX);

    /************** Icono y puntero por defecto *********/
    wincl.hIcon         = LoadIcon(hInstance,MAKEINTRESOURCE(ID_ICONO));
    wincl.hIconSm       = LoadIcon(hInstance,MAKEINTRESOURCE(ID_SMICONO));
    wincl.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wincl.lpszMenuName  = "Menu1";
    wincl.cbClsExtra    = 0;
    wincl.cbWndExtra    = 0;
    wincl.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(0,155,255));



    //************** Registrar la clase *****************/
    if(!RegisterClassEx(&wincl))
    return 0;

    //*************** Crear la ventana ********************/
    hwnd = CreateWindowEx(
         0,                    /* Extended possibilites for variation */
         "MiClase",             /* Classname */
         "Agenda ver 0.6",         /* Title Text */
         WS_OVERLAPPEDWINDOW,    /* default window */
         CW_USEDEFAULT,            /* Windows decides the position */
         CW_USEDEFAULT,            /* where the window ends up on the screen
*/
         395,                 /* The programs width */
         365,                 /* and height in pixels */
         HWND_DESKTOP,             /* The window is a child-window to
desktop */
         NULL,                /* No menu */
        hInstance,            /* Program Instance handler */
        NULL                 /* No Window Creation data */
        );


    //************** evita ejecutar mas de una instancia*******************/
    FILE *temp;
    char letra;

    if(temp = fopen("temporal.agn","r"))
    {
          fclose(temp);
          MessageBox(hwnd,"Ya se está ejecutando el programa.\n","",MB_OK);
        return 0;
    }
    else
    {
        temp = fopen("temporal.agn","w");
    };
//****************************************************************************
    //***************** Muestra la ventana *****************/
ShowWindow(hwnd,1);

    //******************** Bucle de la aplicación *************/
    while(true == GetMessage(&mensaje,NULL,0,0))
    {
        TranslateMessage(&mensaje);
        DispatchMessage(&mensaje);
    }
    return mensaje.wParam;
}
///////////////////////////////////////////////////////////////////////////////
//************** definición de funciones ********************************
///////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    #include "variables.h"

    switch(msg)
    {
        case WM_CREATE:

            hInst = ((LPCREATESTRUCT)lParam)->hInstance;
            CreateStatic(hInst,hwnd,
                        hwndStatic1, 10,5,120,25,"Nombre:");
            CreateStatic(hInst,hwnd,
                        hwndStatic2, 10,35,120,25,"Apellido:");
               CreateStatic(hInst,hwnd,
                        hwndStatic3, 10,65,120,25,"Teléfono 1:");
               CreateStatic(hInst,hwnd,
                        hwndStatic4, 10,95,120,25,"Teléfono 2:");
               CreateStatic(hInst,hwnd,
                        hwndStatic5, 10,125,120,25,"Celular 1:");
               CreateStatic(hInst,hwnd,
                        hwndStatic6, 10,155,120,25,"Celular 2:");
            CreateStatic(hInst,hwnd,
                        hwndStatic7, 10,185,120,25,"Observaciones:");

            CreateEdit(hInst,hwnd,
                           hwndEdit1,NOMBRE, 150,5,190,25,"");

               CreateEdit(hInst,hwnd,
                           hwndEdit1,APELLIDO, 150,35,190,25,"");

            CreateEdit(hInst,hwnd,
                           hwndEdit1,TELEFONO1, 150,65,190,25,"");
            CreateEdit(hInst,hwnd,
                           hwndEdit1,TELEFONO2, 150,95,190,25,"");
               CreateEdit(hInst,hwnd,
                           hwndEdit1,CELULAR1, 150,125,190,25,"");
            CreateEdit(hInst,hwnd,
                           hwndEdit1,CELULAR2, 150,155,190,25,"");
            CreateEditVert(hInst,hwnd,
                           hwndEdit1,OBSERVACIONES, 150,185,190,80,"");
            SendDlgItemMessage(hwnd, ID_TXTNOMBRE, EM_LIMITTEXT, 20, 0L);
            SendDlgItemMessage(hwnd, ID_TXTAPELLIDO, EM_LIMITTEXT, 20, 0L);
            SendDlgItemMessage(hwnd, ID_TXTTELEFONO1, EM_LIMITTEXT, 20, 0L);
            SendDlgItemMessage(hwnd, ID_TXTTELEFONO2, EM_LIMITTEXT, 20, 0L);
            SendDlgItemMessage(hwnd, ID_TXTCELULAR1, EM_LIMITTEXT, 20, 0L);
            SendDlgItemMessage(hwnd, ID_TXTCELULAR2, EM_LIMITTEXT, 20, 0L);
            SendDlgItemMessage(hwnd, ID_TXTOBSERVACIONES, EM_LIMITTEXT, 255,
0L);


               CreateButton(hInst,hwnd,

hwndButton1,110,270,100,30,CM_SIGUIENTE,"Siguiente >>");
            CreateButton(hInst, hwnd,
                           hwndButton2, 10,270,100,30,CM_ANTERIOR,"<<
Anterior");
            CreateButton(hInst,hwnd,

hwndButton1,210,270,80,30,CM_ELIMINAR,"Eliminar");
               CreateButton(hInst,hwnd,
                           hwndButton1,290,270,80,30,CM_IRA,"Ir a...");


            if (!lista.Carga())
            {
                MessageBox(hwnd,"No hay datos.\n"
                                "Debe crear al menos una ficha",
                                 "No Existe el fichero",
                                 MB_OK);
                DialogBoxParam(hInst,"FichaNueva", hwnd,
                        DlgProc, (LPARAM) &ficha);
                        lista.SetFicha(ficha.nombre,NOMBRE);
                        lista.SetFicha(ficha.apellido,APELLIDO);
                        lista.SetFicha(ficha.telefono1,TELEFONO1);
                        lista.SetFicha(ficha.telefono2,TELEFONO2);
                        lista.SetFicha(ficha.celular1,CELULAR1);
                        lista.SetFicha(ficha.celular2,CELULAR2);
                        lista.SetFicha(ficha.observaciones,OBSERVACIONES);
                        if (!strcmp(ficha.nombre,""))
                        {
                            MessageBox(hwnd,"Debe introducir
datos","",MB_OK);
                            PostQuitMessage(0);
                        }
                        lista.PushFicha();
                    }

                MuestraFicha(hwnd,&ficha,&lista);
                pincel = CreateSolidBrush(RGB(0,155,255));
         case WM_CTLCOLORSTATIC:
            SetTextColor((HDC)wParam, RGB(0,0,0));
            SetBkColor((HDC)wParam,RGB(0,155,255));
            return (LRESULT)pincel;
        case WM_COMMAND:
            switch(LOWORD(wParam))
                 {
                         case CM_NUEVA:
                        strcpy(ficha.nombre,"");
                        strcpy(ficha.apellido,"");
                        strcpy(ficha.telefono1,"");
                        strcpy(ficha.telefono2,"");
                        strcpy(ficha.celular1,"");
                        strcpy(ficha.celular2,"");
                        strcpy(ficha.observaciones,"");
                              DialogBoxParam(hInst,"FichaNueva", hwnd,
                        DlgProc, (LPARAM) &ficha);
                        if (strcmp(ficha.nombre,"")!=0)
                        {
                        lista.SetFicha(ficha.nombre,NOMBRE);
                        lista.SetFicha(ficha.apellido,APELLIDO);
                        lista.SetFicha(ficha.telefono1,TELEFONO1);
                        lista.SetFicha(ficha.telefono2,TELEFONO2);
                        lista.SetFicha(ficha.celular1,CELULAR1);
                        lista.SetFicha(ficha.celular2,CELULAR2);
                        lista.SetFicha(ficha.observaciones,OBSERVACIONES);
                        lista.PushFicha();}
                        MuestraFicha(hwnd,&ficha,&lista);
                        break;
                    case CM_SIGUIENTE:
                        /* Actualiza la vista con la ficha siguiente*/
                        if (!lista.Siguiente())
                            MessageBox(hwnd,"Última Ficha","",MB_OK);
                        MuestraFicha(hwnd,&ficha,&lista);
                        break;
                    case CM_ANTERIOR:
                        /* Actualiza la vista con la ficha anterior*/
                        if (!lista.Anterior())
                             MessageBox(hwnd,"Primera Ficha","",MB_OK);
                          MuestraFicha(hwnd,&ficha,&lista);
                        break;
                    case CM_ELIMINAR:
                        if(MessageBox(hwnd,"Esto eliminara la ficha actual"
                                       ,"ELIMINAR FICHA",MB_YESNO)== IDYES)
                                        lista.PullFicha();
                        if (lista.Existe())
                             MuestraFicha(hwnd,&ficha,&lista);
                        else
                            {
                                 MessageBox(hwnd,"Debe existir al menos"
                                             "una ficha.",
                                             "Error.",MB_ICONSTOP);
                                 lista.GetFicha(ficha.nombre,8);
                                 lista.GetFicha(ficha.apellido,9);
                                 lista.GetFicha(ficha.telefono1,10);
                                 lista.GetFicha(ficha.telefono2,11);
                                 lista.GetFicha(ficha.celular1,12);
                                 lista.GetFicha(ficha.celular2,13);
                                 lista.GetFicha(ficha.observaciones,14);
                                 ficha.siguiente = NULL;
                                 lista.PushFicha();
                                 MessageBox(hwnd,"La ficha no fue"
                                             " eliminada.",
                                             "...",MB_OK);
                                };
                        break;
                    case CM_IRA:
                        //Para futuras versiones :-)
                        MessageBox(hwnd,"Esta función no está disponible",
                                        "Ok",MB_ICONEXCLAMATION);
                        break;
                     case CM_BUSCARN:
                        /* Abre una cuadro de dialogo para obtener una
                        clave de busqueda (el nombre) */
                        DialogBoxParam(hInst,"BusquedaN", hwnd, DlgProc2,
                        (LPARAM) &ficha);
                        //si se escribió algo lo busca
                        if (strcmp(ficha.nombre,"")!=0)
                        {
                        if (lista.Busca(ficha.nombre,1))
                           MuestraFicha(hwnd,&ficha,&lista);
                        else
                        {
                        /*    char mensaje[50];
                            sprintf(mensaje,"No se puede encontrar \n"
                                           "\" %s \"",ficha.nombre);
                             MessageBox(hwnd,mensaje,"Búsqueda",
                                        MB_ICONEXCLAMATION); */
                            lista.Ira(ficha.nombre,1);
                            MuestraFicha(hwnd,&ficha,&lista);
                                    }
                                }
                        break;
                    case CM_BUSCARA:
                        /* Abre una cuadro de dialogo para obtener una
                        clave de busqueda (el apellido) */
                        DialogBoxParam(hInst,"BusquedaN", hwnd, DlgProc2,
                        (LPARAM) &ficha);
                        //si se escribió algo lo busca
                        if (strcmp(ficha.nombre,"")!=0)
                        {
                        if (lista.Busca(ficha.nombre,2))
                           MuestraFicha(hwnd,&ficha,&lista);
                        else// si lo encuentra lo muestra si no avisa
                        {
                            char mensaje[50];
                            sprintf(mensaje,"No se puede encontrar \n"
                                           "\" %s \"",ficha.nombre);
                             MessageBox(hwnd,mensaje,"Búsqueda",
                                        MB_ICONEXCLAMATION);
                               lista.Ira(ficha.nombre,0);
                                    }
                                }
                        break;
                    case CM_MODIFICAR:
                        //envia la ficha actual al procedimiento dlg
                        lista.GetFicha(ficha.nombre,NOMBRE);
                        lista.GetFicha(ficha.apellido,APELLIDO);
                        lista.GetFicha(ficha.telefono1,TELEFONO1);
                        lista.GetFicha(ficha.telefono2,TELEFONO2);
                        lista.GetFicha(ficha.celular1,CELULAR1);
                        lista.GetFicha(ficha.celular2,CELULAR2);
                        lista.GetFicha(ficha.observaciones,OBSERVACIONES);
                        lista.PullFicha();
                        lista.Ultima();
                         DialogBoxParam(hInst,"ModificarFicha",hwnd,
                        DlgProc, (LPARAM) &ficha);
                        lista.SetFicha(ficha.nombre,NOMBRE);
                        lista.SetFicha(ficha.apellido,APELLIDO);
                        lista.SetFicha(ficha.telefono1,TELEFONO1);
                        lista.SetFicha(ficha.telefono2,TELEFONO2);
                        lista.SetFicha(ficha.celular1,CELULAR1);
                        lista.SetFicha(ficha.celular2,CELULAR2);
                        lista.SetFicha(ficha.observaciones,OBSERVACIONES);
                        lista.PushFicha();
                        MuestraFicha(hwnd,&ficha,&lista);
                        break;

                    case CM_SALIR:
                        //Guardar los cambios en el archivo
                        remove("temporal.agn");
                        lista.Guarda();
                        DeleteObject(pincel);
                          PostQuitMessage(0);
                        break;
                    }
                    break;
        case WM_DESTROY:
               remove("temporal.agn");
            lista.Guarda();
            DeleteObject(pincel);
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hwnd, msg, wParam, lParam);
        }
        return 0;
    }

/********************* ProcedimientoS Para crear los controles
***************/
int CreateStatic(HINSTANCE hInst,
            HWND hwndPadre,
            HWND hwndHija, int x,int y, int  width, int height,LPSTR texto)
{
    hwndHija = CreateWindowEx
    (0,
    "STATIC",
    texto,
    SS_LEFT | WS_CHILD| WS_VISIBLE  ,
    x,
    y,
    width,
    height,
    hwndPadre,
    NULL,
    hInst,
    NULL    );
return 0;
    };

int CreateEdit(HINSTANCE hInst,
            HWND hwndPadre,
            HWND hwndHija,
            int ID,
            int x,int y, int  width, int height,LPSTR texto)
{
    hwndHija = CreateWindowEx
    (WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT,
    "EDIT",
    "",
    ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |WS_TABSTOP,//| ES_READONLY,
    x,
    y,
    width,
    height,
    hwndPadre,
    (HMENU) ID,
    hInst,
    NULL);

return 0;
    };

int CreateEditVert(HINSTANCE hInst,
            HWND hwndPadre,
            HWND hwndHija,
            int ID,
            int x,int y, int  width, int height,LPSTR texto)
{
    hwndHija = CreateWindowEx
    (WS_EX_CLIENTEDGE,
    "EDIT",
    "",
     ES_LEFT | ES_MULTILINE | WS_CHILD | WS_VISIBLE
    |WS_BORDER | WS_TABSTOP| WS_VSCROLL,//| ES_READONLY,
    x,
    y,
    width,
    height,
    hwndPadre,
    (HMENU) ID,
    hInst,
    NULL);
return 0;
    };

int CreateButton(HINSTANCE hInst,
            HWND hwndPadre,
            HWND hwndHija,
            int x,int y, int  width, int height,int idCMD, LPSTR texto)
{
    hwndHija = CreateWindowEx
    (WS_EX_CLIENTEDGE,
    "BUTTON",
    texto,
    BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
    x,
    y,
    width,
    height,
    hwndPadre,
    (HMENU) idCMD,
    hInst,
    NULL);
return 0;
    };


//******************** Procedimiento de Dialogo
******************************
//***********************para añadir y modificar fichas
**********************
BOOL CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
static FICHA *ficha;


    switch (msg) // manipulador del mensaje
        {
            case WM_INITDIALOG:
                    SendDlgItemMessage(hdlg, ID_TXTNOMBRE, EM_LIMITTEXT, 20,
0L);
                    SendDlgItemMessage(hdlg, ID_TXTAPELLIDO, EM_LIMITTEXT,
20, 0L);
                SendDlgItemMessage(hdlg, ID_TXTTELEFONO1, EM_LIMITTEXT, 20,
0L);
                SendDlgItemMessage(hdlg, ID_TXTTELEFONO2, EM_LIMITTEXT, 20,
0L);
                SendDlgItemMessage(hdlg, ID_TXTCELULAR1, EM_LIMITTEXT, 20,
0L);
                SendDlgItemMessage(hdlg, ID_TXTCELULAR2, EM_LIMITTEXT, 20,
0L);
                SendDlgItemMessage(hdlg, ID_TXTOBSERVACIONES, EM_LIMITTEXT,
255, 0L);
                ficha = (FICHA*) lParam;
                SetDlgItemText(hdlg, ID_TXTNOMBRE, ficha->nombre);
                SetDlgItemText(hdlg, ID_TXTAPELLIDO, ficha->apellido);
                SetDlgItemText(hdlg, ID_TXTTELEFONO1, ficha->telefono1);
                SetDlgItemText(hdlg, ID_TXTTELEFONO2, ficha->telefono2);
                SetDlgItemText(hdlg, ID_TXTCELULAR1, ficha->celular1);
                SetDlgItemText(hdlg, ID_TXTCELULAR2, ficha->celular2);
                SetDlgItemText(hdlg, ID_TXTOBSERVACIONES,
ficha->observaciones);
                SetFocus(GetDlgItem(hdlg, ID_TXTNOMBRE));
                return FALSE;
            case WM_COMMAND:
                switch(LOWORD(wParam))
                    {
                        case IDOK:
                            GetDlgItemText(hdlg, ID_TXTNOMBRE,
ficha->nombre, 20);
                               GetDlgItemText(hdlg, ID_TXTAPELLIDO,
ficha->apellido, 20);
                            GetDlgItemText(hdlg, ID_TXTTELEFONO1,
ficha->telefono1, 20);
                            GetDlgItemText(hdlg, ID_TXTTELEFONO2,
ficha->telefono2, 20);
                            GetDlgItemText(hdlg, ID_TXTCELULAR1,
ficha->celular1, 20);
                            GetDlgItemText(hdlg, ID_TXTCELULAR2,
ficha->celular2, 20);
                            GetDlgItemText(hdlg, ID_TXTOBSERVACIONES,
ficha->observaciones, 255);
                            EndDialog(hdlg, FALSE);

                            break;
                        case IDCANCEL:
                            EndDialog(hdlg, FALSE);

                            break;
                    } return TRUE;
        } return FALSE;
};

//******************** Procedimiento de Dialogo
2******************************
//******************** Para el dialogo de búsqued
*****************************
BOOL CALLBACK DlgProc2(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
static FICHA *ficha;


    switch (msg) // manipulador del mensaje
        {
            case WM_INITDIALOG:
                SendDlgItemMessage(hdlg, ID_TXTNOMBRE, EM_LIMITTEXT, 20,
0L);
                ficha = (FICHA*) lParam;
                strcpy(ficha->nombre,"");
                SetFocus(GetDlgItem(hdlg, ID_TXTNOMBRE));
                return FALSE;
            case WM_COMMAND:
                switch(LOWORD(wParam))
                    {
                        case IDOK:
                            GetDlgItemText(hdlg, ID_TXTNOMBRE,
ficha->nombre, 20);
                            EndDialog(hdlg, FALSE);
                            break;
                        case IDCANCEL:
                            EndDialog(hdlg, FALSE);
                            break;
                    } return TRUE;
        } return FALSE;
}

//////////////////////////////////////////////////////////////////////////////
int MuestraFicha(HWND hwnd,FICHA* ficha,Lista* lista)
{
     int i;
    for(i=1; i < 8 ; i++)
        {
                 lista->GetFicha(ficha->nombre,i);
                  SetDlgItemText(hwnd,i,ficha->nombre);
                };
    };
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100916/407df7c1/attachment.html>


Más información sobre la lista de distribución Cconclase