📄 punjacfajl.h
字号:
// PunjacFajl.h: interface for the CPunjacFajl class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PUNJACFAJL_H__8FB35654_DE7B_4C4A_ADDD_1E86F6248441__INCLUDED_)
#define AFX_PUNJACFAJL_H__8FB35654_DE7B_4C4A_ADDD_1E86F6248441__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "../PL3000/PrgDef.h"
#include "ProgramPunjac.h"
#include <string>
class CPunjacFajl : public CProgramPunjac
{
public:
CPunjacFajl(const std::string& nazivFajla);
CPunjacFajl(CFile* pFajl);
virtual ~CPunjacFajl();
// Poziv ove funkcije oznacava pocetak punjenja programa i
// definise opseg adresa koje se citaju.
// Punjac treba da odradi potrebne inicijalizacije i da bude
// spreman da vrati bajt progama iz zadatog opsega adresa.
// U slucaju neuspeha vraca 'false', a opis greske smesta u OUT parametar.
virtual bool Start(
PRG::tAdresa pocetnaAdresa,
PRG::tAdresa zavrsnaAdresa,
std::string& opis
) = 0;
// Funkcija prosledjuje sledeci bajt programa (preko OUT parametra).
// Bajtovi su u opsegu adresa koji je zadat prilikom poziva 'Start' funkcije,
// ali redosled nije definisan.
// Ako uspe, vraca true i punjac je spreman da vrati sledeci bajt.
// Ako nema vise bajtova vraca false.
// U slucaju greske baca izuzetak.
virtual bool DajSledeciBajt(PRG::tBajt& bajt, PRG::tAdresa& adresa) = 0;
// Funkcija za signaliziranje da je zavrseno punjenje programa.
// Punjac treba da da zatvori datoteku iz koje je fajl procitan.
// U slucaju neuspeha vraca 'false', a opis greske smesta u OUT parametar.
virtual bool Stop(std::string& opis);
protected:
// Funkcija otvara dati fajl za citanje i inicijalizuje pomocne promenljive.
// U slucaju neuspeha vraca false i opis greske preko OUT parametra.
bool PripremiFajlZaCitanje(std::string& opis);
// Funkcija cita jedan bajt iz fajla.
// Ako nema vise bajtova vraca false.
// U slucaju greske baca izuzetak CPunjacException.
bool ProcitajBajt(BYTE& bajt);
// Funkcija cita dati broj bajtova iz fajla.
// Ako u fajlu nije ostalo dovoljno bajtova vraca false.
// U slucaju greske baca izuzetak CPunjacException.
bool ProcitajBajtove(BYTE* bafer, UINT brojBajtova);
private:
//////////////////////////////////////////////////////////////////////
// Pomocne funkcije
//////////////////////////////////////////////////////////////////////
// Funkcija otvara dati fajl za citanje.
// U slucaju neuspeha vraca false i opis greske preko OUT parametra.
bool OtvoriFajlZaCitanje(std::string& opis);
// Funkcija vraca duzinu fajla (broj bajtova) preko OUT parametra 'brojBajtova'.
// U slucaju greske vraca false i opis greske preko OUT parametra 'opis'.
bool DuzinaFajla(DWORD& brojBajtova, std::string& opis);
// Funkcija proverava da li je pokazivac na datoteku NULL.
// Vraca i opis greske preko OUT parametra
bool ProveriFajlPtr(std::string& opis);
protected:
CFile* pFajl_m;
std::string nazivFajla_m;
bool spoljniCFile_m; // fleg koji definise da li se CFile objekat kreira ili je dodeljen spolja
bool otvoriZatvori_m; // fleg koji definse da li se fajl otvara pre pocetka citanja i zatvara kad se zavrsi citanje
// (ako je CFile dodeljen spolja, verovatno je vec otvoren pa ovde ne treba da se ponovo otvara)
// tekstovi
static const std::string TXT_NULL_PTR;
private:
DWORD preostaloBajtova_m; // koliko jos bajtova u fajlu nije obradjeno
};
#endif // !defined(AFX_PUNJACFAJL_H__8FB35654_DE7B_4C4A_ADDD_1E86F6248441__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -