当前位置: 首页>>代码示例>>C++>>正文


C++ wxFile::Tell方法代码示例

本文整理汇总了C++中wxFile::Tell方法的典型用法代码示例。如果您正苦于以下问题:C++ wxFile::Tell方法的具体用法?C++ wxFile::Tell怎么用?C++ wxFile::Tell使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在wxFile的用法示例。


在下文中一共展示了wxFile::Tell方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: importFileStream

/* MemChunk::importFileStream
 * Loads a file (or part of it) from a currently open file stream
 * into the MemChunk
 * Returns false if file couldn't be opened, true otherwise
 *******************************************************************/
bool MemChunk::importFileStream(wxFile& file, uint32_t len)
{
	// Check file
	if (!file.IsOpened())
		return false;

	// Clear current data if it exists
	clear();

	// Get current file position
	uint32_t offset = file.Tell();

	// If length isn't specified or exceeds the file length,
	// only read to the end of the file
	if (offset + len > file.Length() || len == 0)
		len = file.Length() - offset;

	// Setup variables
	size = len;

	// Read the file
	if (size > 0)
	{
		//data = new uint8_t[size];
		if (allocData(size))
			file.Read(data, size);
		else
			return false;
	}

	return true;
}
开发者ID:jmickle66666666,项目名称:SLADE,代码行数:37,代码来源:MemChunk.cpp

示例2: GetFileSizeImpl

static uint GetFileSizeImpl(wxFile& file, const wxString& name)
{
    if (file.IsOpened())
    {
        wxFileOffset pos = file.Tell();
        file.SeekEnd();
        wxFileOffset size = file.Tell();
        file.Seek(pos);
        return size;
    }
    else
    {
        wxFile file2(name, wxFile::read);
        if (!file2.IsOpened())
            return 0;
        file2.SeekEnd();
        return file2.Tell();
    }
}
开发者ID:BackupTheBerlios,项目名称:wxwebcore-svn,代码行数:19,代码来源:KWQFile.cpp

示例3: guGetNextXMLChunk

// -------------------------------------------------------------------------------- //
wxString guGetNextXMLChunk( wxFile &xmlfile, wxFileOffset &CurPos, const char * startstr, const char * endstr, const wxMBConv &conv )
{
    #define XMLREAD_BUFFER_SIZE         10240
    wxString RetVal;
    //wxFileOffset CurPos = xmlfile.Tell();
    CurPos = xmlfile.Tell();
    wxFileOffset StartPos = wxNOT_FOUND;
    wxFileOffset EndPos = wxNOT_FOUND;
    int endstrlen = strlen( endstr );
    char * Buffer = ( char * ) malloc( XMLREAD_BUFFER_SIZE + 1 );
    if( Buffer )
    {
        while( StartPos == wxNOT_FOUND )
        {
            int ReadCount = xmlfile.Read( Buffer, XMLREAD_BUFFER_SIZE );
            if( ReadCount != wxInvalidOffset && ReadCount > 0 )
            {
                Buffer[ ReadCount ] = 0;
            }
            else
            {
                break;
            }
            char * StartString = strstr( Buffer, startstr );
            if( StartString )
            {
                StartPos = CurPos + ( StartString - Buffer );
                break;
            }
            else
            {
                CurPos += ReadCount;
            }
        }

        if( StartPos != wxNOT_FOUND )
        {
            xmlfile.Seek( StartPos );
            CurPos = StartPos;
            while( EndPos == wxNOT_FOUND )
            {
                int ReadCount = xmlfile.Read( Buffer, XMLREAD_BUFFER_SIZE );
                if( ReadCount != wxInvalidOffset && ReadCount > 0 )
                {
                    Buffer[ ReadCount ] = 0;
                }
                else
                {
                    break;
                }
                char * EndString = strstr( Buffer, endstr );
                if( EndString )
                {
                    EndPos = CurPos + ( EndString - Buffer ) + endstrlen;
                    break;
                }
                else
                {
                    // Prevent that </artist was partially included
                    CurPos += ReadCount - endstrlen;
                    xmlfile.Seek( -endstrlen, wxFromCurrent );
                }
            }

            if( EndPos != wxNOT_FOUND )
            {
                //guLogMessage( wxT( "Found From %lli => %lli  (%lli)" ), StartPos, EndPos, EndPos - StartPos );
                int BufferSize = EndPos - StartPos;
                if( BufferSize )
                {
                    char * BufferString = ( char * ) malloc( BufferSize + 1 );
                    if( BufferString )
                    {
                        xmlfile.Seek( StartPos );
                        int ReadCount = xmlfile.Read( BufferString, BufferSize );
                        if( ReadCount != wxInvalidOffset )
                        {
                            BufferString[ ReadCount ] = 0;
                            RetVal = wxString( BufferString, conv );
                            //guLogMessage( wxT( "%i %i" ), BufferSize, ReadCount );
                        }

                        free( BufferString );
                    }
                }
            }
        }

        free( Buffer );
    }


    return RetVal;
}
开发者ID:Hreinnjons,项目名称:guayadeque,代码行数:95,代码来源:Utils.cpp

