//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "BinaryFile.h" //--------------------------------------------------------------------------- #pragma package(smart_init) template BinaryFile::BinaryFile() { FisOpen = false; filename = ""; } template BinaryFile::~BinaryFile() {if (FisOpen) this->Close(); } template void BinaryFile::Assign(AnsiString S) { filename = S; } template void BinaryFile::Open() { if (FileExists(filename)) { Handle = FileOpen(filename, fmOpenReadWrite); FisOpen = true;} } template void BinaryFile::Create() { Theader H; Handle = FileCreate(filename); FileWrite(Handle, &H, sizeof(Theader)); } template void BinaryFile::Close() { FileClose(Handle); FisOpen = false; } template void BinaryFile::WriteHeader(Theader H) {FileSeek(Handle, 0, 0); FileWrite(Handle, &H, sizeof(Theader)); } template void BinaryFile::ReadHeader(Theader &H) { FileSeek(Handle, 0, 0); FileRead(Handle, &H, sizeof(Theader)); } template int BinaryFile::Size() { int BytePos = FileSeek(Handle, 0, 2); return (BytePos - sizeof(Theader))/sizeof(Trecord); } template void BinaryFile::Read(Trecord &R, int Pos) { int BytePos = sizeof(Theader)+ Pos*sizeof(Trecord); FileSeek(Handle,BytePos, 0); FileRead(Handle, &R, sizeof(Trecord)); } template void BinaryFile::Write(Trecord R, int Pos) { int BytePos = sizeof(Theader) + Pos*sizeof(Trecord); FileSeek(Handle, BytePos, 0); FileWrite(Handle, &R, sizeof(Trecord)); }