[sword-devel] How do you select verses from a range?
Troy A. Griffitts
scribe at crosswire.org
Sat Dec 16 00:36:56 MST 2006
Jari,
Looking at your code again...
> const char * BibleObject::getVerse(const char *keyStr)
> {
> ListKey result;
> VerseKey parserKey;
>
> result = parserKey.ParseVerseList(keyStr, parserKey, true);
> result.Persist(true);
>
> mBible->SetKey(result);
this is illegal. You are telling your mBible to hold on to a locally
scoped ListKey result. As soon as this method is complete, result goes
out of scope and your mBible is holding a reference to invalid memory.
You have a couple options to fix this. You can either move result out
to mResult, or else book->setKey("gen.1.1") just before returning, to
tell book to let go of its persistent key just before it goes out of scope.
Hope this helps,
-Troy.
>
> char* returnBuffer = Con::getReturnBuffer(2024);
> *returnBuffer = 0;
> U32 numCharsInBuffer = 0;
>
> for(*mBible = TOP; !mBible->Error(); (*mBible)++) {
> const char *ns = mBible->StripText();
> U32 strLength = dStrlen(ns);
> if(numCharsInBuffer + strLength >= 2024) {
> // Verse string was too long and was truncated
> break;
> }
>
> dStrcat(returnBuffer,ns);
> numCharsInBuffer += strLength;
>
> }
>
> return returnBuffer;
> }
>
>
> As you can see the result's length is limited. But of course I could and
> should use something like std::string and return that but I just wanted to
> make this in the right way.
>
>
>
>> Hope this helps. Glad you're making progress.
>>
>
> It sure does! Thanks.
>
> It's alright if I can't get a perfect solution for this now that I do have a
> code that works.
>
>
>
>
> May God bless you too Troy.
>
> Jari.
>
>
>> Blessings!
>> -Troy.
>>
>>
>>
>> Jari Strand wrote:
>>> Troy,
>>> thank you for the example, I was finally able to test it and it works
>> good.
>>> But I have one problem, you see when I used to select only one verse I
>> could
>>> return the string that was returned from RenderText() or StripText() but
>> now
>>> that you have to loop in the end in order to get all the strings you
>> can't
>>> just simply return the results from a function. So is there some other
>> way
>>> for this so that I don't have to create a return buffer my self?
>>> Maybe the loop isn't required if you select verse from a one range and
>> not
>>> from two or more like in the example?
>>>
>>> Thanks.
>>>
>>>
>>> Jari.
>>>
>>>> From: "Troy A. Griffitts" <scribe at crosswire.org>
>>>> Reply-To: SWORD Developers' Collaboration Forum
>> <sword-devel at crosswire.org>
>>>> To: SWORD Developers' Collaboration Forum <sword-devel at crosswire.org>
>>>> Subject: Re: [sword-devel] How do you select verses from a range?
>>>> Date: Sun, 10 Dec 2006 13:58:47 -0700
>>>>
>>>> Jari,
>>>> I've added a new example for you:
>>>>
>>>>
>> http://crosswire.org/svn/sword/trunk/examples/cmdline/verserangeparse.cpp
>>>> Please let me know if this does not answer your question.
>>>>
>>>> -Troy.
>>>>
>>>>
>>>>
>>>> Jari Strand wrote:
>>>>> Hi, is there example showing how to select verses within a range? i
>>>> think
>>>>> there was some example but I cannot find it anymore.
>>>>>
>>>>> I only know how to select one verse using setKey("Mat 2:10");
>>>>>
>>>>> Thanks!
>>>>>
>>>>> _________________________________________________________________
>>>>> FREE pop-up blocking with the new MSN Toolbar - get it now!
>>>>> http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>> Instructions to unsubscribe/change your settings at above page
>>>> _______________________________________________
>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>> Instructions to unsubscribe/change your settings at above page
>>> _________________________________________________________________
>>> Express yourself instantly with MSN Messenger! Download today it's FREE!
>>> http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
>>>
>>>
>>> _______________________________________________
>>> sword-devel mailing list: sword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>> Instructions to unsubscribe/change your settings at above page
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>
> _________________________________________________________________
> Express yourself instantly with MSN Messenger! Download today it's FREE!
> http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
>
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
More information about the sword-devel
mailing list