<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>User input</title>
		<link>http://www.allegro.cc/forums/view/283416</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 17 Jul 2003 21:01:12 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Im trying to make a save/load box in my editor but how do i get input from the user so the user can write wich file to load/save
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Hubb the great)</author>
		<pubDate>Thu, 17 Jul 2003 14:39:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m working on a similar thing, I can show you<br />the code when I&#39;ve finished it...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (redMarvin)</author>
		<pubDate>Thu, 17 Jul 2003 14:57:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There is so many ways to do that!<br />One simple way is to use allegro gui functions.<br />Or write your own and take input from key[] or readkey()</p><p>Read the manual and use your imagination!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (psundlin)</author>
		<pubDate>Thu, 17 Jul 2003 14:57:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The most easy way (IMO) would be to use  <a href="http://adime.sourceforge.net/">aDime</a></p><p>It&#39;s pretty easy to use, so you don&#39;t need to bother with the allegro gui.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Thu, 17 Jul 2003 15:10:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This is a real crappy well example and it&#39;s<br />not for long finished and contains at least<br />one bug but as I&#39;m quite new to c++ and<br />allegro this is the best I&#39;ve achieved since<br />my last post:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>    <span class="k1">bool</span> string_is_finished<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td>    <span class="k1">char</span> string<span class="k2">[</span><span class="n">256</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">3</td><td>    <span class="k1">int</span> cursor<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <span class="k1">for</span> <span class="k2">(</span>cursor<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> cursor<span class="k3">&lt;</span><span class="n">255</span><span class="k2">;</span> string<span class="k2">[</span>cursor<span class="k3">+</span><span class="k3">+</span><span class="k2">]</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    cursor<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>string_is_finished<span class="k2">)</span></td></tr><tr><td class="number">7</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>            <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>            <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ENTER<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">11</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>                string_is_finished<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">14</td><td>            <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_BACKSPACE<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>                <span class="k1">if</span> <span class="k2">(</span>cursor&gt;-1<span class="k2">)</span></td></tr><tr><td class="number">17</td><td>                   <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>                   string<span class="k2">[</span>cursor<span class="k2">]</span><span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>                   <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">25</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>                   <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>                   <span class="k1">if</span><span class="k2">(</span>cursor&gt;0<span class="k2">)</span><span class="k2">{</span>cursor--<span class="k2">;</span><span class="k2">}</span></td></tr><tr><td class="number">22</td><td>                   <span class="k2">}</span></td></tr><tr><td class="number">23</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>            <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ENTER<span class="k2">]</span><span class="k3">|</span><span class="k3">|</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_BACKSPACE<span class="k2">]</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">25</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">26</td><td>                string<span class="k2">[</span>cursor<span class="k2">]</span><span class="k3">=</span><a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k3">&amp;</span><span class="n">0xff</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>                cursor<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">29</td><td>            <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>            textout<span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,string,<span class="n">100</span>,<span class="n">50</span>,<span class="n">15</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">32</td><td>        <span class="k2">}</span></td></tr></tbody></table></div></div><p>

btw: if you or another one do improvement on this<br />code, please post it so I can learn/use it...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (redMarvin)</author>
		<pubDate>Thu, 17 Jul 2003 20:14:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
C:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">// edittext.c</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">5</td><td><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> buffer <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>   <span class="k1">char</span>    edittext<span class="k2">[</span><span class="n">128</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>   <span class="k1">int</span>     caret  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>   <span class="c">/* typical Allegro initialization */</span></td></tr><tr><td class="number">11</td><td>   <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>   <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>   <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT, <span class="n">320</span>, <span class="n">240</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>   buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">320</span>, <span class="n">240</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>   <span class="k1">do</span></td></tr><tr><td class="number">18</td><td>   <span class="k2">{</span></td></tr><tr><td class="number">19</td><td>      <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">20</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>         <span class="k1">int</span>  newkey   <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>         <span class="k1">char</span> ASCII    <span class="k3">=</span> newkey <span class="k3">&amp;</span> <span class="n">0xff</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>         <span class="k1">char</span> scancode <span class="k3">=</span> newkey <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td>         <span class="c">/* a character key was pressed; add it to the string */</span></td></tr><tr><td class="number">26</td><td>         <span class="k1">if</span><span class="k2">(</span>ASCII <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">32</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> ASCII <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">126</span><span class="k2">)</span></td></tr><tr><td class="number">27</td><td>         <span class="k2">{</span></td></tr><tr><td class="number">28</td><td>            edittext<span class="k2">[</span>caret<span class="k2">]</span> <span class="k3">=</span> ASCII<span class="k2">;</span></td></tr><tr><td class="number">29</td><td>            caret<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>            edittext<span class="k2">[</span>caret<span class="k2">]</span> <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">32</td><td>         <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>scancode <span class="k3">=</span><span class="k3">=</span> KEY_BACKSPACE<span class="k2">)</span></td></tr><tr><td class="number">33</td><td>         <span class="k2">{</span></td></tr><tr><td class="number">34</td><td>            caret--<span class="k2">;</span></td></tr><tr><td class="number">35</td><td>            edittext<span class="k2">[</span>caret<span class="k2">]</span> <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">37</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">38</td><td>      </td></tr><tr><td class="number">39</td><td>      <span class="c">/* all drawing goes here */</span></td></tr><tr><td class="number">40</td><td>      clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>      textout<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, edittext, <span class="n">0</span>, <span class="n">10</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>      <a href="http://www.allegro.cc/manual/vline" target="_blank"><span class="a">vline</span></a><span class="k2">(</span>buffer, caret <span class="k3">*</span> <span class="n">8</span>, <span class="n">8</span>, <span class="n">18</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">320</span>, <span class="n">240</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>   <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>   </td></tr><tr><td class="number">48</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td><span class="k2">}</span></td></tr><tr><td class="number">52</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

C++:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">// edittext.cpp</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">4</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="p">#define WHITE makecol(255, 255, 255)</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>   <span class="c">// typical Allegro initialization</span></td></tr><tr><td class="number">11</td><td>   <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>   <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>   <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT, <span class="n">320</span>, <span class="n">240</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>   <span class="c">// all variables are here</span></td></tr><tr><td class="number">16</td><td>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">320</span>, <span class="n">240</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// initialize the double buffer</span></td></tr><tr><td class="number">17</td><td>   string  edittext<span class="k2">;</span>                         <span class="c">// an empty string for editting</span></td></tr><tr><td class="number">18</td><td>   string::iterator iter <span class="k3">=</span> edittext.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// string iterator</span></td></tr><tr><td class="number">19</td><td>   <span class="k1">int</span>     caret  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>                       <span class="c">// tracks the text caret</span></td></tr><tr><td class="number">20</td><td>   <span class="k1">bool</span>    insert <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>                    <span class="c">// true of should text be inserted</span></td></tr><tr><td class="number">21</td><td>   </td></tr><tr><td class="number">22</td><td>   <span class="c">// the game loop</span></td></tr><tr><td class="number">23</td><td>   <span class="k1">do</span></td></tr><tr><td class="number">24</td><td>   <span class="k2">{</span></td></tr><tr><td class="number">25</td><td>      <span class="k1">while</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">26</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">27</td><td>         <span class="k1">int</span>  newkey   <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>         <span class="k1">char</span> ASCII    <span class="k3">=</span> newkey <span class="k3">&amp;</span> <span class="n">0xff</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>         <span class="k1">char</span> scancode <span class="k3">=</span> newkey <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td>         <span class="c">// a character key was pressed; add it to the string</span></td></tr><tr><td class="number">32</td><td>         <span class="k1">if</span><span class="k2">(</span>ASCII <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">32</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> ASCII <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">126</span><span class="k2">)</span></td></tr><tr><td class="number">33</td><td>         <span class="k2">{</span></td></tr><tr><td class="number">34</td><td>            <span class="c">// add the new char, inserting or replacing as need be</span></td></tr><tr><td class="number">35</td><td>            <span class="k1">if</span><span class="k2">(</span>insert <span class="k3">|</span><span class="k3">|</span> iter <span class="k3">=</span><span class="k3">=</span> edittext.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">36</td><td>               iter <span class="k3">=</span> edittext.insert<span class="k2">(</span>iter, ASCII<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>            <span class="k1">else</span></td></tr><tr><td class="number">38</td><td>               edittext.replace<span class="k2">(</span>caret, <span class="n">1</span>, <span class="n">1</span>, ASCII<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>            <span class="c">// increment both the caret and the iterator</span></td></tr><tr><td class="number">41</td><td>            caret<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>            iter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">44</td><td>         <span class="c">// some other, "special" key was pressed; handle it here</span></td></tr><tr><td class="number">45</td><td>         <span class="k1">else</span></td></tr><tr><td class="number">46</td><td>            <span class="k1">switch</span><span class="k2">(</span>scancode<span class="k2">)</span></td></tr><tr><td class="number">47</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">48</td><td>               <span class="k1">case</span> KEY_DEL:</td></tr><tr><td class="number">49</td><td>                  <span class="k1">if</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> edittext.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> iter <span class="k3">=</span> edittext.erase<span class="k2">(</span>iter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>               <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td>               <span class="k1">case</span> KEY_BACKSPACE:</td></tr><tr><td class="number">53</td><td>                  <span class="k1">if</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> edittext.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">54</td><td>                  <span class="k2">{</span></td></tr><tr><td class="number">55</td><td>                     caret--<span class="k2">;</span></td></tr><tr><td class="number">56</td><td>                     iter--<span class="k2">;</span></td></tr><tr><td class="number">57</td><td>                     iter <span class="k3">=</span> edittext.erase<span class="k2">(</span>iter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>                  <span class="k2">}</span></td></tr><tr><td class="number">59</td><td>               <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>            </td></tr><tr><td class="number">61</td><td>               <span class="k1">case</span> KEY_RIGHT:</td></tr><tr><td class="number">62</td><td>                  <span class="k1">if</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> edittext.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>   caret<span class="k3">+</span><span class="k3">+</span>, iter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>               <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>            </td></tr><tr><td class="number">65</td><td>               <span class="k1">case</span> KEY_LEFT:</td></tr><tr><td class="number">66</td><td>                  <span class="k1">if</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> edittext.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> caret--, iter--<span class="k2">;</span></td></tr><tr><td class="number">67</td><td>               <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>            </td></tr><tr><td class="number">69</td><td>               <span class="k1">case</span> KEY_INSERT:</td></tr><tr><td class="number">70</td><td>                  <span class="k1">if</span><span class="k2">(</span>insert<span class="k2">)</span> insert <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="k1">else</span> insert <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>               <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>&#160;</td></tr><tr><td class="number">73</td><td>               default:</td></tr><tr><td class="number">74</td><td>&#160;</td></tr><tr><td class="number">75</td><td>               <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">76</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">77</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">78</td><td>      </td></tr><tr><td class="number">79</td><td>      <span class="c">// clear screen</span></td></tr><tr><td class="number">80</td><td>      clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td>      <span class="c">// output the string to the screen</span></td></tr><tr><td class="number">83</td><td>      textout<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, edittext.c_str<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span>, <span class="n">10</span>, WHITE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>&#160;</td></tr><tr><td class="number">85</td><td>      <span class="c">// output some stats using Allegro's printf functions</span></td></tr><tr><td class="number">86</td><td>      textprintf<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,  <span class="n">0</span>, <span class="n">20</span>, WHITE, <span class="s">"length:   %d"</span>, edittext.length<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>      textprintf<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,  <span class="n">0</span>, <span class="n">30</span>, WHITE, <span class="s">"capacity: %d"</span>, edittext.capacity<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>      textprintf<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,  <span class="n">0</span>, <span class="n">40</span>, WHITE, <span class="s">"empty?:   %d"</span>, edittext.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>      <span class="k1">if</span><span class="k2">(</span>insert<span class="k2">)</span></td></tr><tr><td class="number">90</td><td>         textout<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"Inserting"</span>, <span class="n">0</span>, <span class="n">50</span>, WHITE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td>      <span class="k1">else</span></td></tr><tr><td class="number">92</td><td>         textout<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"Replacing"</span>, <span class="n">0</span>, <span class="n">50</span>, WHITE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">93</td><td>&#160;</td></tr><tr><td class="number">94</td><td>      <span class="c">// draw the caret</span></td></tr><tr><td class="number">95</td><td>      <a href="http://www.allegro.cc/manual/vline" target="_blank"><span class="a">vline</span></a><span class="k2">(</span>buffer, caret <span class="k3">*</span> <span class="n">8</span>, <span class="n">8</span>, <span class="n">18</span>, WHITE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td>&#160;</td></tr><tr><td class="number">97</td><td>      <span class="c">// blit to screen</span></td></tr><tr><td class="number">98</td><td>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">320</span>, <span class="n">240</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">99</td><td>&#160;</td></tr><tr><td class="number">100</td><td>   <span class="k2">}</span><span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// end of game loop</span></td></tr><tr><td class="number">101</td><td>   </td></tr><tr><td class="number">102</td><td>   <span class="c">// clean up</span></td></tr><tr><td class="number">103</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td>   <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>   </td></tr><tr><td class="number">106</td><td>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">107</td><td><span class="k2">}</span></td></tr><tr><td class="number">108</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>
The C++ version has some extra functionality, I think (gotta love the string class). <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (23yrold3yrold)</author>
		<pubDate>Thu, 17 Jul 2003 20:36:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm... I smell an AMC library around the corner.  This would make a fairly nice AMC module, so you don&#39;t have to reprogram input all of the time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Carrus85)</author>
		<pubDate>Thu, 17 Jul 2003 20:38:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I see a possible buffer overflow with 23&#39;s C code <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MiquelFire)</author>
		<pubDate>Thu, 17 Jul 2003 20:42:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Yeah. In the C code. Stupid language. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (23yrold3yrold)</author>
		<pubDate>Thu, 17 Jul 2003 20:50:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A simple check to see if you&#39;re at the end of the string buffer is all you need really to prevent it (both the beginning and the end <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />, stick with C++ you! <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MiquelFire)</author>
		<pubDate>Thu, 17 Jul 2003 20:53:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
I know, I know <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> If your game stops gameplay long enough for me to enter 128 characters it probably sucks anyway <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (23yrold3yrold)</author>
		<pubDate>Thu, 17 Jul 2003 20:55:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If only it were that easy to rag on C.</p><p>Typically unless you provide the explicit checks on buffer size that you NEED in C, C++-style code unfortunately usually turns the problem from a buffer overflow exploit/crash into a process that runs and runs until it runs out of memory from a 1GB long string (causing a crash anyway and making the system slow in the process).  One might say that C++ is more dangerous from taking too much data because it just makes the system slow and crashes softly, whereas in C you crash hard and fast and the system moves on.  Although you do prevent root exploits which is the most important of all.</p><p>EDIT: haha 23 I like that line of reasoning!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gillius)</author>
		<pubDate>Thu, 17 Jul 2003 20:55:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Here; is it fixed now? Might as well correct it since I post it a fair bit <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">// edittext.c</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#define BUFFERSIZE 128</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">7</td><td><span class="k2">{</span></td></tr><tr><td class="number">8</td><td>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> buffer <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>   <span class="k1">char</span>    edittext<span class="k2">[</span>BUFFERSIZE<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>   <span class="k1">int</span>     caret  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>   <span class="c">/* typical Allegro initialization */</span></td></tr><tr><td class="number">13</td><td>   <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>   <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>   <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT, <span class="n">320</span>, <span class="n">240</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>   buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">320</span>, <span class="n">240</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td>   <span class="k1">do</span></td></tr><tr><td class="number">20</td><td>   <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>      <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">22</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>         <span class="k1">int</span>  newkey   <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>         <span class="k1">char</span> ASCII    <span class="k3">=</span> newkey <span class="k3">&amp;</span> <span class="n">0xff</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>         <span class="k1">char</span> scancode <span class="k3">=</span> newkey <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>         <span class="c">/* a character key was pressed; add it to the string */</span></td></tr><tr><td class="number">28</td><td>         <span class="k1">if</span><span class="k2">(</span>ASCII <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">32</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> ASCII <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">126</span><span class="k2">)</span></td></tr><tr><td class="number">29</td><td>         <span class="k2">{</span></td></tr><tr><td class="number">30</td><td>        <span class="k1">if</span><span class="k2">(</span>caret <span class="k3">&lt;</span> BUFFERSIZE <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">31</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">32</td><td>          edittext<span class="k2">[</span>caret<span class="k2">]</span> <span class="k3">=</span> ASCII<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>          caret<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>          edittext<span class="k2">[</span>caret<span class="k2">]</span> <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">36</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">37</td><td>         <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>scancode <span class="k3">=</span><span class="k3">=</span> KEY_BACKSPACE<span class="k2">)</span></td></tr><tr><td class="number">38</td><td>         <span class="k2">{</span></td></tr><tr><td class="number">39</td><td>            <span class="k1">if</span> <span class="k2">(</span>caret <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> caret--<span class="k2">;</span></td></tr><tr><td class="number">40</td><td>            edittext<span class="k2">[</span>caret<span class="k2">]</span> <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">42</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">43</td><td>      </td></tr><tr><td class="number">44</td><td>      <span class="c">/* all drawing goes here */</span></td></tr><tr><td class="number">45</td><td>      clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>      textout<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, edittext, <span class="n">0</span>, <span class="n">10</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>      <a href="http://www.allegro.cc/manual/vline" target="_blank"><span class="a">vline</span></a><span class="k2">(</span>buffer, caret <span class="k3">*</span> <span class="n">8</span>, <span class="n">8</span>, <span class="n">18</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">320</span>, <span class="n">240</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">51</td><td>   <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>   </td></tr><tr><td class="number">53</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>&#160;</td></tr><tr><td class="number">55</td><td>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td><span class="k2">}</span></td></tr><tr><td class="number">57</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (23yrold3yrold)</author>
		<pubDate>Thu, 17 Jul 2003 21:01:12 +0000</pubDate>
	</item>
</rss>
