Long CModelScript::SaveTranslationToFile() { SizeT Length; PTChar pszTransPath; WChar szBuffer[0x1000]; CFileDisk file; SScriptText *pText; if (m_VecTextTranslation.size() == 0) return SCR_ERROR_EMPTY_TRANSLATION_TEXT; pszTransPath = (PTChar)szBuffer; memcpy(pszTransPath, m_ScriptPath.GetBuffer(), (m_ScriptPath.GetLength() + 1) * sizeof(*pszTransPath)); GenerateTranslationFileName(pszTransPath); if (!file.Open(pszTransPath, file.FILE_ACCESS_WRITE, file.FILE_SHAREMODE_READ, file.FILE_CREATE_ALWAYS)) return SCR_ERROR_IO_FAILED_OPEN; Length = BOM_UTF16_LE; if (!file.Write(&Length, 2)) return SCR_ERROR_IO_FAILED_WRITE; Length = m_VecCharNameOriginal.size(); if (Length != 0) { SizeT i; StringW *pCharName; i = Length; Length = wsprintfW(szBuffer, L"@Name="); pCharName = &m_VecCharNameOriginal[0]; do { Length += wsprintfW(szBuffer + Length, L"%s,", pCharName->GetBuffer()); ++pCharName; } while (--i); if (Length != 0) { *(PUInt32)&szBuffer[Length - 1] = 0x000A000D; if (!file.Write(szBuffer, ++Length * sizeof(*szBuffer))) return SCR_ERROR_IO_FAILED_WRITE; } } pText = &m_VecTextTranslation[0]; for (SizeT i = m_VecTextTranslation.size(); i; --i) { Length = wsprintfW( szBuffer, L"@Text=%d,%d,%d,%s\r\n", pText->PhysicalLine, pText->LogicalLine, pText->CharNameIndex, pText->Text); if (!file.Write(szBuffer, Length * sizeof(*szBuffer))) return SCR_ERROR_IO_FAILED_WRITE; ++pText; } return SCR_ERROR_SUCCESS; }
Void Hash::ComputeHash(const StringW& string) { ComputeHash((PCByte)string.GetBuffer(), string.GetSize() * sizeof(WChar)); }
Void SymmetricCipher::Compute(const StringW& string) { Compute((PCByte)string.GetBuffer(), string.GetSize() * sizeof(WChar)); }