示例4: WriteMetadata

bool ButcherMetadataFile::WriteMetadata(wxFile &file, ButcherMetadataStorage *storage)
{
    butchermetadata_dataheader_t dataheader;
    butchermetadata_dataitemheader_t dataitemheader;

    ButcherMetadataDataList *curlist;
    ButcherMetadataData *curdata;
    ButcherMetadataData::data_t::const_iterator dataiterator;
    auto_ptr<ButcherMetadataBinary> itembin;

    char buf[BMD_BUF_TEMP_SIZE];
    size_t nRead, nTotal;

    unsigned int listi;
    for (listorder_t::const_iterator i=storage->GetListOrder().begin(); i!=storage->GetListOrder().end(); i++)
    {
        curlist=&storage->Get(*i);

        // items
        for (listi=0; listi<curlist->Count(); listi++)
        {
            // data header begin
            memset(&dataheader, 0, sizeof(dataheader));
            dataheader.kind=BUTCHERMETADATA_KIND_METADATABEGIN;
            strncpy(dataheader.sig, BUTCHERMETADATA_SIG_METADATA, BUTCHERMETADATA_SIG_SIZE);
            dataheader.id=curlist->GetMetadataID();

            file.Write(&dataheader, sizeof(dataheader));

            curdata=&curlist->Get(listi);

            for (dataiterator=curdata->GetData().begin(); dataiterator!=curdata->GetData().end(); dataiterator++)
            {

                // data item header begin
                memset(&dataheader, 0, sizeof(dataheader));
                dataheader.kind=BUTCHERMETADATA_KIND_ITEMBEGIN;
                strncpy(dataheader.sig, BUTCHERMETADATA_SIG_METADATA, BUTCHERMETADATA_SIG_SIZE);
                dataheader.id=dataiterator->first;

                file.Write(&dataheader, sizeof(dataheader));


                // item
                itembin.reset(dataiterator->second->GetData());

                // item header
                memset(&dataitemheader, 0, sizeof(dataitemheader));
                strncpy(dataitemheader.sig, BUTCHERMETADATA_SIG_METADATAITEM, BUTCHERMETADATA_SIG_SIZE);
                dataitemheader.datatype=dataiterator->second->GetDataType();
                if (itembin.get())
                {
                    itembin->SeekI(0, wxFromStart);
                    dataitemheader.datasize=itembin->GetLength();
                }

                file.Write(&dataitemheader, sizeof(dataitemheader));

                // store item position in file
                dataiterator->second->SetPosition(file.Tell(), dataitemheader.datasize);

                // item data
                nTotal=0;
                if (itembin.get())
                {
                    // write item data
                    do
                    {
                        nRead = itembin->Read(buf, WXSIZEOF(buf)).LastRead();
                        if ( nRead )
                        {
                            nTotal+=nRead;
                            file.Write(buf, nRead);
                        }
                    }
                    while ( nRead );
                }
                if (nTotal!=dataitemheader.datasize)
                    throw ButcherException(
                        wxString::Format(_("Data written different than expected (expect: %d - read: %d)."),
                            dataitemheader.datasize, nTotal));

                // free itembin
                itembin.reset(NULL);

                // BINARY item
                if (dataiterator->second->GetDataType()==ButcherMetadataDataItem::DT_BINARY)
                {
/*
                    // set new binary pointing to current file
                    dynamic_cast<ButcherMetadataDataItem_Binary*>(&*(dataiterator->second))->SetBinary(
                        new wxVirtualInputStream(file, dataiterator->second->GetPosition(),
                            dataiterator->second->GetSize())
                    );
*/

                    dynamic_cast<ButcherMetadataDataItem_Binary*>(&*(dataiterator->second))->SetBinary(NULL);
                }

                // METADATA item
//.........这里部分代码省略.........
开发者ID:karuna,项目名称:htmlbutcher,代码行数:101,代码来源:ButcherMetadataFile.cpp

示例5: ReadMetadata

bool ButcherMetadataFile::ReadMetadata(wxFile &file, ButcherMetadataStorage *storage)
{
    butchermetadata_dataheader_t dataheader, dataitemendheader;
    butchermetadata_dataitemheader_t dataitemheader;
    ButcherMetadataDataItem *newitem;
    ButcherMetadataData *curmd=NULL;
    //auto_ptr<char> itemdata;
    size_t n;
    bool started=false, readitemend;

    while (true)
    {
        // data header
        n=file.Read(&dataheader, sizeof(dataheader));

        if (n==0) return false; // no more data
        if (n!=sizeof(dataheader)) do_invalidfile(_("Could not read data header"));

        if (strncmp(dataheader.sig, BUTCHERMETADATA_SIG_METADATA, BUTCHERMETADATA_SIG_SIZE)!=0)
            do_invalidfile(_("Invalid data header signature"));

        switch (dataheader.kind)
        {
        case BUTCHERMETADATA_KIND_METADATABEGIN:
            if (started) // cannot start before ending
                do_invalidfile(_("Metadata error: cannot start before ending"));

            started=true;

            // add metadata to list
            curmd=storage->Get(dataheader.id, true).Add();
            break;
        case BUTCHERMETADATA_KIND_METADATAEND:
            if (!started)
                do_invalidfile(_("Metadata error: cannot end before starting"));
            // metadata was read
            started=false;
            curmd=NULL;
            break;
        case BUTCHERMETADATA_KIND_ITEMBEGIN:
            if (!started)
                do_invalidfile(_("Metadata error: cannot have item outside metadata"));

            // read item
            n=file.Read(&dataitemheader, sizeof(dataitemheader));

            if (n==0) do_invalidfile(_("End of data without metadata end")); // no more data, but not metadataend found
            if (n!=sizeof(dataitemheader)) do_invalidfile(_("Could not read item header"));

            // item header
            if (strncmp(dataitemheader.sig, BUTCHERMETADATA_SIG_METADATAITEM, BUTCHERMETADATA_SIG_SIZE)!=0)
                do_invalidfile(_("Invalid item header"));

            newitem=NULL;
            switch (dataitemheader.datatype)
            {
            case ButcherMetadataDataItem::DT_METADATA:
                newitem=new ButcherMetadataDataItem_Metadata(curmd, dataheader.id, file.Tell(), 0);
                break;
            case ButcherMetadataDataItem::DT_STRING:
                newitem=new ButcherMetadataDataItem_String(curmd, dataheader.id, wxEmptyString, file.Tell(), dataitemheader.datasize);
                break;
            case ButcherMetadataDataItem::DT_INTEGER:
                newitem=new ButcherMetadataDataItem_Integer(curmd, dataheader.id, 0, file.Tell(), dataitemheader.datasize);
                break;
            case ButcherMetadataDataItem::DT_BINARY:
                newitem=new ButcherMetadataDataItem_Binary(curmd, dataheader.id, NULL, file.Tell(), dataitemheader.datasize);
                break;
            default:
                do_invalidfile(_("Invalid item data type"));
                break;
            }
            // read item data
            readitemend=true;
            curmd->Add(newitem);
            if (dataitemheader.datasize>0)
            {
                if (newitem->ReadData())
                {
                    //itemdata=auto_ptr<char>(new char[dataitemheader.datasize]);
#ifndef _MSC_VER
					char itemdata[dataitemheader.datasize];
#else
					auto_ptr<char> itemdata_auto(new char[dataitemheader.datasize]);
					char *itemdata=itemdata_auto.get();
#endif
                    n=file.Read(&*itemdata, dataitemheader.datasize);

                    if (n==0) do_invalidfile(_("End of data while reading item data"));
                    if (n!=dataitemheader.datasize) do_invalidfile(_("Could not read item data"));

                    //newitem->SetData(&*itemdata, dataitemheader.datasize);
                    newitem->SetData(itemdata, dataitemheader.datasize);

                }
                else
                {
                    // skip data
                    file.Seek((wxFileOffset)dataitemheader.datasize, wxFromCurrent);
                }
//.........这里部分代码省略.........
开发者ID:karuna,项目名称:htmlbutcher,代码行数:101,代码来源:ButcherMetadataFile.cpp

示例6: Load

DWORD CNWCFile::Load(wxFile& in, FILE* out, FILELOAD fl)
{
	char buf[64];
	if ( sizeof(szNWCHeader) != in.Read(buf, sizeof(szNWCHeader)) ||
		 memcmp(szNWCHeader, buf, sizeof(szNWCHeader)) != 0 )
	{
		if ( memcmp(szCompressHeader1, buf, sizeof(szCompressHeader1)) == 0 )
		{
			return LoadCompressed(in, out, fl);
		}

		wxFprintf(stderr, _T("invalid szNWCHeader\n"));
		return ERROR_INVALID_DATA;
	}

	if ( !ReadLEShort(in, nVersion) )
	{
		wxFprintf(stderr, _T("unexpected EOF while reading version\n"));
		wxASSERT(false);
		return ERROR_INVALID_DATA;
	}

	if ( IsValidVersion(nVersion) )
	{
		wxFprintf(out, _T("version:%d.%d\n"), nVerMajor, nVerMinor);
	}
	else
	{
		wxFprintf(stderr, _T("unknown version number\n"));
		return ERROR_INVALID_VERSION;
	}

	long nPos = in.Tell();
	char _szHeader2[4] = "\x02\x00\x00";							// implies NUL at last
	if ( !ReadBytes(in, btUnknown2) ||
		 btUnknown2[0] != _szHeader2[0] || btUnknown2[1] != _szHeader2[1] || btUnknown2[3] != _szHeader2[3] )
	{
		//wxFprintf(stderr, "invalid btUnknown2 at 0x%08x\n", nPos);
		//wxASSERT(false);
	}

	if ( btUnknown2[2] == 5 )
	{
		wxFprintf(out, _T("saved by unregistered version\n"));
	}
	else if ( btUnknown2[2] != 0 )
	{
		//wxFprintf(stderr, "invalid btUnknown2 at 0x%08x\n", nPos);
	}

	strUser = LoadStringNULTerminated(in);
	strUnknown1 = LoadStringNULTerminated(in);
	wxFprintf(out, _T("user:'%s', '%s'\n"), strUser.c_str(), strUnknown1.c_str());

	nPos = in.Tell();
	char szHeader3[8] = "\x00\x00\x00\x00\x00\x00\x00";					// implies NUL at last
	if ( sizeof(szHeader3) != in.Read(buf, sizeof(szHeader3)) ||
		 memcmp(szHeader3, buf, sizeof(szHeader3)) != 0 )
	{
		wxFprintf(stderr, _T("invalid btUnknown2 at 0x%08x\n"), nPos);
		//wxASSERT(false);
	}

	short nUnknown4;
	if ( !ReadBytes(in, nUnknown4) )
	{
		wxFprintf(stderr, _T("unexpected EOF while reading\n"));
		wxASSERT(false);
		return ERROR_INVALID_DATA;
	}

	strTitle = LoadStringNULTerminated(in);
	strAuthor = LoadStringNULTerminated(in);
	if ( nVersion >= NWC_Version200 )
		strLyricist = LoadStringNULTerminated(in);
	strCopyright1 = LoadStringNULTerminated(in);
	strCopyright2 = LoadStringNULTerminated(in);
	strComment = LoadStringNULTerminated(in);
	wxFprintf(out, _T("title:'%s'\n"), strTitle.c_str());
	wxFprintf(out, _T("author:'%s'\n"), strAuthor.c_str());
	if ( nVersion >= NWC_Version200 )
		wxFprintf(out, _T("lyricist:'%s'\n"), strLyricist.c_str());
	wxFprintf(out, _T("copyright1:'%s'\n"), strCopyright1.c_str());
	wxFprintf(out, _T("copyright2:'%s'\n"), strCopyright2.c_str());
	wxFprintf(out, _T("comment:'%s'\n"), strComment.c_str());

	nPos = in.Tell();
	char _szReserved5[] = "\x5F\x00\x46\x32\x00";
	bool bResult = ReadBytes(in, chExtendLastSystem) &&
				   ReadBytes(in, chIncreaseNoteSpacing) &&
				   ReadBytes(in, btUnknown3) &&
				   ReadBytes(in, btMeasureNumbers) &&
				   ReadBytes(in, btUnknown4) &&
				   ReadLEShort(in, nMeasureStart);
	if ( !bResult || memcmp(_szReserved5, btUnknown3, sizeof(btUnknown3)) != 0 )
	{
//		wxFprintf(stderr, "invalid szReserved5 at 0x%08x\n", nPos);
//		wxASSERT(false);
//		return ERROR_INVALID_DATA;
	}
//.........这里部分代码省略.........
开发者ID:azmeuk,项目名称:nwc2xml,代码行数:101,代码来源:nwcfile.cpp


注:本文中的wxFile::Tell方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。