<!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>