<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>gbf.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.15 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center>
<hr><h1>gbf.cpp</h1><div class="fragment"><pre>00001 <font class="keyword">enum</font> TToken {
00002 tokNull, tokEOF, tokHeader, tokContent, tokTail, tokStyle,
00003 tokWord, tokSpace, tokSync, tokControl, tokChar, tokFont};
00004
00005 <font class="keyword">enum</font> TCharacterAttribute { caBold, caSmallCaps, caItalic, caOTQuote, caRed,
00006 caSuperscript, caUnderline, caSubscript};
00007
00008 <font class="comment">// TCharAttribs = set of TCharacterAttribute;</font>
00009
00010
00011 <font class="keyword">struct </font>TBookNameRec {
00012 string Name, Abbr;
00013 <font class="keywordtype">char</font> Num;
00014 }
00015
00016 <font class="keyword">const</font> <font class="keyword">struct </font>TBookNameRec TBookAbbr[116] = {
00017 {<font class="stringliteral">"1 Chronicles"</font>, <font class="stringliteral">"1CH"</font>, 13}, <font class="comment">//0</font>
00018 {<font class="stringliteral">"1 Corinthians"</font>, <font class="stringliteral">"1CO"</font>, 70}, <font class="comment">//1</font>
00019 {<font class="stringliteral">"1 Esdras"</font>, <font class="stringliteral">"1E"</font>, 52}, <font class="comment">//2</font>
00020 {<font class="stringliteral">"1 John"</font>, <font class="stringliteral">"1J"</font>, 86}, <font class="comment">//3</font>
00021 {<font class="stringliteral">"1 Kings"</font>, <font class="stringliteral">"1K"</font>, 11}, <font class="comment">//4</font>
00022 {<font class="stringliteral">"1 Maccabees"</font>, <font class="stringliteral">"1M"</font>, 50}, <font class="comment">//5</font>
00023 {<font class="stringliteral">"1 Peter"</font>, <font class="stringliteral">"1P"</font>, 84}, <font class="comment">//6</font>
00024 {<font class="stringliteral">"1 Samuel"</font>, <font class="stringliteral">"1S"</font>, 9}, <font class="comment">//7</font>
00025 {<font class="stringliteral">"1 Thessalonians"</font>, <font class="stringliteral">"1TH"</font>, 76}, <font class="comment">//8</font>
00026 {<font class="stringliteral">"1 Timothy"</font>, <font class="stringliteral">"1TI"</font>, 78}, <font class="comment">//9</font>
00027 {<font class="stringliteral">"2 Chronicles"</font>, <font class="stringliteral">"2CH"</font>, 14}, <font class="comment">//10</font>
00028 {<font class="stringliteral">"2 Corinthians"</font>, <font class="stringliteral">"2CO"</font>, 71}, <font class="comment">//11</font>
00029 {<font class="stringliteral">"2 Esdras"</font>, <font class="stringliteral">"2E"</font>, 56}, <font class="comment">//12</font>
00030 {<font class="stringliteral">"2 John"</font>, <font class="stringliteral">"2J"</font>, 87}, <font class="comment">//13</font>
00031 {<font class="stringliteral">"2 Kings"</font>, <font class="stringliteral">"2K"</font>, 12}, <font class="comment">//14</font>
00032 {<font class="stringliteral">"2 Maccabees"</font>, <font class="stringliteral">"2M"</font>, 51}, <font class="comment">//15</font>
00033 {<font class="stringliteral">"2 Peter"</font>, <font class="stringliteral">"2P"</font>, 85}, <font class="comment">//16</font>
00034 {<font class="stringliteral">"2 Samuel"</font>, <font class="stringliteral">"2S"</font>, 10}, <font class="comment">//17</font>
00035 {<font class="stringliteral">"2 Thessalonians"</font>, <font class="stringliteral">"2TH"</font>, 77}, <font class="comment">//18</font>
00036 {<font class="stringliteral">"2 Timothy"</font>, <font class="stringliteral">"2TI"</font>, 79}, <font class="comment">//19</font>
00037 {<font class="stringliteral">"3 John"</font>, <font class="stringliteral">"3J"</font>, 88}, <font class="comment">//20</font>
00038 {<font class="stringliteral">"3 Maccabees"</font>, <font class="stringliteral">"3M"</font>, 55}, <font class="comment">//21</font>
00039 {<font class="stringliteral">"4 Maccabees"</font>, <font class="stringliteral">"4M"</font>, 57}, <font class="comment">//22</font>
00040 {<font class="stringliteral">"1 Chronicles"</font>, <font class="stringliteral">"1 CH"</font>, 13}, <font class="comment">//0</font>
00041 {<font class="stringliteral">"1 Corinthians"</font>, <font class="stringliteral">"1 CO"</font>, 70}, <font class="comment">//1</font>
00042 {<font class="stringliteral">"1 Esdras"</font>, <font class="stringliteral">"1 E"</font>, 52}, <font class="comment">//2</font>
00043 {<font class="stringliteral">"1 John"</font>, <font class="stringliteral">"1 J"</font>, 86}, <font class="comment">//3</font>
00044 {<font class="stringliteral">"1 Kings"</font>, <font class="stringliteral">"1 K"</font>, 11}, <font class="comment">//4</font>
00045 {<font class="stringliteral">"1 Maccabees"</font>, <font class="stringliteral">"1 M"</font>, 50}, <font class="comment">//5</font>
00046 {<font class="stringliteral">"1 Peter"</font>, <font class="stringliteral">"1 P"</font>, 84}, <font class="comment">//6</font>
00047 {<font class="stringliteral">"1 Samuel"</font>, <font class="stringliteral">"1 S"</font>, 9}, <font class="comment">//7</font>
00048 {<font class="stringliteral">"1 Thessalonians"</font>, <font class="stringliteral">"1 TH"</font>, 76}, <font class="comment">//8</font>
00049 {<font class="stringliteral">"1 Timothy"</font>, <font class="stringliteral">"1 TI"</font>, 78}, <font class="comment">//9</font>
00050 {<font class="stringliteral">"2 Chronicles"</font>, <font class="stringliteral">"2 CH"</font>, 14}, <font class="comment">//10</font>
00051 {<font class="stringliteral">"2 Corinthians"</font>, <font class="stringliteral">"2 CO"</font>, 71}, <font class="comment">//11</font>
00052 {<font class="stringliteral">"2 Esdras"</font>, <font class="stringliteral">"2 E"</font>, 56}, <font class="comment">//12</font>
00053 {<font class="stringliteral">"2 John"</font>, <font class="stringliteral">"2 J"</font>, 87}, <font class="comment">//13</font>
00054 {<font class="stringliteral">"2 Kings"</font>, <font class="stringliteral">"2 K"</font>, 12}, <font class="comment">//14</font>
00055 {<font class="stringliteral">"2 Maccabees"</font>, <font class="stringliteral">"2 M"</font>, 51}, <font class="comment">//15</font>
00056 {<font class="stringliteral">"2 Peter"</font>, <font class="stringliteral">"2 P"</font>, 85}, <font class="comment">//16</font>
00057 {<font class="stringliteral">"2 Samuel"</font>, <font class="stringliteral">"2 S"</font>, 10}, <font class="comment">//17</font>
00058 {<font class="stringliteral">"2 Thessalonians"</font>, <font class="stringliteral">"2 TH"</font>, 77}, <font class="comment">//18</font>
00059 {<font class="stringliteral">"2 Timothy"</font>, <font class="stringliteral">"2 TI"</font>, 79}, <font class="comment">//19</font>
00060 {<font class="stringliteral">"3 John"</font>, <font class="stringliteral">"3 J"</font>, 88}, <font class="comment">//20</font>
00061 {<font class="stringliteral">"3 Maccabees"</font>, <font class="stringliteral">"3 M"</font>, 55}, <font class="comment">//21</font>
00062 {<font class="stringliteral">"4 Maccabees"</font>, <font class="stringliteral">"4 M"</font>, 57}, <font class="comment">//22</font>
00063 {<font class="stringliteral">"Acts"</font>, <font class="stringliteral">"AC"</font>, 68}, <font class="comment">//23</font>
00064 {<font class="stringliteral">"Amos"</font>, <font class="stringliteral">"AM"</font>, 30}, <font class="comment">//24</font>
00065 {<font class="stringliteral">"Prayer of Asariah and the Song of the Three Jews"</font>, <font class="stringliteral">"AZ"</font>, 47},
00066 {<font class="stringliteral">"Baruch"</font>, <font class="stringliteral">"BA"</font>, 45}, <font class="comment">//26</font>
00067 {<font class="stringliteral">"Bel and the Dragon"</font>,<font class="stringliteral">"BE"</font>, 49}, <font class="comment">//27</font>
00068 {<font class="stringliteral">"Colossians"</font>, <font class="stringliteral">"CO"</font>, 75}, <font class="comment">//28</font>
00069 {<font class="stringliteral">"Daniel"</font>, <font class="stringliteral">"DA"</font>, 27}, <font class="comment">//29</font>
00070 {<font class="stringliteral">"Deuteronomy"</font>, <font class="stringliteral">"DE"</font>, 5}, <font class="comment">//30</font>
00071 {<font class="stringliteral">"Deuteronomy"</font>, <font class="stringliteral">"DT"</font>, 5}, <font class="comment">//31</font>
00072 {<font class="stringliteral">"Ecclesiasties"</font>, <font class="stringliteral">"EC"</font>, 21}, <font class="comment">//32</font>
00073 {<font class="stringliteral">"Esther"</font>, <font class="stringliteral">"ES"</font>, 17}, <font class="comment">//33</font>
00074 {<font class="stringliteral">"Exodus"</font>, <font class="stringliteral">"EX"</font>, 2}, <font class="comment">//34</font>
00075 {<font class="stringliteral">"Ezekiel"</font>, <font class="stringliteral">"EZE"</font>, 26}, <font class="comment">//35</font>
00076 {<font class="stringliteral">"Ezra"</font>, <font class="stringliteral">"EZR"</font>, 15}, <font class="comment">//36</font>
00077 {<font class="stringliteral">"Galatians"</font>, <font class="stringliteral">"GA"</font>, 72}, <font class="comment">//37</font>
00078 {<font class="stringliteral">"Genesis"</font>, <font class="stringliteral">"GE"</font>, 1}, <font class="comment">//38</font>
00079 {<font class="stringliteral">"Genesis"</font>, <font class="stringliteral">"GN"</font>, 1}, <font class="comment">//39</font>
00080 {<font class="stringliteral">"Ephesians"</font>, <font class="stringliteral">"EP"</font>, 73}, <font class="comment">//40</font>
00081 {<font class="stringliteral">"Esther (Greek}"</font>, <font class="stringliteral">"GR"</font>, 42), <font class="comment">//41</font>
00082 {<font class="stringliteral">"Habakkuk"</font>, <font class="stringliteral">"HAB"</font>, 35}, <font class="comment">//42</font>
00083 {<font class="stringliteral">"Haggai"</font>, <font class="stringliteral">"HAG"</font>, 37}, <font class="comment">//43</font>
00084 {<font class="stringliteral">"Hebrews"</font>, <font class="stringliteral">"HE"</font>, 82}, <font class="comment">//44</font>
00085 {<font class="stringliteral">"Hosea"</font>, <font class="stringliteral">"HO"</font>, 28}, <font class="comment">//45</font>
00086 {<font class="stringliteral">"Isaiah"</font>, <font class="stringliteral">"IS"</font>, 23}, <font class="comment">//46</font>
00087 {<font class="stringliteral">"James"</font>, <font class="stringliteral">"JA"</font>, 83}, <font class="comment">//47</font>
00088 {<font class="stringliteral">"Jeremiah"</font>, <font class="stringliteral">"JE"</font>, 24}, <font class="comment">//48</font>
00089 {<font class="stringliteral">"Job"</font>, <font class="stringliteral">"JOB"</font>, 18}, <font class="comment">//49</font>
00090 {<font class="stringliteral">"Joel"</font>, <font class="stringliteral">"JOE"</font>, 29}, <font class="comment">//50</font>
00091 {<font class="stringliteral">"John"</font>, <font class="stringliteral">"JOH"</font>, 67}, <font class="comment">//51</font>
00092 {<font class="stringliteral">"Jonah"</font>, <font class="stringliteral">"JON"</font>, 32}, <font class="comment">//52</font>
00093 {<font class="stringliteral">"Joshua"</font>, <font class="stringliteral">"JOS"</font>, 6}, <font class="comment">//53</font>
00094 {<font class="stringliteral">"Jude"</font>, <font class="stringliteral">"JUDE"</font>, 89}, <font class="comment">//54</font>
00095 {<font class="stringliteral">"Judges"</font>, <font class="stringliteral">"JUDG"</font>, 7}, <font class="comment">//55</font>
00096 {<font class="stringliteral">"Judith"</font>, <font class="stringliteral">"JUDI"</font>, 41}, <font class="comment">//56</font>
00097 {<font class="stringliteral">"Lamentations"</font>, <font class="stringliteral">"LA"</font>, 25}, <font class="comment">//57</font>
00098 {<font class="stringliteral">"Letter of Jeremiah"</font>,Abbr:<font class="stringliteral">"LET"</font>, 46}, <font class="comment">//58</font>
00099 {<font class="stringliteral">"Leviticus"</font>, <font class="stringliteral">"LEV"</font>, 3}, <font class="comment">//59</font>
00100 {<font class="stringliteral">"Luke"</font>, <font class="stringliteral">"LK"</font>, 66}, <font class="comment">//60</font>
00101 {<font class="stringliteral">"Leviticus"</font>, <font class="stringliteral">"LV"</font>, 3}, <font class="comment">//61</font>
00102 {<font class="stringliteral">"Luke"</font>, <font class="stringliteral">"LU"</font>, 66}, <font class="comment">//62</font>
00103 {<font class="stringliteral">"Malachi"</font>, <font class="stringliteral">"MAL"</font>, 39}, <font class="comment">//63</font>
00104 {<font class="stringliteral">"Prayer of Manasseh"</font>,Abbr:<font class="stringliteral">"MAN"</font>, 53}, <font class="comment">//64</font>
00105 {<font class="stringliteral">"Mark"</font>, <font class="stringliteral">"MAR"</font>, 65}, <font class="comment">//65</font>
00106 {<font class="stringliteral">"Matthew"</font>, <font class="stringliteral">"MAT"</font>, 64}, <font class="comment">//66</font>
00107 {<font class="stringliteral">"Micah"</font>, <font class="stringliteral">"MI"</font>, 33}, <font class="comment">//67</font>
00108 {<font class="stringliteral">"Nahum"</font>, <font class="stringliteral">"NA"</font>, 34}, <font class="comment">//68</font>
00109 {<font class="stringliteral">"Nehemiah"</font>, <font class="stringliteral">"NE"</font>, 16}, <font class="comment">//69</font>
00110 {<font class="stringliteral">"Numbers"</font>, <font class="stringliteral">"NU"</font>, 4}, <font class="comment">//70</font>
00111 {<font class="stringliteral">"Obadiah"</font>, <font class="stringliteral">"OB"</font>, 31}, <font class="comment">//71</font>
00112 {<font class="stringliteral">"Psalm 151"</font>, <font class="stringliteral">"P1"</font>, 54}, <font class="comment">//72</font>
00113 {<font class="stringliteral">"Philemon"</font>, <font class="stringliteral">"PHILE"</font>, 81}, <font class="comment">//73</font>
00114 {<font class="stringliteral">"Philippians"</font>, <font class="stringliteral">"PHILI"</font>, 74}, <font class="comment">//74</font>
00115 {<font class="stringliteral">"Philemon"</font>, <font class="stringliteral">"PHM"</font>, 81}, <font class="comment">//75</font>
00116 {<font class="stringliteral">"Philippians"</font>, <font class="stringliteral">"PHP"</font>, 74}, <font class="comment">//76</font>
00117 {<font class="stringliteral">"Proverbs"</font>, <font class="stringliteral">"PR"</font>, 20}, <font class="comment">//77</font>
00118 {<font class="stringliteral">"Psalms"</font>, <font class="stringliteral">"PS"</font>, 19}, <font class="comment">//78</font>
00119 {<font class="stringliteral">"Revelation"</font>, <font class="stringliteral">"RE"</font>, 90}, <font class="comment">//79</font>
00120 {<font class="stringliteral">"Romans"</font>, <font class="stringliteral">"RM"</font>, 69}, <font class="comment">//80</font>
00121 {<font class="stringliteral">"Romans"</font>, <font class="stringliteral">"RO"</font>, 69}, <font class="comment">//81</font>
00122 {<font class="stringliteral">"Ruth"</font>, <font class="stringliteral">"RU"</font>, 8}, <font class="comment">//82</font>
00123 {<font class="stringliteral">"Sirach"</font>, <font class="stringliteral">"SI"</font>, 44}, <font class="comment">//83</font>
00124 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SOL"</font>, 22}, <font class="comment">//84</font>
00125 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SON"</font>, 22}, <font class="comment">//85</font>
00126 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SS"</font>, 22}, <font class="comment">//86</font>
00127 {<font class="stringliteral">"Susanna"</font>, <font class="stringliteral">"SU"</font>, 48}, <font class="comment">//87</font>
00128 {<font class="stringliteral">"Titus"</font>, <font class="stringliteral">"TI"</font>, 80}, <font class="comment">//88</font>
00129 {<font class="stringliteral">"Tobit"</font>, <font class="stringliteral">"TO"</font>, 40}, <font class="comment">//89</font>
00130 {<font class="stringliteral">"Wisdom"</font>, <font class="stringliteral">"WI"</font>, 43}, <font class="comment">//90</font>
00131 {<font class="stringliteral">"Zechariah"</font>, <font class="stringliteral">"ZEC"</font>, 38}, <font class="comment">//91</font>
00132 {<font class="stringliteral">"Zephaniah"</font>, <font class="stringliteral">"ZEP"</font>, 36} <font class="comment">//92</font>
00133 },
00134
00135 string BookFileName[91] = {
00136 <font class="stringliteral">""</font>,<font class="stringliteral">"Genesis"</font>,<font class="stringliteral">"Exodus"</font>,<font class="stringliteral">"Lev"</font>,<font class="stringliteral">"Num"</font>,<font class="stringliteral">"Deut"</font>,<font class="stringliteral">"Joshua"</font>,<font class="stringliteral">"Judges"</font>, <font class="comment">// 0 - 7</font>
00137 <font class="stringliteral">"Ruth"</font>,<font class="stringliteral">"1Sam"</font>,<font class="stringliteral">"2Sam"</font>,<font class="stringliteral">"1Kings"</font>,<font class="stringliteral">"2Kings"</font>,<font class="stringliteral">"1Chron"</font>,<font class="stringliteral">"2Chron"</font>, <font class="comment">// 8 - 14</font>
00138 <font class="stringliteral">"Ezra"</font>,<font class="stringliteral">"Nehemiah"</font>,<font class="stringliteral">"Esther"</font>,<font class="stringliteral">"Job"</font>,<font class="stringliteral">"Psalms"</font>,<font class="stringliteral">"Proverbs"</font>, <font class="comment">// 15-20</font>
00139 <font class="stringliteral">"Eccl"</font>,<font class="stringliteral">"Song"</font>,<font class="stringliteral">"Isaiah"</font>,<font class="stringliteral">"Jeremiah"</font>,<font class="stringliteral">"Lament"</font>,<font class="stringliteral">"Ezekiel"</font>, <font class="comment">// 21-26</font>
00140 <font class="stringliteral">"Daniel"</font>,<font class="stringliteral">"Hosea"</font>,<font class="stringliteral">"Joel"</font>,<font class="stringliteral">"Amos"</font>,<font class="stringliteral">"Obadiah"</font>,<font class="stringliteral">"Jonah"</font>,<font class="stringliteral">"Micah"</font>, <font class="comment">// 27-33</font>
00141 <font class="stringliteral">"Nahum"</font>,<font class="stringliteral">"Habakkuk"</font>,<font class="stringliteral">"Zeph"</font>,<font class="stringliteral">"Haggai"</font>,<font class="stringliteral">"Zech"</font>,<font class="stringliteral">"Malachi"</font>, <font class="comment">// 34-39</font>
00142 <font class="stringliteral">"Tobit"</font>,<font class="stringliteral">"Judith"</font>,<font class="stringliteral">"Esther"</font>,<font class="stringliteral">"Wisdom"</font>,<font class="stringliteral">"Sirach"</font>,<font class="stringliteral">"Baruch"</font>, <font class="comment">// 40-45</font>
00143 <font class="stringliteral">"Let"</font>,<font class="stringliteral">"Azar"</font>,<font class="stringliteral">"Susanna"</font>,<font class="stringliteral">"Bel"</font>,<font class="stringliteral">"1Mac"</font>,<font class="stringliteral">"2Mac"</font>,<font class="stringliteral">"1Esdras"</font>, <font class="comment">// 46-52</font>
00144 <font class="stringliteral">"Man"</font>,<font class="stringliteral">"P1"</font>,<font class="stringliteral">"3Mac"</font>,<font class="stringliteral">"2Esdras"</font>,<font class="stringliteral">"4Mac"</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>, <font class="comment">// 53-63</font>
00145 <font class="stringliteral">"Matthew"</font>,<font class="stringliteral">"Mark"</font>,<font class="stringliteral">"Luke"</font>,<font class="stringliteral">"John"</font>,<font class="stringliteral">"Acts"</font>,<font class="stringliteral">"Romans"</font>,<font class="stringliteral">"1Cor"</font>, <font class="comment">// 64-70</font>
00146 <font class="stringliteral">"2Cor"</font>,<font class="stringliteral">"Gal"</font>,<font class="stringliteral">"Eph"</font>,<font class="stringliteral">"Philip"</font>,<font class="stringliteral">"Col"</font>,<font class="stringliteral">"1Thes"</font>,<font class="stringliteral">"2Thes"</font>,<font class="stringliteral">"1Tim"</font>, <font class="comment">// 71-78</font>
00147 <font class="stringliteral">"2Tim"</font>,<font class="stringliteral">"Titus"</font>,<font class="stringliteral">"Philemon"</font>,<font class="stringliteral">"Hebrews"</font>,<font class="stringliteral">"James"</font>,<font class="stringliteral">"1Peter"</font>, <font class="comment">// 79-84</font>
00148 <font class="stringliteral">"2Peter"</font>,<font class="stringliteral">"1John"</font>,<font class="stringliteral">"2John"</font>,<font class="stringliteral">"3John"</font>,<font class="stringliteral">"Jude"</font>,<font class="stringliteral">"Rev"</font>}; <font class="comment">// 85-90</font>
00149
00150 <font class="keyword">class </font>TReadGBF {
00151 <font class="keyword">private</font>:
00152 FILE *fp;
00153 string FName, TokenLine;
00154 <font class="keywordtype">int</font> TokenPos;
00155 <font class="keywordtype">bool</font> fFileIsOpen, fParagraphEnd, fInTitle, fInPsalmBookTitle, fInHebrewTitle, fInSectionTitle;
00156
00157 <font class="keyword">public</font>:
00158 string sBook, sChapter, sVerse, sMode;
00159 string sContext; <font class="comment">// Last text type (header, body, or tail)</font>
00160 string sTitle; <font class="comment">// Title of this book of the Bible</font>
00161 string sPsalmBookTitle; <font class="comment">// Title of this Psalm book</font>
00162 string sHebrewTitle; <font class="comment">// Psalm Hebrew title</font>
00163 string sSectionTitle; <font class="comment">// Section headings</font>
00164 string sDate;
00165 string sFontName;
00166 <font class="keywordtype">int</font> iTotalWords;
00167 <font class="keywordtype">char</font> chJustification, chDirection;
00168 <font class="keywordtype">bool</font> fIndent, fPoetry;
00169 <font class="keywordtype">int</font> CharAttribs;
00170 <font class="keywordtype">char</font> bBk, bChap, bVs, bWd;
00171
00172 <font class="keywordtype">bool</font> Init(<font class="keyword">const</font> string sFileName);
00173 <font class="keywordtype">void</font> Done();
00174 string GetToken(TToken &TokenKind);
00175 end;
00176
00177 <font class="keyword">class </font>TWriteGBF {
00178 <font class="keyword">private</font>:
00179 F: TextFile;
00180 FName, LineOut: string;
00181 fFileIsOpen: <font class="keywordtype">boolean</font>;
00182 bBk, bChap, bVs, bWd: byte;
00183
00184 <font class="keyword">public</font>
00185
00186 function Init(<font class="keyword">const</font> sFileName: string): boolean;
00187 function Done: <font class="keywordtype">boolean</font>;
00188 procedure Out(<font class="keyword">const</font> s: string);
00189 end;
00190
00191 function isletter(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
00192 function isinword(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
00193 function IsDigit(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
00194 function IsUpper(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
00195 function ConformCase(<font class="keyword">const</font> sPat, sSrc: string): string;
00196 function BookNameToNumber(<font class="keyword">const</font> sBookName: string): byte;
00197
00198 implementation
00199
00200 function isletter(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
00201 begin
00202 <font class="keywordflow">case</font> ch of
00203 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: isletter := <font class="keyword">true</font>;
00204 <font class="charliteral">'a'</font>..<font class="charliteral">'z'</font>: isletter := <font class="keyword">true</font>;
00205 <font class="keywordflow">else</font>
00206 isletter := <font class="keyword">false</font>;
00207 end;
00208 end;
00209
00210 function isinword(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
00211 begin
00212 <font class="keywordflow">case</font> ch of
00213 <font class="charliteral">'-'</font>: isinword := <font class="keyword">true</font>;
00214 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: isinword := <font class="keyword">true</font>;
00215 <font class="charliteral">'a'</font>..<font class="charliteral">'z'</font>: isinword := <font class="keyword">true</font>;
00216 <font class="keywordflow">else</font>
00217 isinword := <font class="keyword">false</font>;
00218 end;
00219 end;
00220
00221 function IsUpper(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
00222 begin
00223 <font class="keywordflow">case</font> ch of
00224 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: IsUpper := <font class="keyword">true</font>;
00225 <font class="keywordflow">else</font>
00226 IsUpper := <font class="keyword">false</font>;
00227 end;
00228 end;
00229
00230 function IsDigit(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
00231 begin
00232 <font class="keywordflow">case</font> ch of
00233 <font class="charliteral">'0'</font>..<font class="charliteral">'9'</font>: IsDigit := <font class="keyword">true</font>;
00234 <font class="keywordflow">else</font>
00235 IsDigit := <font class="keyword">false</font>;
00236 end;
00237 end;
00238
00239
00240 function MatchAbbrev(<font class="keyword">const</font> sName, sAbbrev: string): boolean;
00241 var i: integer;
00242 begin
00243 <font class="keywordflow">if</font> Length(sName) < Length(sAbbrev) then
00244 Result := <font class="keyword">false</font>
00245 <font class="keywordflow">else</font>
00246 Result := <font class="keyword">true</font>;
00247 i := 1;
00248 <font class="keywordflow">while</font> (i <= Length(sAbbrev)) and Result <font class="keywordflow">do</font>
00249 begin
00250 <font class="keywordflow">if</font> UpCase(sName[i]) <> sAbbrev[i] then
00251 Result := <font class="keyword">false</font>;
00252 inc(i);
00253 end;
00254 end;
00255
00256 function BookNameToNumber(<font class="keyword">const</font> sBookName: string): byte;
00257 var i: integer;
00258 begin
00259 Result := 0;
00260 <font class="keywordflow">try</font>
00261 <font class="keywordflow">if</font> IsDigit(sBookName[Length(sBookName)]) and IsDigit(sBookName[1]) then
00262 Result := StrToInt(sBookName);
00263 except
00264 Result := 0;
00265 end;
00266 i := 0;
00267 <font class="keywordflow">while</font> (Result = 0) and (i <= 115) <font class="keywordflow">do</font> <font class="comment">// Yuk! Linear search.</font>
00268 begin
00269 <font class="keywordflow">if</font> MatchAbbrev(sBookName,BookAbbr[i].Abbr) then
00270 begin
00271 Result := BookAbbr[i].Num;
00272 end;
00273 inc(i);
00274 end;
00275 end;
00276
00277 function BookNumberToName(<font class="keyword">const</font> bBookNum: byte): string;
00278 begin
00279 <font class="keywordflow">if</font> bBookNum <= 115 then
00280 Result := BookAbbr[bBookNum].Name
00281 <font class="keywordflow">else</font>
00282 Result := '';
00283 end;
00284
00285 function ConformCase(<font class="keyword">const</font> sPat, sSrc: string): string;
00286 var i: integer;
00287 begin
00288 Result := sSrc;
00289 <font class="keywordflow">if</font> (Length(sPat) > 0) and (Length(sSrc) > 0) then
00290 begin
00291 Result := LowerCase(sSrc);
00292 <font class="keywordflow">if</font> IsUpper(sPat[1]) then
00293 Result[1] := UpCase(Result[1]);
00294 <font class="keywordflow">if</font> (Length(sPat) > 1) and (Length(sSrc) > 1) then
00295 begin
00296 <font class="keywordflow">if</font> IsUpper(sPat[2]) then
00297 begin
00298 <font class="keywordflow">for</font> i := 2 to Length(Result) <font class="keywordflow">do</font>
00299 Result[i] := UpCase(Result[i]);
00300 end;
00301 end;
00302 end;
00303 end;
00304
00305 function TReadGBF.Init(<font class="keyword">const</font> sFileName: string): boolean;
00306 var s: string;
00307 tok: TToken;
00308 begin
00309 <font class="keywordflow">try</font>
00310 fParagraphEnd := <font class="keyword">false</font>;
00311 bBk := 0;
00312 bChap := 0;
00313 bVs := 0;
00314 bWd := 0;
00315 iTotalWords := 0;
00316 FName := sFileName;
00317 Assign(F, FName);
00318 reset(F);
00319 readln(F, TokenLine);
00320 TokenPos := 1;
00321 fFileIsOpen := <font class="keyword">true</font>;
00322 repeat
00323 s := GetToken(tok)
00324 until (tok = tokEOF) or ((tok = tokHeader) and (s[3] = <font class="charliteral">'0'</font>));
00325 Init := <font class="keyword">true</font>;
00326 except
00327 Init := <font class="keyword">false</font>;
00328 fFileIsOpen := <font class="keyword">false</font>;
00329 end
00330 end;
00331
00332 procedure TReadGBF.Done;
00333 begin
00334 <font class="keywordflow">if</font> fFileIsOpen then
00335 begin
00336 closefile(F);
00337 fFileIsOpen := <font class="keyword">false</font>;
00338 end;
00339 end;
00340
00341 function TReadGBF.GetToken(var TokenKind: TToken): string;
00342 var m: integer;
00343 begin
00344 Result := '';
00345 TokenKind := tokNull;
00346 <font class="keywordflow">if</font> TokenPos = 0 then
00347 begin
00348 <font class="keywordflow">if</font> (not fFileIsOpen) or EOF(F) then
00349 TokenKind := tokEOF
00350 <font class="keywordflow">else</font>
00351 begin
00352 ReadLn(F,TokenLine);
00353 TokenPos := 1;
00354 end;
00355 end;
00356 <font class="keywordflow">if</font> TokenKind <> tokEOF then
00357 begin
00358 m := Length(TokenLine);
00359 <font class="keywordflow">if</font> TokenPos > m then
00360 begin
00361 TokenKind := tokSpace;
00362 <font class="keywordflow">if</font> fParagraphEnd then
00363 fParagraphEnd := <font class="keyword">false</font>
00364 <font class="keywordflow">else</font>
00365 Result := <font class="charliteral">' '</font>;
00366 TokenPos := 0;
00367 end
00368 <font class="keywordflow">else</font>
00369 begin
00370 <font class="keywordflow">if</font> (TokenLine[TokenPos] = <font class="charliteral">'<'</font>) then
00371 begin
00372 fParagraphEnd := <font class="keyword">false</font>;
00373 repeat
00374 Result := Result + TokenLine[TokenPos];
00375 inc(TokenPos);
00376 until (TokenLine[TokenPos] = <font class="charliteral">'>'</font>) or (TokenPos > m);
00377 Result := Result + <font class="charliteral">'>'</font>;
00378 inc(TokenPos);
00379 <font class="keywordflow">case</font> result[2] of
00380 <font class="charliteral">'B'</font>: begin <font class="comment">// File body text type</font>
00381 TokenKind := tokContent;
00382 sContext := Result;
00383 end;
00384 <font class="charliteral">'C'</font>: begin <font class="comment">// Special characters</font>
00385 TokenKind := tokControl;
00386 <font class="keywordflow">if</font> (Result[3] = <font class="charliteral">'M'</font>) or (Result[3] = <font class="charliteral">'L'</font>) then
00387 fParagraphEnd := <font class="keyword">true</font>;
00388 end;
00389 <font class="charliteral">'D'</font>: begin <font class="comment">// Direction</font>
00390 TokenKind := tokControl;
00391 chDirection := Result[3];
00392 end;
00393 <font class="charliteral">'H'</font>: begin
00394 TokenKind := tokHeader;
00395 sContext := Result;
00396 end;
00397 <font class="charliteral">'F'</font>: begin <font class="comment">// Font attributes</font>
00398 TokenKind := tokFont;
00399 <font class="keywordflow">case</font> Result[3] of
00400 <font class="charliteral">'B'</font>: CharAttribs := CharAttribs + [caBold];
00401 <font class="charliteral">'C'</font>: CharAttribs := CharAttribs + [caSmallCaps];
00402 <font class="charliteral">'I'</font>: CharAttribs := CharAttribs + [caItalic];
00403 <font class="charliteral">'N'</font>: sFontName := copy(Result,4,Length(Result)-4);
00404 <font class="charliteral">'O'</font>: CharAttribs := CharAttribs + [caOTQuote];
00405 <font class="charliteral">'R'</font>: CharAttribs := CharAttribs + [caRed];
00406 <font class="charliteral">'S'</font>: CharAttribs := CharAttribs + [caSuperscript];
00407 <font class="charliteral">'U'</font>: CharAttribs := CharAttribs + [caUnderline];
00408 <font class="charliteral">'V'</font>: CharAttribs := CharAttribs + [caSubscript];
00409 <font class="charliteral">'b'</font>: CharAttribs := CharAttribs - [caBold];
00410 <font class="charliteral">'c'</font>: CharAttribs := CharAttribs - [caSmallCaps];
00411 <font class="charliteral">'i'</font>: CharAttribs := CharAttribs - [caItalic];
00412 <font class="charliteral">'n'</font>: sFontName := '';
00413 <font class="charliteral">'o'</font>: CharAttribs := CharAttribs - [caOTQuote];
00414 <font class="charliteral">'r'</font>: CharAttribs := CharAttribs - [caRed];
00415 <font class="charliteral">'s'</font>: CharAttribs := CharAttribs - [caSuperscript];
00416 <font class="charliteral">'u'</font>: CharAttribs := CharAttribs - [caUnderline];
00417 <font class="charliteral">'v'</font>: CharAttribs := CharAttribs - [caSubscript];
00418
00419 end;
00420 end;
00421 <font class="charliteral">'J'</font>: begin <font class="comment">// Justification</font>
00422 TokenKind := tokStyle;
00423 chJustification := Result[3];
00424 end;
00425 <font class="charliteral">'P'</font>: begin <font class="comment">// Poetry/prose, indent</font>
00426 TokenKind := tokControl;
00427 <font class="keywordflow">case</font> Result[3] of
00428 <font class="charliteral">'I'</font>: fIndent := <font class="keyword">true</font>;
00429 <font class="charliteral">'P'</font>: fPoetry := <font class="keyword">true</font>;
00430 <font class="charliteral">'i'</font>: fIndent := <font class="keyword">false</font>;
00431 <font class="charliteral">'p'</font>: fPoetry := <font class="keyword">false</font>;
00432 end;
00433 end;
00434 <font class="charliteral">'R'</font>: begin <font class="comment">// References and footnotes</font>
00435 TokenKind := tokControl;
00436 end;
00437 <font class="charliteral">'S'</font>: begin <font class="comment">// sync mark</font>
00438 TokenKind := TokSync;
00439 <font class="keywordflow">case</font> Result[3] of
00440 <font class="charliteral">'B'</font>: begin <font class="comment">// Book</font>
00441 sBook := system.copy(Result, 4, length(Result)-4);
00442 sPsalmBookTitle := '';
00443 <font class="keywordflow">if</font> sBook = '' then
00444 begin
00445 inc(bBk);
00446 sBook := BookNumberToName(bBk);
00447 end
00448 <font class="keywordflow">else</font>
00449 bBk := BookNameToNumber(sBook);
00450 sTitle := sBook;
00451 end;
00452 <font class="charliteral">'C'</font>: begin <font class="comment">//chapter</font>
00453 sChapter := system.copy(Result, 4, length(Result)-4);
00454 <font class="keywordflow">if</font> sChapter = '' then
00455 begin
00456 inc(bChap);
00457 sChapter := IntToStr(bChap);
00458 end
00459 <font class="keywordflow">else</font>
00460 begin
00461 <font class="keywordflow">try</font>
00462 bChap := StrToInt(sChapter);
00463 except
00464 showmessage('Non-numeric chapter: '+sBook+<font class="charliteral">' '</font>+sChapter);
00465 end;
00466 end;
00467 sHebrewTitle := '';
00468 end;
00469 <font class="charliteral">'V'</font>: begin <font class="comment">// Verse</font>
00470 bWd := 0;
00471 sVerse := system.copy(Result, 4, length(Result)-4);
00472 <font class="keywordflow">if</font> sVerse = '' then
00473 begin
00474 inc(bVs);
00475 sVerse := IntToStr(bVs);
00476 end
00477 <font class="keywordflow">else</font>
00478 begin
00479 <font class="keywordflow">try</font>
00480 bVs := StrToInt(sVerse);
00481 except
00482 showmessage('Non-numeric verse: '+sBook+<font class="charliteral">' '</font>+sChapter+<font class="charliteral">':'</font>+sVerse);
00483 end;
00484 end;
00485 end;
00486 <font class="charliteral">'D'</font>: begin <font class="comment">// Date</font>
00487 sDate := system.copy(Result, 3, length(Result)-4);
00488 end;
00489 end;
00490 end;
00491 <font class="charliteral">'T'</font>: begin <font class="comment">// Titles</font>
00492 TokenKind := TokContent;
00493 <font class="keywordflow">case</font> Result[3] of
00494 <font class="charliteral">'B'</font>:
00495 begin
00496 sPsalmBookTitle := '';
00497 fInPsalmBookTitle := <font class="keyword">true</font>;
00498 end;
00499 <font class="charliteral">'b'</font>: fInPsalmBookTitle := <font class="keyword">true</font>;
00500 <font class="charliteral">'H'</font>:
00501 begin
00502 sHebrewTitle := '';
00503 fInHebrewTitle := <font class="keyword">true</font>;
00504 end;
00505 <font class="charliteral">'h'</font>: fInHebrewTitle := <font class="keyword">false</font>;
00506 <font class="charliteral">'S'</font>:
00507 begin
00508 sSectionTitle := '';
00509 fInSectionTitle := <font class="keyword">true</font>;
00510 end;
00511 <font class="charliteral">'s'</font>: fInSectionTitle := <font class="keyword">false</font>;
00512 <font class="charliteral">'T'</font>:
00513 begin
00514 sTitle := '';
00515 fInTitle := <font class="keyword">true</font>;
00516 end;
00517 <font class="charliteral">'t'</font>: fInTitle := <font class="keyword">false</font>;
00518 end;
00519 end;
00520 <font class="charliteral">'Z'</font>: begin <font class="comment">// File tail</font>
00521 TokenKind := tokTail;
00522 sContext := Result;
00523 <font class="keywordflow">if</font> Result[3] = <font class="charliteral">'Z'</font> then
00524 done;
00525 end;
00526 <font class="keywordflow">else</font>
00527 TokenKind := TokControl;
00528
00529 end;
00530 end
00531 <font class="keywordflow">else</font> <font class="keywordflow">if</font> isletter(TokenLine[TokenPos]) then
00532 begin {Word}
00533 fParagraphEnd := <font class="keyword">false</font>;
00534 TokenKind := tokWord;
00535 repeat
00536 Result := Result + TokenLine[TokenPos];
00537 inc(TokenPos);
00538 until (TokenPos > m) or (not isinword(TokenLine[TokenPos]));
00539 inc(bWd);
00540 inc(iTotalWords);
00541 end
00542 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((TokenLine[TokenPos] = <font class="charliteral">' '</font>) or (TokenLine[TokenPos] = #9)) then
00543 begin
00544 fParagraphEnd := <font class="keyword">false</font>;
00545 TokenKind := tokSpace;
00546 Result := Result + TokenLine[TokenPos];
00547 inc(TokenPos);
00548 end
00549 <font class="keywordflow">else</font>
00550 begin
00551 fParagraphEnd := <font class="keyword">false</font>;
00552 TokenKind := tokChar;
00553 Result := Result + TokenLine[TokenPos];
00554 inc(TokenPos);
00555 end
00556 end;
00557 end;
00558 <font class="keywordflow">if</font> ((TokenKind = tokWord) or (TokenKind = tokSpace) or
00559 (TokenKind = tokChar)) then
00560 begin
00561 <font class="keywordflow">if</font> fInTitle then
00562 sTitle := sTitle + Result
00563 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInPsalmBookTitle then
00564 sPsalmBookTitle := sPsalmBookTitle + Result
00565 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInHebrewTitle then
00566 sHebrewTitle := sHebrewTitle + Result
00567 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInSectionTitle then
00568 sSectionTitle := sSectionTitle + Result;
00569 end;
00570 end;
00571
00572 function TWriteGBF.Init(<font class="keyword">const</font> sFileName: string): boolean;
00573 begin
00574 <font class="keywordflow">try</font>
00575 bBk := 0;
00576 bChap := 0;
00577 bVs := 0;
00578 bWd := 0;
00579 LineOut := '';
00580 FName := sFileName;
00581 Assign(F, FName);
00582 filemode := 1;
00583 rewrite(F);
00584 fFileIsOpen := <font class="keyword">true</font>;
00585 Init := <font class="keyword">true</font>;
00586 except
00587 Init := <font class="keyword">false</font>;
00588 fFileIsOpen := <font class="keyword">false</font>;
00589 end
00590 end;
00591
00592 function TWriteGBF.Done: <font class="keywordtype">boolean</font>;
00593 begin
00594 <font class="keywordflow">try</font>
00595 <font class="keywordflow">if</font> fFileIsOpen then
00596 begin
00597 <font class="keywordflow">if</font> LineOut <> '' then
00598 begin
00599 WriteLn(F, LineOut);
00600 LineOut := '';
00601 end;
00602 CloseFile(F);
00603 end;
00604 Done := <font class="keyword">true</font>;
00605 except
00606 Done := <font class="keyword">false</font>;
00607 end;
00608 end;
00609
00610 procedure TWriteGBF.Out(<font class="keyword">const</font> s: string);
00611 var sPrint, sSave, sBook, sChapter, sVerse: string;
00612 i: integer;
00613 b: byte;
00614 begin
00615 <font class="keywordflow">if</font> (Length(s) > 0) and IsLetter(s[1]) then
00616 begin
00617 inc(bWd);
00618 LineOut := LineOut + s;
00619 end
00620 <font class="keywordflow">else</font> <font class="keywordflow">if</font> Length(s) > 3 then
00621 begin
00622 <font class="keywordflow">if</font> (s[1] = <font class="charliteral">'<'</font>) and (s[2] = <font class="charliteral">'S'</font>) then
00623 begin
00624 <font class="keywordflow">case</font> s[3] of
00625 <font class="charliteral">'B'</font>: begin <font class="comment">// Book</font>
00626 sBook := system.copy(s, 4, length(s)-4);
00627 <font class="keywordflow">if</font> sBook = '' then
00628 begin
00629 inc(bBk);
00630 LineOut := LineOut + s;
00631 end
00632 <font class="keywordflow">else</font>
00633 begin
00634 b := bBk;
00635 bBk := BookNameToNumber(sBook);
00636 <font class="keywordflow">if</font> b <> bBk then
00637 LineOut := LineOut + s;
00638 end;
00639 end;
00640 <font class="charliteral">'C'</font>: begin <font class="comment">//chapter</font>
00641 sChapter := system.copy(s, 4, length(s)-4);
00642 <font class="keywordflow">if</font> sChapter = '' then
00643 begin
00644 inc(bChap);
00645 LineOut := LineOut + s;
00646 end
00647 <font class="keywordflow">else</font>
00648 begin
00649 <font class="keywordflow">try</font>
00650 <font class="comment">// b := bChap;</font>
00651 bChap := StrToInt(sChapter);
00652 <font class="comment">// if b <> bChap then</font>
00653 LineOut := LineOut + s;
00654 except
00655 showmessage('Non-numeric chapter: '+sBook+<font class="charliteral">' '</font>+sChapter);
00656 end;
00657 end;
00658 end;
00659 <font class="charliteral">'V'</font>: begin <font class="comment">// Verse</font>
00660 bWd := 0;
00661 sVerse := system.copy(s, 4, length(s)-4);
00662 <font class="keywordflow">if</font> sVerse = '' then
00663 begin
00664 inc(bVs);
00665 LineOut := LineOut + s;
00666 end
00667 <font class="keywordflow">else</font>
00668 begin
00669 <font class="keywordflow">try</font>
00670 <font class="comment">// b := bVs;</font>
00671 bVs := StrToInt(sVerse);
00672 <font class="comment">// if b <> bVs then</font>
00673 LineOut := LineOut + s;
00674 except
00675 showmessage('Non-numeric verse: '+sBook+<font class="charliteral">' '</font>+sChapter+<font class="charliteral">':'</font>+sVerse);
00676 end;
00677 end;
00678 end;
00679 <font class="keywordflow">else</font>
00680 LineOut := LineOut + s;
00681 end
00682 end
00683 <font class="keywordflow">else</font>
00684 LineOut := LineOut + s; <font class="comment">// Not a sync mark</font>
00685 end
00686 <font class="keywordflow">else</font> <font class="comment">// other token, space, or punctuation</font>
00687 LineOut := LineOut + s; <font class="comment">// Length <= 3</font>
00688 <font class="keywordflow">if</font> ((s = '<CM>') or (s = '<CL>')) then
00689 begin
00690 <font class="keywordflow">if</font> (Length(LineOut) > 78) then
00691 begin
00692 i := 78;
00693 <font class="keywordflow">while</font> (i > 0) and (LineOut[i] <> <font class="charliteral">' '</font>) <font class="keywordflow">do</font>
00694 dec(i);
00695 <font class="keywordflow">if</font> i < 1 then
00696 begin
00697 WriteLn(F,LineOut);
00698 LineOut := '';
00699 end
00700 <font class="keywordflow">else</font>
00701 begin
00702 sPrint := system.copy(LineOut,1,i-1);
00703 sSave := system.copy(LineOut,i+1,Length(LineOut)-i);
00704 WriteLn(F,sPrint);
00705 WriteLn(F, sSave);
00706 LineOut := '';
00707 end
00708 end
00709 <font class="keywordflow">else</font>
00710 begin
00711 WriteLn(F, LineOut);
00712 LineOut := '';
00713 end
00714 end
00715 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (Length(LineOut) > 78) then
00716 begin
00717 i := 78;
00718 <font class="keywordflow">while</font> (i > 0) and (LineOut[i] <> <font class="charliteral">' '</font>) <font class="keywordflow">do</font>
00719 dec(i);
00720 <font class="keywordflow">if</font> i < 1 then
00721 begin
00722 WriteLn(F,LineOut);
00723 LineOut := '';
00724 end
00725 <font class="keywordflow">else</font>
00726 begin
00727 sPrint := system.copy(LineOut,1,i-1);
00728 sSave := system.copy(LineOut,i+1,Length(LineOut)-i);
00729 WriteLn(F,sPrint);
00730 LineOut := sSave;
00731 end
00732 end
00733 end;
00734
00735 end.
</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.15 </small></address>
</body>
</html>