本文整理汇总了C++中FileIO::Seek方法的典型用法代码示例。如果您正苦于以下问题:C++ FileIO::Seek方法的具体用法?C++ FileIO::Seek怎么用?C++ FileIO::Seek使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileIO
的用法示例。
在下文中一共展示了FileIO::Seek方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateDrive
// ---------------------------------------------------------------------------
// UpdateDrive
//
void DiskManager::UpdateDrive(Drive* drv)
{
if (!drv->holder || drv->sizechanged)
return;
CriticalSection::Lock lock(cs);
int t;
for (t=0; t<164 && !drv->modified[t]; t++)
;
if (t < 164)
{
FileIO* fio = drv->holder->GetDisk(drv->index);
if (fio)
{
for (; t<164; t++)
{
if (drv->modified[t])
{
FloppyDisk::Sector* sec;
int tracksize = 0;
for (sec = drv->disk.GetFirstSector(t); sec; sec=sec->next)
tracksize += sec->size + sizeof(SectorHeader);
if (tracksize <= drv->tracksize[t])
{
drv->modified[t] = false;
fio->Seek(drv->trackpos[t], FileIO::begin);
WriteTrackImage(fio, drv, t);
}
else
{
drv->sizechanged = true;
break;
}
}
}
}
}
}
示例2: lock
// ---------------------------------------------------------------------------
// Mount
// arg:dr Mount するドライブ
// diskname ディスクイメージのファイルネーム
// readonly 読み込みのみ
// index mount するディスクイメージの番号 (-1 == no disk)
//
bool DiskManager::Mount
(uint dr, const char* diskname, bool readonly, int index, bool create)
{
int i;
Unmount(dr);
CriticalSection::Lock lock(cs);
// ディスクイメージがすでに hold されているかどうかを確認
DiskImageHolder* h = 0;
for (i=0; i<max_drives; i++)
{
if (holder[i].Connect(diskname))
{
h = &holder[i];
// これから開くディスクが既に開かれていないことを確認する
if (index >= 0)
{
for (uint d=0; d<max_drives; d++)
{
if ((d != dr) && (drive[d].holder == h) && (drive[d].index == index))
{
index = -1; // no disk
statusdisplay.Show(90, 3000, "このディスクは使用中です");
break;
}
}
}
break;
}
}
if (!h) // 空いている holder に hold させる
{
for (i=0; i<max_drives; i++)
{
if (!holder[i].IsOpen())
{
h = &holder[i];
break;
}
}
if (!h || !h->Open(diskname, readonly, create))
{
if (h)
h->Disconnect();
return 0;
}
}
if (!h->GetNumDisks())
index = -1;
FileIO* fio = 0;
if (index >= 0)
{
fio = h->GetDisk(index);
if (!fio)
{
h->Disconnect();
return false;
}
}
drive[dr].holder = h;
drive[dr].index = index;
drive[dr].sizechanged = false;
if (fio)
{
fio->Seek(0, FileIO::begin);
if (!ReadDiskImage(fio, &drive[dr]))
{
h->Disconnect();
drive[dr].holder = 0;
return false;
}
memset(drive[dr].modified, 0, 164);
drive[dr].fdu.Mount(&drive[dr].disk);
}
return true;
}