本文整理汇总了C++中TMemoryStream::Seek方法的典型用法代码示例。如果您正苦于以下问题:C++ TMemoryStream::Seek方法的具体用法?C++ TMemoryStream::Seek怎么用?C++ TMemoryStream::Seek使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TMemoryStream
的用法示例。
在下文中一共展示了TMemoryStream::Seek方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SendButtonClick
//---------------------------------------------------------------------------
void __fastcall THttpTestForm::SendButtonClick(TObject *Sender)
{
TMemoryStream *DataIn;
TMemoryStream *DataOut;
AnsiString Buf;
BOOL bSuccess;
DisplayMemo->Clear();
DataIn = new TMemoryStream;
DataOut = new TMemoryStream;
bSuccess = TRUE;
try {
Buf = "ID=" + UserIDEdit->Text +
"&REMITE=" + EMailEdit->Text +
"&MENSAJE=" + Encode(MessageEdit->Text);
DataOut->Write(&Buf[1], Buf.Length());
DataOut->Seek(0, soFromBeginning);
HttpCli1->SendStream = DataOut;
HttpCli1->RcvdStream = DataIn;
HttpCli1->Proxy = ProxyEdit->Text;
HttpCli1->ProxyPort = "80";
HttpCli1->URL = "http://www.unired.net.pe/cgi-bin/a.out";
SendButton->Enabled = FALSE;
AbortButton->Enabled = TRUE;
try {
HttpCli1->Post();
}
__except (TRUE) {
bSuccess = FALSE;
}
if (bSuccess) {
DataIn->Seek(0, 0);
DisplayMemo->Lines->LoadFromStream(DataIn);
}
SendButton->Enabled = TRUE;
AbortButton->Enabled = FALSE;
}
__except (TRUE) {
bSuccess = FALSE;
}
if (!bSuccess)
DisplayMemo->Lines->Add("Failed : " + HttpCli1->ReasonPhrase);
delete DataOut;
delete DataIn;
}
示例2: Read
//----------
//接口实现
//----------
TMemoryStream* TFComm::Read()
{
UINT8 buf[RECV_BUFF_MAX_LEN];
int rv;
TMemoryStream *p;
if (m_Recv->Count() > 0)
{
p = (TMemoryStream*)m_Recv->Pop();
p->Seek(0, soFromBeginning);
rv = p->Read(buf, RECV_BUFF_MAX_LEN);
LogMsg("Read" + IntToStr(rv) + ": " + StreamToText(buf, rv));
return p;
}
else return NULL;
}
示例3: PostButtonClick
//---------------------------------------------------------------------------
void __fastcall THttpTestForm::PostButtonClick(TObject *Sender)
{
TMemoryStream *DataOut;
TFileStream *DataIn;
AnsiString Buf;
int I;
DisplayMemo->Clear();
DocumentMemo->Clear();
SetButtonState(FALSE);
DataOut = new TMemoryStream;
Buf = DataEdit->Text;
DataOut->Write(&Buf[1], Buf.Length());
DataOut->Seek(0, soFromBeginning);
HttpCli1->SendStream = DataOut;
HttpCli1->Proxy = ProxyHostEdit->Text;
HttpCli1->ProxyPort = ProxyPortEdit->Text;
HttpCli1->RcvdStream = NULL;
HttpCli1->URL = URLEdit->Text;
try {
HttpCli1->Post();
} __except (TRUE) {
SetButtonState(TRUE);
delete DataOut;
DisplayMemo->Lines->Add("POST Failed !");
DisplayMemo->Lines->Add("StatusCode = " + IntToStr(HttpCli1->StatusCode));
DisplayMemo->Lines->Add("ReasonPhrase = " + HttpCli1->ReasonPhrase);
return;
}
delete DataOut;
DisplayMemo->Lines->Add("StatusCode = " + IntToStr(HttpCli1->StatusCode));
for (I = 0; I < HttpCli1->RcvdHeader->Count; I++)
DisplayMemo->Lines->Add("hdr>" + HttpCli1->RcvdHeader->Strings[I]);
DataIn = new TFileStream(HttpCli1->DocName, fmOpenRead);
DocumentMemo->Lines->LoadFromStream(DataIn);
delete DataIn;
SetButtonState(TRUE);
}
示例4: 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) {
示例5: DateTimeToStr
//.........这里部分代码省略.........
FileName = ExtractFileName(FileList->Strings[i]);
ProgressMsgText = FileName; //処理中のファイル名
//トップディレクトリ
GetFileInfoList(Index, DirPath, FileName, FileList->Strings[i], FilePathList, HeaderDataList);
//その配下
AllTotalFileSize +=
GetFileInfoList(Index, FileList->Strings[i], "", FileList->Strings[i], FilePathList, HeaderDataList);
}
//ユーザーキャンセル
if (Terminated == true) {
delete HeaderDataList;
return(false);
}
}// end for;
//進捗状況表示
ProgressPercentNum = -1;
//'ヘッダデータを書き込んでいます...'
ProgressStatusText = LoadResourceString(&Msgencrypt::_LABEL_STATUS_TITLE_ENCRYPTING_LIST);
ProgressMsgText = "";
//メモリストリームへ書き込み
tpms = new TMemoryStream;
//------------------------------------------------
// 暗号化時にヘッダデータの互換性維持
//---------------------------------------------------
HeaderDataList->SaveToStream(tpms, TEncoding::GetEncoding(932));
//新バージョン(ver.2.8.0~)用(UTF-8)に保存
for (i = 0; i < HeaderDataList->Count; i++) {
HeaderDataList->Strings[i] = StringReplace(HeaderDataList->Strings[i],"Fn_","U_",TReplaceFlags()<<rfIgnoreCase );
}
HeaderDataList->SaveToStream(tpms, TEncoding::UTF8);
delete HeaderDataList;
//-----------------------------------
//ヘッダ情報の暗号化
//-----------------------------------
//暗号化の準備
gentables();
//キー入力
gkey( 8, 8, key);
for (i = 0; i < BUF_SIZE; i++) {
buffer[i] = 0;
}
//初期化ベクトル(IV)を生成
fillrand(chain_buffer, BUF_SIZE);
pms->Write(chain_buffer, BUF_SIZE);
//先頭にポインタを戻す
tpms->Seek((__int64)0, TSeekOrigin::soBeginning);
EncryptHeaderSize = 0;
//CBCモードで書き込む
while (tpms->Read( buffer, BUF_SIZE ) != NULL){
EncryptHeaderSize += BUF_SIZE;
// xor
for ( i = 0; i < BUF_SIZE; i++ ){
buffer[i] ^= chain_buffer[i];
}
// rijndael
rijndael_encrypt(buffer);
pms->Write(buffer, BUF_SIZE);
//CBC&バッファの初期化
for ( i = 0; i < BUF_SIZE; i++ ){
chain_buffer[i] = buffer[i];
buffer[i] = 0;
}
//ユーザーキャンセル
if (Terminated == true) {
delete tpms;
return(false);
}
}//loop;
delete tpms;
//暗号化部分のヘッダデータサイズ(確保しておいた場所へ改めて書き込む)
pms->Position = HeaderSizeAddress;
pms->Write(&EncryptHeaderSize, sizeof(int));
//先頭にポインタを戻す
pms->Seek((__int64)0, TSeekOrigin::soBeginning);
return(true);
}//end CreateHeaderData;
示例6: 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;
}
}
示例7: keyIndex
void z3ResEx::Run( )
{
// Check the fileindex exists
if( TFileSize( msfName ) == 0 )
{
setMessage( "ERROR: Unable to open file (%s)", msfName );
}
else
{
TMemoryStream msf;
m_fileindexKey = nullptr;
m_fileindexKeyLength = 0;
//
// Brute-force the key (version 1)
//
unsigned int keyIndex( 0 );
// For all known keys
while( ( keyIndex < keyList1Count ) && ( msf.Size() == 0 ) )
{
// Try to read the fileindex
if( fsReadMSF( msf, keyList1[ keyIndex ].Data, KeyLength1, 0 ) )
{
m_fileindexKey = keyList1[ keyIndex ].Data;
m_fileindexKeyLength = KeyLength1;
m_fileindexVer = 0;
if( m_verboseMessages )
printf("Found key for %s!\n", keyList1[ keyIndex ].Desc );
}
++keyIndex;
}
// If key has not been found
if( m_fileindexKey == nullptr )
{
//
// Continue to brute-force the key (version 2)
//
keyIndex = 0;
// For all known keys
while( ( keyIndex < keyList2Count ) && ( msf.Size() == 0 ) )
{
// Try to read the fileindex
if( fsReadMSF( msf, keyList2[ keyIndex ].Data, KeyLength2, 1 ) )
{
m_fileindexKey = keyList2[ keyIndex ].Data;
m_fileindexKeyLength = KeyLength2;
m_fileindexVer = 1;
if( m_verboseMessages )
printf("Found key for %s!\n", keyList2[ keyIndex ].Desc );
}
++keyIndex;
}
}
// If a valid key has been found and fileindex loaded
if( !( ( m_fileindexKey == nullptr ) && ( msf.Size() == 0 ) ) )
{
// Attempt to parse it (to extract or list files)
msf.Seek( 0, bufo_start );
parseMsf( msf );
}
else
{
// No key found or incompatiable file (not checked)
setMessage( "ERROR: This file is using an updated key or unsupported method" );
}
msf.Close();
}
}