/* uudecodeして保存 */ void CViewCommander::Command_UUDECODE( void ) { /* テキストが選択されているか */ if( !m_pCommanderView->GetSelectionInfo().IsTextSelected() ){ ErrorBeep(); return; } // 選択範囲のデータを取得 -> cmemBuf // 正常時はTRUE,範囲未選択の場合はFALSEを返す CNativeW ctextBuf; if( !m_pCommanderView->GetSelectedDataSimple(ctextBuf) ){ ErrorBeep(); return; } // uudecode(デコード) ctextBuf -> cmemBin, szPath CMemory cmemBin; TCHAR szPath[_MAX_PATH]=_T(""); CDecode_UuDecode decoder; if( !decoder.CallDecode(ctextBuf, &cmemBin) ){ return; } decoder.CopyFilename( szPath ); ctextBuf.Clear(); /* 保存ダイアログ モーダルダイアログの表示 */ if( !GetDocument()->m_cDocFileOperation.SaveFileDialog( szPath ) ){ return; } //データ int nDataLen; const void* pData = cmemBin.GetRawPtr(&nDataLen); //カキコ CBinaryOutputStream out(szPath); if( !out )goto err; if( nDataLen != out.Write(pData,nDataLen) )goto err; //完了 return; err: ErrorBeep(); ErrorMessage( m_pCommanderView->GetHwnd(), LS(STR_ERR_CEDITVIEW_CMD16), szPath ); }
/* Base64デコードして保存 */ void CViewCommander::Command_BASE64DECODE( void ) { /* テキストが選択されているか */ if( !m_pCommanderView->GetSelectionInfo().IsTextSelected() ){ ErrorBeep(); return; } /* 選択範囲のデータを取得 */ /* 正常時はTRUE,範囲未選択の場合はFALSEを返す */ CNativeW ctextBuf; if( !m_pCommanderView->GetSelectedDataSimple(ctextBuf) ){ ErrorBeep(); return; } /* Base64デコード */ CMemory cmemBuf; bool bret = CDecode_Base64Decode().CallDecode(ctextBuf, &cmemBuf); if( !bret ){ return; } ctextBuf.Clear(); /* 保存ダイアログ モーダルダイアログの表示 */ TCHAR szPath[_MAX_PATH] = _T(""); if( !GetDocument()->m_cDocFileOperation.SaveFileDialog( szPath ) ){ return; } //データ int nDataLen; const void* pData = cmemBuf.GetRawPtr(&nDataLen); //カキコ CBinaryOutputStream out(szPath); if(!out)goto err; if( nDataLen != out.Write(pData, nDataLen) )goto err; return; err: ErrorBeep(); ErrorMessage( m_pCommanderView->GetHwnd(), LS(STR_ERR_CEDITVIEW_CMD14), szPath ); }