[QScintilla] Incremental way of loading a a big file in QScintilla (Very very important)

Roshni Lalwani roshiba81 at gmail.com
Mon Jun 13 13:40:50 BST 2016


A gentle reminder. I am stuck in my problem and your help will he really
helpful

On Sat, Jun 11, 2016 at 4:01 PM, Roshni Lalwani <roshiba81 at gmail.com> wrote:

> If we load the fiile a file in in object of QScintilla  using folllowing
> code
>
>
> Header myEditor.h
>
> class myScintilla: public QScintilla {
>      public readFile();};
> #include  "myEditor.h"void myEditor::readFile() {
>
>    if (FILE* fp = fopen(ofilename.toLatin1(), "r")) {
>     QTextStream ts(fp, QIODevice::ReadOnly);
>     int bufferSize =(1024* 1024)/2;
>     do {
>       QString s = ts.read(bufferSize);
>       append(s);
>     } while(!ts.atEnd());}
>
>
>
> there will be still performance issue while reading large files. It took
> around
>
> 1) 25 seconds to read a file of size 1.5 GB. (Machine cores 4 , 16 GB RAM)
> 2 10 seconds of file of size 512MB (on same machine)
>
> Is there any way we can load the file in QScintilla object incrementally
> based on movement of scrollbar?
>
> There is  ILoader in Scintilla::ScintillaEdit that has the capabilty .
> How Can we have same capability in object of QScintilla  and how Can we
> use ILoader  in object of QScintilla
>
>
> The Scintilla documentation can be found at:
>
> Here’s the basic mechanism to load the source into Scintilla using
> ILoader. dEditorPtr is an instance of Scintilla::ScintillaEdit. lFileSize
> is the size of the source file in bytes.
>
>
>
> char lBuffer[8192];
>
> size_t lCnt;
>
> ILoader *lLoader = (ILoader*) dEditorPtr->createLoader(lFileSize);
>
> FILE* lFP = fopen(ofilename.toLatin1(), “r”);
>
> while (!feof(lFP)) {
>
>    lCnt = fread(lBuffer, 1, sizeof(lBuffer), lFP);
>
>    if (lLoader->AddData(lBuffer, lCnt) != SC_STATUS_OK) {
>
>       // report error
>
>    }
>
> }
>
> dEditorPtr->setDocPointer(lLoader->ConvertToDocument());
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/qscintilla/attachments/20160613/d8632116/attachment.html>


More information about the QScintilla mailing list