[sword-devel] How do you select verses from a range?

Jari Strand strand_jari at hotmail.com
Fri Dec 15 07:38:39 MST 2006


Troy,

>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: Fri, 15 Dec 2006 04:42:38 -0700
>
>Jari,
>	The way multiple verses are rendered for the user is up to the client
>software, not the engine.  You can decide if you show verse number,
>verse headings, etc.
>

Do you mean that one way would be how you displayed the text for the 
console/terminal using cout << ? That much I do know but thank you for being 
clear!

>	Having said this, there is a Displayer concept in the engine which
>allows you customize they way you want your output to display, associate
>this with a book, then book->setKey(...), then book->Display();  I don't
>have time to write an example for you right now, but if you still have
>trouble in a few days (when the semester is over), I would be happy to
>help you.  In the mean time, see SWDisp.  And for an example you can see
>some of the other frontends, how they implement different types of
>displayers.  Here is the Chapter displayer for BibleCS, which,
>accordingly displays an entire chapter and highlights the current verse:
>
>http://crosswire.org/svn/biblecs/trunk/swdisprtfchap.cpp
>

At the first glance it looks quite compilated. My current solution is like 
this:

const char * BibleObject::getVerse(const char *keyStr)
{
	ListKey result;
	VerseKey parserKey;

	result = parserKey.ParseVerseList(keyStr, parserKey, true);
	result.Persist(true);

	mBible->SetKey(result);

	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/




More information about the sword-devel mailing list