本文整理汇总了C++中TFileStream::Seek方法的典型用法代码示例。如果您正苦于以下问题:C++ TFileStream::Seek方法的具体用法?C++ TFileStream::Seek怎么用?C++ TFileStream::Seek使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TFileStream
的用法示例。
在下文中一共展示了TFileStream::Seek方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
int *FileAttrList = 0; // 2: 属性
int *FileAgeList = 0; // 3: タイムスタンプ
int rest;
int buf_size;
//----------------------------------------------------------------------
// 平文のヘッダ内容チェック
try {
fsIn = new TFileStream(AtcFilePath, fmOpenRead | fmShareDenyNone);
}
catch(...) {
//'復号するファイルを開けません。他のアプリケーションが使用中の可能性があります。'
MsgText = LoadResourceString(&Msgdecrypt::_MSG_ERROR_FILE_OPEN);
MsgType = mtError;
MsgButtons = TMsgDlgButtons() << mbOK;
MsgDefaultButton = mbOK;
Synchronize(&PostConfirmMessageForm);
goto LabelError;
}
fInputFileOpen = true;
// 暗号部ヘッダサイズを取得
fsIn->Read(&EncryptHeaderSize, sizeof(int));
// トークンを取得
fsIn->Read(token, 16);
if (StrComp(token, charTokenString) != 0 ) {
//--------------------------------------------------------
//実は自己実行形式ファイル?(拡張子偽装されている場合も)
//--------------------------------------------------------
// サイズを再取得
fsIn->Seek(-(__int64)sizeof(__int64), TSeekOrigin::soEnd);
fsIn->Read(&AllTotalSize, sizeof(__int64));
// 位置を戻す
fsIn->Seek(-(AllTotalSize + sizeof(__int64)), TSeekOrigin::soEnd);
// もう一度、暗号部ヘッダサイズを取得
fsIn->Read(&EncryptHeaderSize, sizeof(int));
// もう一度、トークンを取得
fsIn->Read(token, 16);
// トークンを再チェック
if (StrComp(token, charTokenString) != 0 ) {
// '暗号化ファイルではありません。アタッシェケースによって暗号化されたファイルでないか、'+#13+
// 'ファイルが壊れている可能性があります。'
MsgText = LoadResourceString(&Msgdecrypt::_MSG_ERROR_FILE_NOT_ATC);
MsgType = mtError;
MsgButtons = TMsgDlgButtons() << mbOK;
MsgDefaultButton = mbOK;
Synchronize(&PostConfirmMessageForm);
goto LabelError;
}
}
else{
AllTotalSize = fsIn->Size;
}
//-----------------------------------
// データバージョンチェック
//-----------------------------------
DataVersion = -1;
fsIn->Read(&DataVersion, sizeof(int));
if (DataVersion <= 103) {
示例2: if
//.........这里部分代码省略.........
int *FileTmCreateList = 0; // 6: 作成時
int rest;
int buf_size;
//----------------------------------------------------------------------
// 平文のヘッダ内容チェック
try {
fsIn = new TFileStream(AtcFilePath, fmOpenRead | fmShareDenyNone);
}
catch(...) {
//'復号するファイルを開けません。他のアプリケーションが使用中の可能性があります。'
MsgText = LoadResourceString(&Msgdecrypt::_MSG_ERROR_FILE_OPEN);
MsgType = mtError;
MsgButtons = TMsgDlgButtons() << mbOK;
MsgDefaultButton = mbOK;
Synchronize(&PostConfirmMessageForm);
goto LabelError;
}
fInputFileOpen = true;
// 平文ヘッダサイズを取得
fsIn->Read(&PlainHeaderSize, sizeof(int));
// トークンを取得
fsIn->Read(token, 16);
if (StrComp(token, charTokenString) != 0 ) {
//--------------------------------------------------------
//実は自己実行形式ファイル?(拡張子偽装されている場合も)
//--------------------------------------------------------
// サイズを再取得
fsIn->Seek(-(__int64)sizeof(__int64), TSeekOrigin::soEnd);
fsIn->Read(&AllTotalSize, sizeof(__int64));
// 位置を戻す
fsIn->Seek(-(AllTotalSize + sizeof(__int64)), TSeekOrigin::soEnd);
// もう一度、平文ヘッダサイズを読み込む
fsIn->Read(&PlainHeaderSize, sizeof(int));
// もう一度、トークンを取得
fsIn->Read(token, 16);
// トークンを再チェック
if (StrComp(token, charTokenString) != 0 ) {
if ( StrComp(token, charBrokenToken) == 0 ) {
//'復号するファイルを開けません。この暗号化ファイルは破壊されています。'
MsgText = LoadResourceString(&Msgdecrypt::_MSG_ERROR_FILE_BROKEN);
MsgType = mtError;
MsgButtons = TMsgDlgButtons() << mbOK;
MsgDefaultButton = mbOK;
Synchronize(&PostConfirmMessageForm);
}
else {
// '暗号化ファイルではありません。アタッシェケースによって暗号化されたファイルでないか、'+#13+
// 'ファイルが壊れている可能性があります。'
MsgText = LoadResourceString(&Msgdecrypt::_MSG_ERROR_FILE_NOT_ATC);
MsgType = mtError;
MsgButtons = TMsgDlgButtons() << mbOK;
MsgDefaultButton = mbOK;
Synchronize(&PostConfirmMessageForm);
}
goto LabelError;
}
}
示例3: Execute
//.........这里部分代码省略.........
MsgType = mtError;
MsgButtons = TMsgDlgButtons() << mbOK;
MsgDefaultButton = mbOK;
Synchronize(&PostConfirmMessageForm);
delete pms;
goto LabelError;
}
//-----------------------------------
// 実行可能形式の出力
//-----------------------------------
if ( fExeOutputOption == true ){
//-----------------------------------
// 自分のお尻から実行データを抽出
//-----------------------------------
//自分自身の実行ファイルを開く
try{
fsExe = new TFileStream(Application->ExeName, fmOpenRead | fmShareDenyWrite);
}
catch(...){
//'実行可能形式出力に失敗しました。暗号化処理を中止します。'
MsgText = LoadResourceString(&Msgencrypt::_MSG_ERROR_EXEOUT_FAILED);
MsgType = mtError;
MsgButtons = TMsgDlgButtons() << mbOK;
MsgDefaultButton = mbOK;
Synchronize(&PostConfirmMessageForm);
delete pms;
goto LabelError;
}
//切り出すサイズを取得
fsExe->Seek(-(__int64)sizeof(__int64), TSeekOrigin::soEnd);
fsExe->Read(&ExeAllSize, sizeof(__int64));
//処理する合計サイズに実行形式分を加える
AllTotalSize += ExeAllSize;
//自己実行可能形式データの境界へ
fsExe->Seek(-(__int64)ExeAllSize-sizeof(__int64), TSeekOrigin::soEnd);
while(fsExe->Read(read_buffer, BUF_SIZE) != 0 ){
ExeSize+=BUF_SIZE;
//書き込む
if ( ExeSize < ExeAllSize ){
fsOut->Write(read_buffer, BUF_SIZE);
TotalSize += BUF_SIZE;
}
else{
fsOut->Write(read_buffer, ExeSize-ExeAllSize);
TotalSize += (ExeSize-ExeAllSize);
}
//進捗表示
ProgressPercentNumF = (float)TotalSize/AllTotalSize;
ProgressPercentNum = (int)(ProgressPercentNumF*100);
if (AllTotalSize < 104857600) { // 100MB未満
ProgressPercentNumText = IntToStr(ProgressPercentNum)+"%";
}
else{
ProgressPercentNumText = FloatToStrF(ProgressPercentNumF*100, ffNumber, 4, 1)+"%";
}
}
//自分自身を閉じる
delete fsExe;
}
示例4: TFileStream
//---------------------------------------------------------------------------
//暗号化ファイルを破壊する
//---------------------------------------------------------------------------
bool __fastcall TForm1::DestroyAtcFile(void)
{
int i;
int fh;
String MsgText;
char buffer[BUF_SIZE];
for ( i = 0; i < BUF_SIZE; i++ ){
buffer[i]=NULL;
}
TFileStream *fsIn;
char token[16];
const char charTokenString[16] = "_AttacheCaseData"; //復号の正否に使う
const char charDestroyTokenString[16] = "_Atc_Broken_Data"; //破壊されているとき
String AtcFileTokenString; //暗号化ファイルのトークン(文字列)
String AtcFileCreateDateString; //暗号化ファイルの生成日時(文字列)
__int64 AllTotalSize;
int PlaneHeaderSize;
int HeaderBufSize;
try {
fsIn = new TFileStream(Application->ExeName, fmShareDenyNone);
}
catch(...) {
//'ファイルを開けません。他のアプリケーションで使用中の可能性があります。'
MsgText = LoadResourceString(&Msgexeout::_MSG_FILE_OPEN_ERROR);
ShowConfirmMassageForm(MsgText, mtError, TMsgDlgButtons()<<mbOK, mbOK);
return(false);
}
//総サイズ取得
AllTotalSize = fsIn->Seek((__int64)0, TSeekOrigin::soEnd);
fsIn->Seek((__int64)0, TSeekOrigin::soBeginning);
//-----------------------------------
//ヘッダ情報のチェック
//-----------------------------------
// サイズを取得
fsIn->Seek(-(__int64)sizeof(__int64), TSeekOrigin::soEnd);
fsIn->Read(&AllTotalSize, sizeof(__int64));
// 位置を戻す
fsIn->Seek(-(AllTotalSize + sizeof(__int64)), TSeekOrigin::soEnd);
// 平文ヘッダサイズを読み込む
fsIn->Read(&PlaneHeaderSize, sizeof(int));
// トークンを取得
fsIn->Read(token, 16);
// トークンを再チェック
if (memcmp(token, charTokenString, 16) != 0 ) {
//すでに壊れている? サイレントに処理終了
delete fsIn;
return(true);
}
else{
fsIn->Seek((__int64)-16, TSeekOrigin::soCurrent);
//"_Atc_Broken_Data"を書き込む
fsIn->Write(charDestroyTokenString, 16);
}
//「データバージョン」「アルゴリズムの種類」分だけ進める
fsIn->Seek((__int64)(sizeof(int)*2), TSeekOrigin::soCurrent);
//暗号部ヘッダサイズを取得する
fsIn->Read(&HeaderBufSize, sizeof(int));
//暗号部ヘッダのIVを書き換えて破壊する
fsIn->Write(buffer, BUF_SIZE);
//「暗号部ヘッダサイズ」分だけ進める
fsIn->Seek((__int64)(HeaderBufSize-BUF_SIZE), TSeekOrigin::soCurrent);
// IV部分を書き換えて破壊する
fsIn->Write(buffer, BUF_SIZE);
delete fsIn;
return(true);
}