<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>I&#39;m with a doubt about text on screen</title>
		<link>http://www.allegro.cc/forums/view/607432</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 28 May 2011 20:58:02 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m making a map editor and will have two options, one to edit an existing map and another to create a new map.<br />Assuming that the person choose &quot;new map&quot;, he&#39;ll have to type the name of the map, as I do so that it can enter text on the screen?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jefferson Almeida)</author>
		<pubDate>Wed, 25 May 2011 23:32:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A4 or A5 ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Thu, 26 May 2011 00:16:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>oh sorry, A5 friend!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jefferson Almeida)</author>
		<pubDate>Thu, 26 May 2011 00:24:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>

Here&#39;s some code I wrote for the same purpose :-</p><p>You need to pass </p><p>1) an ALLEGRO_DISPLAY * - one you&#39;ve created with al_create_display of course.</p><p>2) an ALLEGRO_EVENT_QUEUE * - one you&#39;ve attached the keyboard and display to .</p><p>3) a char * that points to some memory - this where the filename gets stored.</p><p>so have something like : </p><p>char filename[MAX_LENGTH_FOR_FILENAME_STRING] = &quot;&quot;;       .. in the caller</p><p>4) as you can see - there&#39;s two fonts but you could adapt it to be simpler and use just one font - in my example the fonts are true type fonts.</p><p>The WHITE and DARK_RED etc... are</p><p>#define WHITE al_map_rgb(255, 255, 255) </p><p>Loose the #include &lt;feature_representations.h&gt; line but make sure you replace all the symbolic constants with your own - ie MAX_LENGTH_FOR_FRD_STRING, QUIT_DUE_TO_PROBLEM, etc....</p><p>Perhaps you make use of this <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /><img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /> I know it&#39;s a bit an effort just to get a filename but it works here...</p><p>If you want to use it, let me know if you have any problems.. </p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;feature_representations.h&gt;</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="p">#include "helper.h"</span>
<span class="number">   6</span><span class="p">#include "globals.h"</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span>
<span class="number">  10</span>
<span class="number">  11</span><span class="p">#define AAA_B 1</span>
<span class="number">  12</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="k1">int</span> get_filename_screen<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display, <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>q, <span class="k1">char</span> <span class="k3">*</span>filename, <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>big_font, <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>small_font<span class="k2">)</span>
<span class="number">  15</span><span class="k2">{</span>
<span class="number">  16</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number">  17</span>   
<span class="number">  18</span>   <span class="k1">int</span> current_character <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  19</span>   
<span class="number">  20</span>   <span class="k1">int</span> string<span class="k2">[</span>MAX_LENGTH_FOR_FRD_STRING<span class="k2">]</span><span class="k2">;</span>
<span class="number">  21</span>   
<span class="number">  22</span>   <a href="http://www.allegro.cc/manual/al_flush_event_queue"><span class="a">al_flush_event_queue</span></a><span class="k2">(</span>q<span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>   
<span class="number">  24</span>   <span class="k1">int</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">;</span>
<span class="number">  25</span>   
<span class="number">  26</span>   <span class="k1">int</span> shift_key_pressed<span class="k2">;</span>
<span class="number">  27</span>   
<span class="number">  28</span>   <span class="k1">int</span> ascii_value<span class="k2">;</span>
<span class="number">  29</span>   
<span class="number">  30</span>   <span class="k1">if</span><span class="k2">(</span>filename<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> <span class="s">'\0'</span><span class="k2">)</span>
<span class="number">  31</span>   <span class="k2">{</span>
<span class="number">  32</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" get_filename_screen() : string not zeroed.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>      <span class="k1">return</span> QUIT_DUE_TO_PROBLEM<span class="k2">;</span>
<span class="number">  34</span>   <span class="k2">}</span>
<span class="number">  35</span>   
<span class="number">  36</span>   
<span class="number">  37</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span> filename, <span class="s">".frd"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>   
<span class="number">  39</span>   <span class="c">//printf(" in get_filename_screen.\n");</span>
<span class="number">  40</span>   
<span class="number">  41</span>   <span class="k1">do</span>
<span class="number">  42</span>   <span class="k2">{</span>
<span class="number">  43</span>      <span class="k1">if</span><span class="k2">(</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>q<span class="k2">)</span> <span class="k2">)</span>
<span class="number">  44</span>      <span class="k2">{</span>
<span class="number">  45</span>       <span class="k1">while</span><span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_get_next_event"><span class="a">al_get_next_event</span></a><span class="k2">(</span>q, <span class="k3">&amp;</span>event<span class="k2">)</span> <span class="k2">)</span>
<span class="number">  46</span>     <span class="k2">{</span>
<span class="number">  47</span>        <span class="k1">switch</span><span class="k2">(</span> event.type <span class="k2">)</span>
<span class="number">  48</span>      <span class="k2">{</span>
<span class="number">  49</span>         <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number">  50</span>            <span class="k1">return</span> USER_QUIT_PROGRAM<span class="k2">;</span>
<span class="number">  51</span>           
<span class="number">  52</span>         <span class="k1">case</span> ALLEGRO_EVENT_KEY_CHAR:
<span class="number">  53</span>          <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a> <span class="k3">=</span> event.keyboard.keycode<span class="k2">;</span>
<span class="number">  54</span>          
<span class="number">  55</span>          shift_key_pressed <span class="k3">=</span> <span class="k2">(</span>event.keyboard.modifiers <span class="k3">&amp;</span> ALLEGRO_KEYMOD_SHIFT<span class="k2">)</span> ? <span class="n">1</span> <span class="k2">:</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  56</span>      
<span class="number">  57</span>          <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a> <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span>
<span class="number">  58</span>          <span class="k2">{</span>
<span class="number">  59</span>            <span class="k1">return</span> USER_QUIT_PROGRAM<span class="k2">;</span>
<span class="number">  60</span>          <span class="k2">}</span>
<span class="number">  61</span>          <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a> <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_BACKSPACE<span class="k2">)</span>
<span class="number">  62</span>          <span class="k2">{</span>
<span class="number">  63</span>             <span class="k1">if</span><span class="k2">(</span> current_character <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span>
<span class="number">  64</span>           <span class="k2">{</span>
<span class="number">  65</span>              filename<span class="k2">[</span>current_character <span class="k3">-</span> <span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  66</span>            current_character <span class="k3">-</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  67</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span> filename, <span class="s">".frd"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>           <span class="k2">}</span>
<span class="number">  69</span>          <span class="k2">}</span> 
<span class="number">  70</span>          <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> current_character <span class="k3">&lt;</span> MAX_LENGTH_FOR_FRD_STRING <span class="k3">-</span> <span class="n">5</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>ascii_value <span class="k3">=</span> get_ascii_value<span class="k2">(</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a>, shift_key_pressed <span class="k2">)</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span>
<span class="number">  71</span>          <span class="k2">{</span>
<span class="number">  72</span>             <span class="c">//printf(" here %d \n", (int) ascii_value);</span>
<span class="number">  73</span>             filename<span class="k2">[</span> current_character<span class="k3">+</span><span class="k3">+</span> <span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span> ascii_value<span class="k2">;</span>
<span class="number">  74</span>           filename<span class="k2">[</span>current_character<span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  75</span>           <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span> filename, <span class="s">".frd"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>          <span class="k2">}</span>
<span class="number">  77</span>          <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a> <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ENTER <span class="k3">&amp;</span><span class="k3">&amp;</span> current_character <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  78</span>          <span class="k2">{</span>
<span class="number">  79</span>             <span class="k1">return</span> FILENAME_STRING_OKAY<span class="k2">;</span>
<span class="number">  80</span>          <span class="k2">}</span>
<span class="number">  81</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  82</span>            
<span class="number">  83</span>          <span class="k2">}</span>        
<span class="number">  84</span>     
<span class="number">  85</span>     
<span class="number">  86</span>     
<span class="number">  87</span>     
<span class="number">  88</span>     <span class="k2">}</span>
<span class="number">  89</span>     <span class="k2">}</span>
<span class="number">  90</span>
<span class="number">  91</span>   <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span> DARK_RED <span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>   
<span class="number">  93</span>   <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span> big_font, WHITE, <span class="n">100</span>, <span class="n">100</span>, <span class="n">0</span>, <span class="s">"Enter a name for the file."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>   
<span class="number">  95</span>
<span class="number">  96</span>     <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span> small_font, WHITE, <span class="n">100</span>, <span class="n">140</span>, <span class="n">0</span>, <span class="s">"Name for file : %s"</span>, filename<span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>   
<span class="number">  98</span>   <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span> small_font, WHITE, <span class="n">100</span>, <span class="n">200</span>, <span class="n">0</span>, <span class="s">"Press ENTER when filename is finished."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>
<span class="number"> 100</span>
<span class="number"> 101</span>     <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>   
<span class="number"> 103</span>  <span class="k2">}</span> <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>
<span class="number"> 105</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 106</span><span class="k2">}</span>
</div></div><p>


/* EDIT - sorry it&#39;s a lazyish post but I&#39;ve had a long day and I&#39;ve started a glass of wine */</p><p>/* EDIT 2 */</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">int</span> get_ascii_value<span class="k2">(</span><span class="k1">int</span> keycode, <span class="k1">int</span> shift_key<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>   
<span class="number">  4</span>   <span class="k1">if</span><span class="k2">(</span>keycode <span class="k3">&gt;</span><span class="k3">=</span> ALLEGRO_KEY_A <span class="k3">&amp;</span><span class="k3">&amp;</span> keycode <span class="k3">&lt;</span><span class="k3">=</span> ALLEGRO_KEY_Z<span class="k2">)</span>
<span class="number">  5</span>   <span class="k2">{</span>
<span class="number">  6</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" returning %d.\n"</span>, <span class="k2">(</span>keycode <span class="k3">-</span> ALLEGRO_KEY_A <span class="k3">+</span> <span class="n">97</span><span class="k2">)</span> <span class="k3">-</span> shift_key ? <span class="n">32</span> <span class="k2">:</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>      <span class="k1">return</span> <span class="k2">(</span>keycode <span class="k3">-</span> ALLEGRO_KEY_A <span class="k3">+</span> <span class="n">97</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>shift_key ? <span class="n">32</span> <span class="k2">:</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>   <span class="k2">}</span>
<span class="number">  9</span>   
<span class="number"> 10</span>   <span class="k1">if</span><span class="k2">(</span> keycode <span class="k3">&gt;</span><span class="k3">=</span> ALLEGRO_KEY_0 <span class="k3">&amp;</span><span class="k3">&amp;</span> keycode <span class="k3">&lt;</span><span class="k3">=</span> ALLEGRO_KEY_9<span class="k2">)</span>
<span class="number"> 11</span>   <span class="k2">{</span>
<span class="number"> 12</span>      <span class="k1">return</span> keycode <span class="k3">-</span> ALLEGRO_KEY_0 <span class="k3">+</span> <span class="n">48</span><span class="k2">;</span>
<span class="number"> 13</span>   <span class="k2">}</span>
<span class="number"> 14</span>
<span class="number"> 15</span>   <span class="k1">if</span><span class="k2">(</span> keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_MINUS <span class="k2">)</span>
<span class="number"> 16</span>   <span class="k2">{</span>
<span class="number"> 17</span>      <span class="k1">if</span><span class="k2">(</span>shift_key<span class="k2">)</span> <span class="k1">return</span> <span class="s">'_'</span><span class="k2">;</span>
<span class="number"> 18</span>    <span class="k1">else</span>
<span class="number"> 19</span>       <span class="k1">return</span> <span class="s">'-'</span><span class="k2">;</span>
<span class="number"> 20</span>   <span class="k2">}</span>
<span class="number"> 21</span>  
<span class="number"> 22</span>   
<span class="number"> 23</span>   <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 24</span><span class="k2">}</span>
</div></div><p>



Hope I haven&#39;t put you off programming <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Thu, 26 May 2011 00:45:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>edit</p><p>I&#39;m trying to put this code inside of a void, I did some change... That do not worked for now but compile without errors, I think is a good signal! Thanks
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jefferson Almeida)</author>
		<pubDate>Thu, 26 May 2011 02:07:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>just let me know if you&#39;re stuck
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Thu, 26 May 2011 12:53:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, I do not get it to work yet, but I&#39;m packing some things to see. =)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jefferson Almeida)</author>
		<pubDate>Thu, 26 May 2011 23:19:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Since it is not working, post your latest code please.</p><p>Uma vez que não está funcionando, poste seu código mais recente, por favor.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 28 May 2011 08:19:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>edit 1: I changed the MAX_LENGTH_FOR_FRD_STRING, worked with bug</p><p><a href="http://oi56.tinypic.com/2vljkvb.jpg">http://oi56.tinypic.com/2vljkvb.jpg</a></p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>
<span class="number">  2</span><span class="k1">int</span> get_ascii_value<span class="k2">(</span><span class="k1">int</span> keycode, <span class="k1">int</span> shift_key<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  3</span>   <span class="k1">if</span><span class="k2">(</span>keycode <span class="k3">&gt;</span><span class="k3">=</span> ALLEGRO_KEY_A <span class="k3">&amp;</span><span class="k3">&amp;</span> keycode <span class="k3">&lt;</span><span class="k3">=</span> ALLEGRO_KEY_Z<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  4</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" returning %d.\n"</span>, <span class="k2">(</span>keycode <span class="k3">-</span> ALLEGRO_KEY_A <span class="k3">+</span> <span class="n">97</span><span class="k2">)</span> <span class="k3">-</span> shift_key ? <span class="n">32</span> <span class="k2">:</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>      <span class="k1">return</span> <span class="k2">(</span>keycode <span class="k3">-</span> ALLEGRO_KEY_A <span class="k3">+</span> <span class="n">97</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>shift_key ? <span class="n">32</span> <span class="k2">:</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>   <span class="k2">}</span>
<span class="number">  7</span>   <span class="k1">if</span><span class="k2">(</span>keycode <span class="k3">&gt;</span><span class="k3">=</span> ALLEGRO_KEY_0 <span class="k3">&amp;</span><span class="k3">&amp;</span> keycode <span class="k3">&lt;</span><span class="k3">=</span> ALLEGRO_KEY_9<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  8</span>      <span class="k1">return</span> keycode <span class="k3">-</span> ALLEGRO_KEY_0 <span class="k3">+</span> <span class="n">48</span><span class="k2">;</span>
<span class="number">  9</span>   <span class="k2">}</span>
<span class="number"> 10</span>   <span class="k1">if</span><span class="k2">(</span>keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_MINUS<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 11</span>      <span class="k1">if</span><span class="k2">(</span>shift_key<span class="k2">)</span> <span class="k1">return</span> <span class="s">'_'</span><span class="k2">;</span>
<span class="number"> 12</span>      <span class="k1">else</span>
<span class="number"> 13</span>      <span class="k1">return</span> <span class="s">'-'</span><span class="k2">;</span>
<span class="number"> 14</span>   <span class="k2">}</span>
<span class="number"> 15</span><span class="k2">}</span>
<span class="number"> 16</span>
<span class="number"> 17</span><span class="k1">void</span> test<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 18</span>   <span class="k1">int</span> get_filename_screen<span class="k2">;</span>
<span class="number"> 19</span>   <span class="k1">bool</span> quit<span class="k2">;</span>
<span class="number"> 20</span>   <span class="k1">char</span> <span class="k3">*</span>filename<span class="k2">;</span>
<span class="number"> 21</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 22</span>   <span class="k1">int</span> current_character <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 23</span>   <span class="k1">int</span> MAX_LENGTH_FOR_FRD_STRING<span class="k2">;</span>
<span class="number"> 24</span>   <span class="k1">int</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">;</span>
<span class="number"> 25</span>   <span class="k1">int</span> shift_key_pressed<span class="k2">;</span>
<span class="number"> 26</span>   <span class="k1">int</span> ascii_value<span class="k2">;</span>
<span class="number"> 27</span>   <span class="k1">if</span><span class="k2">(</span>filename<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> <span class="s">'\0'</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 28</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" get_filename_screen() : string not zeroed.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>      <span class="c">//return QUIT_DUE_TO_PROBLEM;</span>
<span class="number"> 30</span>   <span class="k2">}</span>
<span class="number"> 31</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>filename, <span class="s">".frd"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span>   <span class="k1">do</span> <span class="k2">{</span>
<span class="number"> 34</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 35</span>      <span class="k1">while</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_next_event"><span class="a">al_get_next_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 36</span>        <span class="k1">switch</span><span class="k2">(</span>ev.type<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 37</span>           <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 38</span>               quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 39</span>               <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 40</span>           <span class="k1">case</span> ALLEGRO_EVENT_KEY_CHAR:
<span class="number"> 41</span>               <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a> <span class="k3">=</span> ev.keyboard.keycode<span class="k2">;</span>
<span class="number"> 42</span>               shift_key_pressed <span class="k3">=</span> <span class="k2">(</span>ev.keyboard.modifiers <span class="k3">&amp;</span> ALLEGRO_KEYMOD_SHIFT<span class="k2">)</span> ? <span class="n">1</span> <span class="k2">:</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 43</span>           <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a> <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 44</span>               quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 45</span>           <span class="k2">}</span>
<span class="number"> 46</span>           <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a> <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_BACKSPACE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 47</span>               <span class="k1">if</span><span class="k2">(</span>current_character <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 48</span>                  filename<span class="k2">[</span>current_character <span class="k3">-</span> <span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 49</span>                  current_character <span class="k3">-</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 50</span>                  <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>filename, <span class="s">".frd"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>               <span class="k2">}</span>
<span class="number"> 52</span>           <span class="k2">}</span>
<span class="number"> 53</span>           <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> current_character <span class="k3">&lt;</span> MAX_LENGTH_FOR_FRD_STRING <span class="k3">-</span> <span class="n">5</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>ascii_value <span class="k3">=</span> get_ascii_value<span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a>, shift_key_pressed<span class="k2">)</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 54</span>             <span class="c">//printf(" here %d \n", (int) ascii_value);</span>
<span class="number"> 55</span>           filename<span class="k2">[</span> current_character<span class="k3">+</span><span class="k3">+</span> <span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span> ascii_value<span class="k2">;</span>
<span class="number"> 56</span>           filename<span class="k2">[</span>current_character<span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 57</span>           <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>filename, <span class="s">".frd"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>          <span class="k2">}</span>
<span class="number"> 59</span>          <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a> <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ENTER <span class="k3">&amp;</span><span class="k3">&amp;</span> current_character <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 60</span>          <span class="k2">}</span>
<span class="number"> 61</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 62</span>          <span class="k2">}</span>
<span class="number"> 63</span>       <span class="k2">}</span>
<span class="number"> 64</span>    <span class="k2">}</span>
<span class="number"> 65</span>    <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 66</span>
<span class="number"> 67</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, WHITE, <span class="n">100</span>, <span class="n">100</span>, <span class="n">0</span>, <span class="s">"Enter a name for the file."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 68</span>    <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, WHITE, <span class="n">100</span>, <span class="n">140</span>, <span class="n">0</span>, <span class="s">"Name for file : %s"</span>, filename<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 69</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, WHITE, <span class="n">100</span>, <span class="n">200</span>, <span class="n">0</span>, <span class="s">"Press ENTER when filename is finished."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 70</span>
<span class="number"> 71</span>    <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 72</span>
<span class="number"> 73</span>  <span class="k2">}</span> <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 74</span>
<span class="number"> 75</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jefferson Almeida)</author>
		<pubDate>Sat, 28 May 2011 08:40:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/607432/918903#target">Jefferson Almeida</a> said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> get_ascii_value<span class="k2">(</span><span class="k1">int</span> keycode, <span class="k1">int</span> shift_key<span class="k2">)</span> <span class="k2">{</span>
   <span class="k1">if</span><span class="k2">(</span>keycode <span class="k3">&gt;</span><span class="k3">=</span> ALLEGRO_KEY_A <span class="k3">&amp;</span><span class="k3">&amp;</span> keycode <span class="k3">&lt;</span><span class="k3">=</span> ALLEGRO_KEY_Z<span class="k2">)</span> <span class="k2">{</span>
      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" returning %d.\n"</span>, <span class="k2">(</span>keycode <span class="k3">-</span> ALLEGRO_KEY_A <span class="k3">+</span> <span class="n">97</span><span class="k2">)</span> <span class="k3">-</span> shift_key ? <span class="n">32</span> <span class="k2">:</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
      <span class="k1">return</span> <span class="k2">(</span>keycode <span class="k3">-</span> ALLEGRO_KEY_A <span class="k3">+</span> <span class="n">97</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>shift_key ? <span class="n">32</span> <span class="k2">:</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k2">}</span>
   <span class="k1">if</span><span class="k2">(</span>keycode <span class="k3">&gt;</span><span class="k3">=</span> ALLEGRO_KEY_0 <span class="k3">&amp;</span><span class="k3">&amp;</span> keycode <span class="k3">&lt;</span><span class="k3">=</span> ALLEGRO_KEY_9<span class="k2">)</span> <span class="k2">{</span>
      <span class="k1">return</span> keycode <span class="k3">-</span> ALLEGRO_KEY_0 <span class="k3">+</span> <span class="n">48</span><span class="k2">;</span>
   <span class="k2">}</span>
   <span class="k1">if</span><span class="k2">(</span>keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_MINUS<span class="k2">)</span> <span class="k2">{</span>
      <span class="k1">if</span><span class="k2">(</span>shift_key<span class="k2">)</span> <span class="k1">return</span> <span class="s">'_'</span><span class="k2">;</span>
      <span class="k1">else</span>
      <span class="k1">return</span> <span class="s">'-'</span><span class="k2">;</span>
   <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div></div><p>

Always compile with the -Wall flag with gcc/MinGW. It would have warned you that get_ascii_value is not returning a value when it should have. You should return -1 after the third &#39;if&#39; statement to indicate it was not a valid character.</p><p>Sempre compile com o &quot;-Wall&quot; sinalizador com gcc / MinGW. Teria avisei que get_ascii_value não está retornando um valor, quando deveria ter. Você deve retornar -1, após o terceiro &#39;if &#39; para indicar que ele não era um caractere válido.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/607432/919231#target">Jefferson Almeida</a> said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> test<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
   <span class="k1">int</span> get_filename_screen<span class="k2">;</span>
   <span class="k1">bool</span> quit<span class="k2">;</span>
<div class="highlight">   <span class="k1">char</span> <span class="k3">*</span>filename<span class="k2">;</span></div>
   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
   <span class="k1">int</span> current_character <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<div class="highlight">   <span class="k1">int</span> MAX_LENGTH_FOR_FRD_STRING<span class="k2">;</span></div>
   <span class="k1">int</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">;</span>
   <span class="k1">int</span> shift_key_pressed<span class="k2">;</span>
   <span class="k1">int</span> ascii_value<span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>

You didn&#39;t allocate memory for filename. You didn&#39;t initialize MAX_LENGTH_FOR_FRD_STRING either.</p><p>Você não alocar memória para o filename. Você não quer inicializar MAX_LENGTH_FOR_FRD_STRING.</p><div class="source-code snippet"><div class="inner"><pre>   <span class="k1">char</span><span class="k3">*</span> filename <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
   <span class="k1">int</span> MAX_LENGTH_FOR_FRD_STRING <span class="k3">=</span> <span class="n">128</span><span class="k2">;</span>

   filename <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k2">(</span>MAX_LENGTH_FOR_FRD_STRING <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span><span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>filename<span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> ERROR<span class="k2">;</span><span class="k2">}</span>
   <a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span>filename , <span class="s">'\0'</span> , MAX_LENGTH_FOR_FRD_STRING <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 28 May 2011 09:57:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks a lot! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jefferson Almeida)</author>
		<pubDate>Sat, 28 May 2011 20:58:02 +0000</pubDate>
	</item>
</rss>
