bool Dictionaries::addFromFile(std::string* filename)
{
	IDictionaryParser* parser = new DictionaryParser;
	IFileReader* reader = new FileReader;//FIX ME
	IFiledataValidator* validator = new FiledataValidator;

	std::vector<std::string*>* filedata = reader->Read(filename);
	ReturnedData data(filedata);
	bool is_Success = validator->is_valid(&data);
	if (!is_Success)
	{
		delete parser;
		delete reader;//FIX ME
		delete validator;
		return false;
	}
	Dictionaries* dict = parser->pars((filedata));
	InsertDict(dict);

	delete parser;
	delete reader;//FIX ME
	delete validator;

	return true;
}
bool Dictionaries::initFromFile(std::string* filename)
{
	IDictionaryParser* parser = new DictionaryParser;
	IFileReader* reader = new FileReader;//FIX ME
	IFiledataValidator* validator = new FiledataValidator;

	std::vector<std::string*>* filedata = reader->Read(filename);
	ReturnedData data(filedata);
	bool is_Success = validator->is_valid(&data);
	if (!is_Success)
	{
		delete parser;
		delete reader;//FIX ME
		delete validator;
		return false;
	}
	Dictionaries* dict = parser->pars((filedata));
	this->mDictionaries = dict->mDictionaries;
	this->mLanguages = dict->mLanguages;

	delete parser;
	delete reader;//FIX ME
	delete validator;

	dict->ClearData();
	delete dict;
	return true;
}
Beispiel #3
0
//------------------------------------------------------------------------
bool CFileReadSLK::LoadFromFile( const char* pFileName )
//------------------------------------------------------------------------
{
	assert( NULL == m_data );
	assert( NULL == m_column );

	//OutputDebugString(pFileName);
	//OutputDebugString("\n==================================\n");
	IFileReader* fileReader = NULL;
	if( !CreateFileReader( &fileReader ) )
		return false;

	bool isLoadOk = true;
	for( unsigned int i = 0; i < _TSLKValueArray.size(); i++ )
	{
		_TSLKValue* p = _TSLKValueArray[i];
		SAFE_DELETE( p );
	}
	_TSLKValueArray.clear();
	char*	buffer = NULL;
	uInt32	bufferSize = 0;
	if(fileReader)
	{
		if( !(fileReader->OpenFile( pFileName )) )
		{
			isLoadOk = false;
			goto OPEN_FILE_FAIL;
		}
		bufferSize = fileReader->GetSize();
		assert( bufferSize > 0 );
		buffer = new char[bufferSize+1];
		memset( buffer, 0, (bufferSize + 1) * sizeof(char) );
		char tmpBuffer[1024];
		memset( tmpBuffer, 0, 1024 * sizeof(char) );

		char* ptrBuffer = buffer;
		size_t size = fileReader->Read( (void*)tmpBuffer, 1024 );
		assert( "出现异常错误!" && size <= 1024 );
		size_t count = 0;
		while( size > 0 )		
		{
			memcpy( ptrBuffer, tmpBuffer, size );
			ptrBuffer	+= size;
			count		+= size;
			memset( tmpBuffer, 0, 1024 * sizeof(char) );
			size = fileReader->Read( tmpBuffer, 1024 );
			assert( "出现异常错误!" && size <= 1024 );
		}
		assert( "文件大小错误!" && bufferSize == count );
		if( bufferSize != count )
			isLoadOk = false;
		else if( !GetInfoFromMemory( buffer, bufferSize ) )
			isLoadOk = false;

		SAFE_DELETE_ARRAY( buffer );
	}

OPEN_FILE_FAIL:
	if(fileReader)
		fileReader->Close();
	SAFE_DELETE( fileReader );

	for( unsigned int i = 0; i < _TSLKValueArray.size(); i++ )
	{
		_TSLKValue* p = _TSLKValueArray[i];
		SAFE_DELETE( p );
	}
	_TSLKValueArray.clear();

	return isLoadOk;
}