2012/04/25 以前の PartsA などの ipx の読込みは,CArchive::ReadString を利用していた.
今回,Parts ファミリのファイルアクセスは,LoadText ,SaveText に置き換える.
ReadString を利用していた時の動作
PartsA_C3D::ImportTxt より PartsA::SerializeTxt が呼ばれる.
PACnv3.exe!PartsA::SerializeTxt(CArchive & ar={…}) 行 464
PACnv3.exe!PartsA::Serialize(CArchive & ar={…}) 行 361
PACnv3.exe!PartsA_C3D::ImportTxt(… * pathName) 行 336
PACnv3.exe!PartsA_C3D::Import(… * pathName) 行 137
PACnv3.exe!CPACnv3Doc::OnOpenDocument(… * lpszPathName) 行 177
PartsA_C3D::ImportTxt で,exe と ipx の種類により,ReadString で読める形式でコピーする.
FileMBWC.hxx GetReadTextName により,
UNICODE.exe の場合,UTF-16 のテキストファイルにコピーする.
PartsA::Serialize を呼出す前には,BOM を読み飛ばした位置にポインタがある.
FileMBWC.hxx SerializeTextBOM(ar) により,UNICODE.exe の場合に飛ばす.
* PartsA_C3D を利用してない exe では,形式が異なるファイルは読み出せなかった.
VxxxxV などの exe は,PartsA::Serialize としているのでこれにあたる.
ReadString を利用しない様にしたので,PartsA_C3D::ImportTxt は,シンプルになった.
BOOL PartsA_C3D::ImportTxt (LPCTSTR pathName)
{
if (!PartsA::IsTextFile(pathName)) { return FALSE ; }
CString str ;
if (!::LoadText(pathName,str)) { return FALSE ; }
return PartsA::ImportTxt(str) ;
}