CCCPaste

VENDEDORARCHIVO

#include 
#include "VendedorArchivo.h"

VendedorArchivo::VendedorArchivo(std::string nombreArchivo="vendedores.dat"){
    strcpy(_nombreArchivo, nombreArchivo.c_str());
}

Vendedor VendedorArchivo::leerRegistro(int pos){
    Vendedor registro;
    FILE *pFile;

    pFile=fopen(_nombreArchivo, "rb");

    if(pFile==nullptr){
        return registro;
    }

    fseek(pFile, sizeof(Vendedor)* pos, SEEK_SET);

    fread(®istro, sizeof(Vendedor), 1, pFile);

    fclose(pFile);

    return registro;
}

int VendedorArchivo::ContarRegistro(){
    FILE *pFile;
    int tam;

    pFile=fopen(_nombreArchivo, "rb");

    if(pFile==nullptr){
        return 0;
    }

    fseek(pFile, 0, SEEK_END);

    tam=ftell(pFile)/sizeof(Vendedor);

    fclose(pFile);

    return tam;
}

bool VendedorArchivo::GuardarRegistro(Vendedor registro){
    bool resultado;
    FILE *pFile;

    pFile=fopen(_nombreArchivo, "ab");

    if(pFile==nullptr){
        return false;
    }

    resultado=fwrite(®istro, sizeof (Vendedor), 1, pFile);

    fclose(pFile);
    return resultado;
}

bool VendedorArchivo::Sobreescribir(int pos, Vendedor reg){
    FILE *pFile;

    pFile=fopen(_nombreArchivo, "rb+");
    if(pFile==nullptr){
        return false;
    }

    fseek(pFile, sizeof (Vendedor)*pos, SEEK_SET);

    bool resultado=fwrite(®, sizeof (Vendedor), 1, pFile);

    fclose(pFile);

    return resultado;
}

int VendedorArchivo::BuscarId(int indice){
    Vendedor reg;
    int pos=0;
    FILE *pFile;

    pFile=fopen(_nombreArchivo, "rb");
    if(pFile==nullptr){
        return -1;
    }

    while(fread(®, sizeof(Vendedor), 1, pFile)){
        if(reg.getNroLegajo()==indice){
            fclose(pFile);
            return pos;
        }
        pos++;
    }

    fclose(pFile);
    return -1;
}