<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NeoEGM.com &#187; Programming</title>
	<atom:link href="http://www.neoegm.com/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.neoegm.com</link>
	<description>Knowledge is inside</description>
	<lastBuildDate>Mon, 08 Jul 2024 05:38:01 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.39</generator>
	<item>
		<title>Intelligent Escaper-Unescaper &#8211; Online Unescape and Escape Tool (with URL Parameter Parsing and more)</title>
		<link>http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/</link>
		<comments>http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 05:00:18 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[Online Tools]]></category>
		<category><![CDATA[Anchor]]></category>
		<category><![CDATA[Decode]]></category>
		<category><![CDATA[decodeURI]]></category>
		<category><![CDATA[decodeURIComponent]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Encode]]></category>
		<category><![CDATA[encodeURI]]></category>
		<category><![CDATA[encodeURIComponent]]></category>
		<category><![CDATA[Escape]]></category>
		<category><![CDATA[Force]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Intelligent]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Parameters]]></category>
		<category><![CDATA[Parse]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Unescape]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=1078</guid>
		<description><![CDATA[With this online tool, you can easily escape and unescape strings (among other powerful things, explained below)&#8230; If you want to bookmark it, you may prefer this shorter address: http://www.neoegm.com/software/intelligent-escaper-unescaper/. [Press the right mouse button and select the option offered by your browser to add it to your bookmarks/favorites.] As you can see, there are [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/online-tools/convert-celsius-to-fahrenheit-online/" rel="bookmark" title="Convert Celsius to Fahrenheit Online">Convert Celsius to Fahrenheit Online </a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/google-analytics-visits-notification-tool/" rel="bookmark" title="Google Analytics Visits Notification Tool">Google Analytics Visits Notification Tool </a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/php-random-password-generator/" rel="bookmark" title="PHP random password generator">PHP random password generator </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>With this online tool, you can easily escape and unescape strings (among other powerful things, explained below)&#8230;</p>
<p>If you want to bookmark it, you may prefer this shorter address: <a href="http://www.neoegm.com/software/intelligent-escaper-unescaper/">http://www.neoegm.com/software/intelligent-escaper-unescaper/</a>. [Press the right mouse button and select the option offered by your browser to add it to your bookmarks/favorites.]</p>
<p><script type="text/javascript" src="/scripts/intelligent-escaper-unescaper.js"></script></p>

<div align="center">
<p>
	<textarea name="escape_unescape_text" id="escape_unescape_text" cols="60" rows="10" sytle="width: 500px;"></textarea>
</p>
<p>
	<input type="button" name="Button" id="button" value="Escape" onclick="var field = document.getElementById('escape_unescape_text'); field.value = Escape(field.value);" />
	<input type="button" name="button2" id="button3" value="Escape (Forced)" onclick="var field = document.getElementById('escape_unescape_text'); field.value = Escape(field.value, true);" />
	<input type="button" name="button" id="button2" value="Unescape" style="margin-left: 15px;" onclick="var field = document.getElementById('escape_unescape_text'); field.value = unescape(field.value);" />
	</p>
<p>
	<input type="button" name="button5" id="button6" value="Escape URL" onclick="var field = document.getElementById('escape_unescape_text'); field.value = EscapeURL(field.value);" />
	<input type="button" name="button15" id="button16" value="Escape URL (Forced)" onclick="var field = document.getElementById('escape_unescape_text'); field.value = EscapeURL(field.value, true);" />
	<input type="button" name="button16" id="button17" value="Escape URL (Forced + Host)" onclick="var field = document.getElementById('escape_unescape_text'); field.value = EscapeURL(field.value, true, true);" />
</p>
<p>
	<input type="button" name="button6" id="button7" value="Intelligent Escape" onclick="var field = document.getElementById('escape_unescape_text'); field.value = IntelligentEscape(field.value);" />
	<input type="button" name="button7" id="button8" value="Intelligent Unescape" style="margin-left: 15px;" onclick="var field = document.getElementById('escape_unescape_text'); field.value = IntelligentUnescape(field.value);" />
</p>
<p>
	<input type="button" name="button3" id="button4" value="Parse URL Parameters" onclick="var field = document.getElementById('escape_unescape_text'); field.value = ParseURLParameters(field.value);" />
	<input type="button" name="button4" id="button5" value="Make URL with Parameters" style="margin-left: 15px;" onclick="var field = document.getElementById('escape_unescape_text'); field.value = MakeURLWithParameters(field.value);" />
	</p>
<p>
	<input type="button" name="button8" id="button9" value="Escape +" onclick="var field = document.getElementById('escape_unescape_text'); field.value = EscapeChar(field.value, '+');" />
	<input type="button" name="button13" id="button14" value="Escape #" onclick="var field = document.getElementById('escape_unescape_text'); field.value = EscapeChar(field.value, '#');" />
	<input type="button" name="button14" id="button15" value="Escape:" style="margin-left: 15px;" onclick="var field = document.getElementById('escape_unescape_text'); field.value = EscapeChar(field.value, document.getElementById('escape_unescape_char').value);" />
	<input name="escape_unescape_char" type="text" id="escape_unescape_char" value=":" size="1" maxlength="1" />
</p>
<p>
	<input type="button" name="button9" id="button10" value="encodeURI" onclick="var field = document.getElementById('escape_unescape_text'); field.value = encodeURI(field.value);" />
	<input type="button" name="button10" id="button11" value="decodeURI" style="margin-left: 15px;" onclick="var field = document.getElementById('escape_unescape_text'); field.value = decodeURI(field.value);" />
	<br/>
	<input type="button" name="button11" id="button12" value="encodeURIComponent" onclick="var field = document.getElementById('escape_unescape_text'); field.value = encodeURIComponent(field.value);" />
	<input type="button" name="button12" id="button13" value="decodeURIComponent" style="margin-left: 15px;" onclick="var field = document.getElementById('escape_unescape_text'); field.value = decodeURIComponent(field.value);" />
</p>
</div>
<p><span id="more-1078"></span></p>
<p>As you can see, there are several features&#8230; I&#8217;ll explain them one by one&#8230;</p>
<h4>Escape</h4>
<p>Calls the <a href="http://www.w3schools.com/jsref/jsref_escape.asp">escape</a> Javascript function, which encodes the special characters (with some exceptions).</p>
<p>Example:</p>
<pre class="brush: plain; light: true; title: ; notranslate">Hello, this is a test</pre>
<pre class="brush: plain; light: true; title: ; notranslate">Hello%2C%20this%20is%20a%20test</pre>
<h4>Escape (Forced)</h4>
<p>Encodes <strong>every</strong> character, no matter whether it is special or not. Ideal to make the strings not easily readable.</p>
<p>Example:</p>
<pre class="brush: plain; light: true; title: ; notranslate">Hello, this is a test</pre>
<pre class="brush: plain; light: true; title: ; notranslate">%48%65%6C%6C%6F%2C%20%74%68%69%73%20%69%73%20%61%20%74%65%73%74</pre>
<h4>Unescape</h4>
<p>Calls the <a href="http://www.w3schools.com/jsref/jsref_unescape.asp">unescape</a> Javascript function, which decodes every encoded character. (The ones with the form %XX or %uXXXX).</p>
<p>Example 1:</p>
<pre class="brush: plain; light: true; title: ; notranslate">Hello%2C%20this%20is%20a%20test</pre>
<pre class="brush: plain; light: true; title: ; notranslate">Hello, this is a test</pre>
<p>Example 2:</p>
<pre class="brush: plain; light: true; title: ; notranslate">%48%65%6C%6C%6F%2C%20%74%68%69%73%20%69%73%20%61%20%74%65%73%74</pre>
<pre class="brush: plain; light: true; title: ; notranslate">Hello, this is a test</pre>
<h4>Escape URL</h4>
<p>Encodes the special characters, but respecting the URL syntax. It&#8217;s not the same as the &#8220;encodeURI&#8221; option, since this latter one calls the <a href="http://www.w3schools.com/jsref/jsref_encodeURI.asp">encodeURI</a> Javascript function, which does not encode the following characters: </p>
<pre class="brush: plain; light: true; title: ; notranslate">; , / ? : @ &amp; = + $ - _ . ! ~ * ' ( ) #</pre>
<p>While this one just does not encode them where corresponding. Parameters, anchors and Unicode characters are supported&#8230;</p>
<p>Example:</p>
<pre class="brush: plain; light: true; title: ; notranslate">http://www.example.com:84/This is my file named niño: the named place.doc</pre>
<pre class="brush: plain; light: true; title: ; notranslate">http://www.example.com:84/This%20is%20my%20file%20named%20ni%F1o%3A%20the%20named%20place.doc</pre>
<h4>Escape URL (Forced)</h4>
<p>Similar to &#8220;Escape URL&#8221;, but forcing the normal character encoding as much as possible (without including the host). Ideal to make URLs hard to read at first glance.</p>
<p>Example:</p>
<pre class="brush: plain; light: true; title: ; notranslate">http://www.example.com:84/This is my file named niño: the named place.doc</pre>
<pre class="brush: plain; light: true; title: ; notranslate">http://www.example.com:84/%54%68%69%73%20%69%73%20%6D%79%20%66%69%6C%65%20%6E%61%6D%65%64%20%6E%69%F1%6F%3A%20%74%68%65%20%6E%61%6D%65%64%20%70%6C%61%63%65%2E%64%6F%63</pre>
<h4>Escape URL (Forced + Host)</h4>
<p>Similar to &#8220;Escape URL&#8221;, but forcing the normal character encoding as much as possible (host included). Ideal to make URLs hard to read at first glance.</p>
<p><strong>Note:</strong> this syntax is not supported in some browsers.</p>
<p><em>Supported browsers:</em> Internet Explorer, Google Chrome.<br />
<em>Unsupported browsers:</em> Firefox, Lynx.</p>
<p>In the case of Firefox, the string gets decoded correctly (if the URL is valid), but it doesn&#8217;t open, you have to open it again with the decoded address (selecting it and pressing Enter). If the host doesn&#8217;t contain any dot, &#8220;www.&#8221; y &#8220;.com&#8221; al added automatically.</p>
<p>If you have support information for any other browser, please tell me and I&#8217;ll add it.</p>
<p>Ejemplo:</p>
<pre class="brush: plain; light: true; title: ; notranslate">http://www.example.com:84/This is my file named niño: the named place.doc</pre>
<pre class="brush: plain; light: true; title: ; notranslate">http://%77%77%77.%65%78%61%6D%70%6C%65.%63%6F%6D:84/%54%68%69%73%20%69%73%20%6D%79%20%66%69%6C%65%20%6E%61%6D%65%64%20%6E%69%F1%6F%3A%20%74%68%65%20%6E%61%6D%65%64%20%70%6C%61%63%65%2E%64%6F%63</pre>
<h4>Intelligent Escape</h4>
<p>This function is an intelligent version of &#8220;Escape&#8221;. It encodes the corresponding characters, but without re-encoding the already encoded data.</p>
<p>Example:</p>
<pre class="brush: plain; light: true; title: ; notranslate">Partially%22%20encoded%20string. And I added this part.</pre>
<pre class="brush: plain; light: true; title: ; notranslate">Partially%22%20encoded%20string.%20And%20I%20added%20this%20part.</pre>
<p>If we just pressed &#8220;Escape&#8221;, we would have received:</p>
<pre class="brush: plain; light: true; title: ; notranslate">Partially%2522%2520encoded%2520string.%20And%20I%20added%20this%20part.</pre>
<h4>Intelligent Unescape</h4>
<p>Calls the <a href="http://www.w3schools.com/jsref/jsref_unescape.asp">unescape</a> Javascript function repeatedly until there&#8217;s nothing remaining to be decoded. Useful when a string was encoded several times.</p>
<p>Example:</p>
<pre class="brush: plain; light: true; title: ; notranslate">%25%34%38%25%36%35%25%36%43%25%36%43%25%36%46</pre>
<pre class="brush: plain; light: true; title: ; notranslate">Hello</pre>
<p>If we just pressed &#8220;Unescape&#8221;, we would have received:</p>
<pre class="brush: plain; light: true; title: ; notranslate">%48%65%6C%6C%6F</pre>
<h4>Parse URL Parameters</h4>
<p>It breaks a URL into its corresponding parameters. The anchor is left without unescaping in the end.</p>
<p>Example:</p>
<pre class="brush: plain; light: true; title: ; notranslate">http://www.example.com:81/path/path/hello.php?a=3&amp;b=Good%20Morning&amp;c=El%20Ni%F1o#test-anchor</pre>
<pre class="brush: plain; light: true; title: ; notranslate">
http://www.example.com:81/path/path/hello.php

a=3
b=Good Morning
c=El Niño

#test-anchor
</pre>
<h4>Make URL with Parameters</h4>
<p>Reconstructs a URL based in the specified URL + parameters + anchor.</p>
<p>Example:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
http://www.example.com:81/path/path/hello.php

a=3
b=Good Morning
c=El Niño

#test-anchor
</pre>
<pre class="brush: plain; light: true; title: ; notranslate">http://www.example.com:81/path/path/hello.php?a=3&amp;b=Good%20Morning&amp;c=El%20Ni%F1o#test-anchor</pre>
<h4>Escape +</h4>
<p>It encodes the + characters. They are not escaped by the other functions, with the exception of &#8220;Escape (Forced)&#8221;.</p>
<h4>Escape #</h4>
<p>It encodes the # characters. They are not escaped by the other functions, with the exception of &#8220;Escape (Forced)&#8221;.</p>
<h4>Escape: &lt;char&gt;</h4>
<p>It encodes the characters specified in the input box.</p>
<h4>encodeURI</h4>
<p>Calls the <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/encodeURI">encodeURI</a> Javascript function.</p>
<h4>decodeURI</h4>
<p>Calls the <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/decodeURI">decodeURI</a> Javascript function.</p>
<h4>encodeURIComponent</h4>
<p>Calls the <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/encodeURIComponent">encodeURIComponent</a> Javascript function.</p>
<h4>decodeURIComponent</h4>
<p>Calls the <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/decodeURIComponent">decodeURIComponent</a> Javascript function.</p>
<p><br/><br />
<a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">Intelligent Escaper-Unescaper is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<p><br/></p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/intelligent-escaper-unescaper/intelligent-escaper-unescaper.js">Download Source Code v1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/intelligent-escaper-unescaper/Intelligent_Escaper-Unescaper_1.0.zip">Download Local Version v1.0</a></p>
</div>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="unescape online">unescape online</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="url escape online">url escape online</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="DEcodeURIComponent ONLINE">DEcodeURIComponent ONLINE</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="unescaper">unescaper</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="XML unescape online">XML unescape online</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="unescape xml online">unescape xml online</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="decodificar unescape">decodificar unescape</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="url escape tool">url escape tool</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="escape url online">escape url online</a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/" title="intelligent url escaper">intelligent url escaper</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/online-tools/convert-celsius-to-fahrenheit-online/" rel="bookmark" title="Convert Celsius to Fahrenheit Online">Convert Celsius to Fahrenheit Online </a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/google-analytics-visits-notification-tool/" rel="bookmark" title="Google Analytics Visits Notification Tool">Google Analytics Visits Notification Tool </a></li>
<li><a href="http://www.neoegm.com/tech/online-tools/php-random-password-generator/" rel="bookmark" title="PHP random password generator">PHP random password generator </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/online-tools/intelligent-escaper-unescaper-online-unescape-and-escape-tool-with-url-parameter-parsing-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to compile C++ console programs which support special characters (ISO-8859-1)</title>
		<link>http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/</link>
		<comments>http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 05:00:24 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[ASCII]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Charset]]></category>
		<category><![CDATA[Compile]]></category>
		<category><![CDATA[DOS]]></category>
		<category><![CDATA[G++]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[Hard-coded]]></category>
		<category><![CDATA[iconv]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[ISO-8859-1]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[RAD]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Special Characters]]></category>
		<category><![CDATA[Strings]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[wxDev]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=1000</guid>
		<description><![CDATA[The GCC compiler (or G++) does not always work with our source code files just as we would expect it to. This specially happens when there are special characters in our files (the ones with ASCII codes higher than 127). Take the following program as a sample (the strings are written in spanish): Let&#8217;s compile [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>The GCC compiler (or G++) does not always work with our source code files just as we would expect it to. This specially happens when there are special characters in our files (the ones with ASCII codes higher than 127).</p>
<p>Take the following program as a sample (the strings are written in spanish):</p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream&gt;
using std::cout;
using std::cin;
using std::endl;

#include &lt;string&gt;
using std::string;

int main()
{
	string sDummy;

	cout &lt;&lt; &quot;Por favor ingrese su contraseña: &quot;;
	cin &gt;&gt; sDummy;

	cout &lt;&lt; endl;
	cout &lt;&lt; &quot;Su contraseña es inválida, por favor verifíquela e inténtelo nuevamente. Ha ingresado: '&quot; &lt;&lt; sDummy &lt;&lt; &quot;'.&quot; &lt;&lt; endl;

	return 0;
}
</pre>
<p>Let&#8217;s compile it&#8230; </p>

<pre class="console">
g++ TestChars.cpp -o TestChars.exe
</pre>
<p>And execute it&#8230; We can easily imagine the output&#8230; But&#8230; This is what we get:</p>

<pre class="console">
Por favor ingrese su contrase±a: contraseña

Su contrase±a es invßlida, por favor veriffquela e intTntelo nuevamente. Ha ingresado: 'contraseña'.
</pre>
<p>Notice that the string that we&#8217;ve just typed (&#8220;contraseña&#8221;) gets correctly printed, while the ones hard-coded in the program don&#8217;t.</p>
<p>So&#8230; What can we do?</p>
<p>Well, there are some compiler command line parameters ready to help us&#8230; They are the <a href="http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#index-character-set_002c-input-178">finput-charset</a> and <a href="http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#index-fexec_002dcharset-173">fexec-charset</a> command line arguments&#8230;</p>
<p>Both take as additional parameter a <em>charset</em> name from the ones supported by the compiler&#8230;</p>
<p>For the interested ones, here is the output of the charsets supported by the library that GCC uses to make the conversion&#8230; They may not be the same on every system&#8230;</p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">
# iconv --list
The following list contain all the coded character sets known.  This does not necessarily mean that all combinations of these names can be used for the FROM and TO command line parameters.  One coded character set can be listed with several different names (aliases).

437, 500, 500V1, 850, 851, 852, 855, 856, 857, 860, 861, 862, 863, 864, 865, 866, 866NAV, 869, 874, 904, 1026, 1046, 1047, 8859_1, 8859_2, 8859_3, 8859_4, 8859_5, 8859_6, 8859_7, 8859_8, 8859_9, 10646-1:1993, 10646-1:1993/UCS4, ANSI_X3.4-1968, ANSI_X3.4-1986, ANSI_X3.4, ANSI_X3.110-1983, ANSI_X3.110, ARABIC, ARABIC7, ARMSCII-8, ASCII, ASMO-708, ASMO_449, BALTIC, BIG-5, BIG-FIVE, BIG5-HKSCS, BIG5, BIG5HKSCS, BIGFIVE, BRF, BS_4730, CA, CN-BIG5, CN-GB, CN, CP-AR, CP-GR, CP-HU, CP037, CP038, CP273, CP274, CP275, CP278, CP280, CP281, CP282, CP284, CP285, CP290, CP297, CP367, CP420, CP423, CP424, CP437, CP500, CP737, CP775, CP803, CP813, CP819, CP850, CP851, CP852, CP855, CP856, CP857, CP860, CP861, CP862, CP863, CP864, CP865, CP866, CP866NAV, CP868, CP869, CP870, CP871, CP874, CP875, CP880, CP891, CP901, CP902, CP903, CP904, CP905, CP912, CP915, CP916, CP918, CP920, CP921, CP922, CP930, CP932, CP933, CP935, CP936, CP937, CP939, CP949, CP950, CP1004, CP1008, CP1025, CP1026, CP1046, CP1047, CP1070, CP1079, CP1081, CP1084, CP1089, CP1097, CP1112, CP1122, CP1123, CP1124, CP1125, CP1129, CP1130, CP1132, CP1133, CP1137, CP1140, CP1141, CP1142, CP1143, CP1144, CP1145, CP1146, CP1147, CP1148, CP1149, CP1153, CP1154, CP1155, CP1156, CP1157, CP1158, CP1160, CP1161, CP1162, CP1163, CP1164, CP1166, CP1167, CP1250, CP1251, CP1252, CP1253, CP1254, CP1255, CP1256, CP1257, CP1258, CP1282, CP1361, CP1364, CP1371, CP1388, CP1390, CP1399, CP4517, CP4899, CP4909, CP4971, CP5347, CP9030, CP9066, CP9448, CP10007, CP12712, CP16804, CPIBM861, CSA7-1, CSA7-2, CSASCII, CSA_T500-1983, CSA_T500, CSA_Z243.4-1985-1, CSA_Z243.4-1985-2, CSA_Z243.419851, CSA_Z243.419852, CSDECMCS, CSEBCDICATDE, CSEBCDICATDEA, CSEBCDICCAFR, CSEBCDICDKNO, CSEBCDICDKNOA, CSEBCDICES, CSEBCDICESA, CSEBCDICESS, CSEBCDICFISE, CSEBCDICFISEA, CSEBCDICFR, CSEBCDICIT, CSEBCDICPT, CSEBCDICUK, CSEBCDICUS, CSEUCKR, CSEUCPKDFMTJAPANESE, CSGB2312, CSHPROMAN8, CSIBM037, CSIBM038, CSIBM273, CSIBM274, CSIBM275, CSIBM277, CSIBM278, CSIBM280, CSIBM281, CSIBM284, CSIBM285, CSIBM290, CSIBM297, CSIBM420, CSIBM423, CSIBM424, CSIBM500, CSIBM803, CSIBM851, CSIBM855, CSIBM856, CSIBM857, CSIBM860, CSIBM863, CSIBM864, CSIBM865, CSIBM866, CSIBM868, CSIBM869, CSIBM870, CSIBM871, CSIBM880, CSIBM891, CSIBM901, CSIBM902, CSIBM903, CSIBM904, CSIBM905, CSIBM918, CSIBM921, CSIBM922, CSIBM930, CSIBM932, CSIBM933, CSIBM935, CSIBM937, CSIBM939, CSIBM943, CSIBM1008, CSIBM1025, CSIBM1026, CSIBM1097, CSIBM1112, CSIBM1122, CSIBM1123, CSIBM1124, CSIBM1129, CSIBM1130, CSIBM1132, CSIBM1133, CSIBM1137, CSIBM1140, CSIBM1141, CSIBM1142, CSIBM1143, CSIBM1144, CSIBM1145, CSIBM1146, CSIBM1147, CSIBM1148, CSIBM1149, CSIBM1153, CSIBM1154, CSIBM1155, CSIBM1156, CSIBM1157, CSIBM1158, CSIBM1160, CSIBM1161, CSIBM1163, CSIBM1164, CSIBM1166, CSIBM1167, CSIBM1364, CSIBM1371, CSIBM1388, CSIBM1390, CSIBM1399, CSIBM4517, CSIBM4899, CSIBM4909, CSIBM4971, CSIBM5347, CSIBM9030, CSIBM9066, CSIBM9448, CSIBM12712, CSIBM16804, CSIBM11621162, CSISO4UNITEDKINGDOM, CSISO10SWEDISH, CSISO11SWEDISHFORNAMES, CSISO14JISC6220RO, CSISO15ITALIAN, CSISO16PORTUGESE, CSISO17SPANISH, CSISO18GREEK7OLD, CSISO19LATINGREEK, CSISO21GERMAN, CSISO25FRENCH, CSISO27LATINGREEK1, CSISO49INIS, CSISO50INIS8, CSISO51INISCYRILLIC, CSISO58GB1988, CSISO60DANISHNORWEGIAN, CSISO60NORWEGIAN1, CSISO61NORWEGIAN2, CSISO69FRENCH, CSISO84PORTUGUESE2, CSISO85SPANISH2, CSISO86HUNGARIAN, CSISO88GREEK7, CSISO89ASMO449, CSISO90, CSISO92JISC62991984B, CSISO99NAPLPS, CSISO103T618BIT, CSISO111ECMACYRILLIC, CSISO121CANADIAN1, CSISO122CANADIAN2, CSISO139CSN369103, CSISO141JUSIB1002, CSISO143IECP271, CSISO150, CSISO150GREEKCCITT, CSISO151CUBA, CSISO153GOST1976874, CSISO646DANISH, CSISO2022CN, CSISO2022JP, CSISO2022JP2, CSISO2022KR, CSISO2033, CSISO5427CYRILLIC, CSISO5427CYRILLIC1981, CSISO5428GREEK, CSISO10367BOX, CSISOLATIN1, CSISOLATIN2, CSISOLATIN3, CSISOLATIN4, CSISOLATIN5, CSISOLATIN6, CSISOLATINARABIC, CSISOLATINCYRILLIC, CSISOLATINGREEK, CSISOLATINHEBREW, CSKOI8R, CSKSC5636, CSMACINTOSH, CSNATSDANO, CSNATSSEFI, CSN_369103, CSPC8CODEPAGE437, CSPC775BALTIC, CSPC850MULTILINGUAL, CSPC862LATINHEBREW, CSPCP852, CSSHIFTJIS, CSUCS4, CSUNICODE, CSWINDOWS31J, CUBA, CWI-2, CWI, CYRILLIC, DE, DEC-MCS, DEC, DECMCS, DIN_66003, DK, DS2089, DS_2089, E13B, EBCDIC-AT-DE-A, EBCDIC-AT-DE, EBCDIC-BE, EBCDIC-BR, EBCDIC-CA-FR, EBCDIC-CP-AR1, EBCDIC-CP-AR2, EBCDIC-CP-BE, EBCDIC-CP-CA, EBCDIC-CP-CH, EBCDIC-CP-DK, EBCDIC-CP-ES, EBCDIC-CP-FI, EBCDIC-CP-FR, EBCDIC-CP-GB, EBCDIC-CP-GR, EBCDIC-CP-HE, EBCDIC-CP-IS, EBCDIC-CP-IT, EBCDIC-CP-NL, EBCDIC-CP-NO, EBCDIC-CP-ROECE, EBCDIC-CP-SE, EBCDIC-CP-TR, EBCDIC-CP-US, EBCDIC-CP-WT, EBCDIC-CP-YU, EBCDIC-CYRILLIC, EBCDIC-DK-NO-A, EBCDIC-DK-NO, EBCDIC-ES-A, EBCDIC-ES-S, EBCDIC-ES, EBCDIC-FI-SE-A, EBCDIC-FI-SE, EBCDIC-FR, EBCDIC-GREEK, EBCDIC-INT, EBCDIC-INT1, EBCDIC-IS-FRISS, EBCDIC-IT, EBCDIC-JP-E, EBCDIC-JP-KANA, EBCDIC-PT, EBCDIC-UK, EBCDIC-US, EBCDICATDE, EBCDICATDEA, EBCDICCAFR, EBCDICDKNO, EBCDICDKNOA, EBCDICES, EBCDICESA, EBCDICESS, EBCDICFISE, EBCDICFISEA, EBCDICFR, EBCDICISFRISS, EBCDICIT, EBCDICPT, EBCDICUK, EBCDICUS, ECMA-114, ECMA-118, ECMA-128, ECMA-CYRILLIC, ECMACYRILLIC, ELOT_928, ES, ES2, EUC-CN, EUC-JISX0213, EUC-JP-MS, EUC-JP, EUC-KR, EUC-TW, EUCCN, EUCJP-MS, EUCJP-OPEN, EUCJP-WIN, EUCJP, EUCKR, EUCTW, FI, FR, GB, GB2312, GB13000, GB18030, GBK, GB_1988-80, GB_198880, GEORGIAN-ACADEMY, GEORGIAN-PS, GOST_19768-74, GOST_19768, GOST_1976874, GREEK-CCITT, GREEK, GREEK7-OLD, GREEK7, GREEK7OLD, GREEK8, GREEKCCITT, HEBREW, HP-GREEK8, HP-ROMAN8, HP-ROMAN9, HP-THAI8, HP-TURKISH8, HPGREEK8, HPROMAN8, HPROMAN9, HPTHAI8, HPTURKISH8, HU, IBM-803, IBM-856, IBM-901, IBM-902, IBM-921, IBM-922, IBM-930, IBM-932, IBM-933, IBM-935, IBM-937, IBM-939, IBM-943, IBM-1008, IBM-1025, IBM-1046, IBM-1047, IBM-1097, IBM-1112, IBM-1122, IBM-1123, IBM-1124, IBM-1129, IBM-1130, IBM-1132, IBM-1133, IBM-1137, IBM-1140, IBM-1141, IBM-1142, IBM-1143, IBM-1144, IBM-1145, IBM-1146, IBM-1147, IBM-1148, IBM-1149, IBM-1153, IBM-1154, IBM-1155, IBM-1156, IBM-1157, IBM-1158, IBM-1160, IBM-1161, IBM-1162, IBM-1163, IBM-1164, IBM-1166, IBM-1167, IBM-1364, IBM-1371, IBM-1388, IBM-1390, IBM-1399, IBM-4517, IBM-4899, IBM-4909, IBM-4971, IBM-5347, IBM-9030, IBM-9066, IBM-9448, IBM-12712, IBM-16804, IBM037, IBM038, IBM256, IBM273, IBM274, IBM275, IBM277, IBM278, IBM280, IBM281, IBM284, IBM285, IBM290, IBM297, IBM367, IBM420, IBM423, IBM424, IBM437, IBM500, IBM775, IBM803, IBM813, IBM819, IBM848, IBM850, IBM851, IBM852, IBM855, IBM856, IBM857, IBM860, IBM861, IBM862, IBM863, IBM864, IBM865, IBM866, IBM866NAV, IBM868, IBM869, IBM870, IBM871, IBM874, IBM875, IBM880, IBM891, IBM901, IBM902, IBM903, IBM904, IBM905, IBM912, IBM915, IBM916, IBM918, IBM920, IBM921, IBM922, IBM930, IBM932, IBM933, IBM935, IBM937, IBM939, IBM943, IBM1004, IBM1008, IBM1025, IBM1026, IBM1046, IBM1047, IBM1089, IBM1097, IBM1112, IBM1122, IBM1123, IBM1124, IBM1129, IBM1130, IBM1132, IBM1133, IBM1137, IBM1140, IBM1141, IBM1142, IBM1143, IBM1144, IBM1145, IBM1146, IBM1147, IBM1148, IBM1149, IBM1153, IBM1154, IBM1155, IBM1156, IBM1157, IBM1158, IBM1160, IBM1161, IBM1162, IBM1163, IBM1164, IBM1166, IBM1167, IBM1364, IBM1371, IBM1388, IBM1390, IBM1399, IBM4517, IBM4899, IBM4909, IBM4971, IBM5347, IBM9030, IBM9066, IBM9448, IBM12712, IBM16804, IEC_P27-1, IEC_P271, INIS-8, INIS-CYRILLIC, INIS, INIS8, INISCYRILLIC, ISIRI-3342, ISIRI3342, ISO-2022-CN-EXT, ISO-2022-CN, ISO-2022-JP-2, ISO-2022-JP-3, ISO-2022-JP, ISO-2022-KR, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-9E, ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16, ISO-10646, ISO-10646/UCS2, ISO-10646/UCS4, ISO-10646/UTF-8, ISO-10646/UTF8, ISO-CELTIC, ISO-IR-4, ISO-IR-6, ISO-IR-8-1, ISO-IR-9-1, ISO-IR-10, ISO-IR-11, ISO-IR-14, ISO-IR-15, ISO-IR-16, ISO-IR-17, ISO-IR-18, ISO-IR-19, ISO-IR-21, ISO-IR-25, ISO-IR-27, ISO-IR-37, ISO-IR-49, ISO-IR-50, ISO-IR-51, ISO-IR-54, ISO-IR-55, ISO-IR-57, ISO-IR-60, ISO-IR-61, ISO-IR-69, ISO-IR-84, ISO-IR-85, ISO-IR-86, ISO-IR-88, ISO-IR-89, ISO-IR-90, ISO-IR-92, ISO-IR-98, ISO-IR-99, ISO-IR-100, ISO-IR-101, ISO-IR-103, ISO-IR-109, ISO-IR-110, ISO-IR-111, ISO-IR-121, ISO-IR-122, ISO-IR-126, ISO-IR-127, ISO-IR-138, ISO-IR-139, ISO-IR-141, ISO-IR-143, ISO-IR-144, ISO-IR-148, ISO-IR-150, ISO-IR-151, ISO-IR-153, ISO-IR-155, ISO-IR-156, ISO-IR-157, ISO-IR-166, ISO-IR-179, ISO-IR-193, ISO-IR-197, ISO-IR-199, ISO-IR-203, ISO-IR-209, ISO-IR-226, ISO/TR_11548-1, ISO646-CA, ISO646-CA2, ISO646-CN, ISO646-CU, ISO646-DE, ISO646-DK, ISO646-ES, ISO646-ES2, ISO646-FI, ISO646-FR, ISO646-FR1, ISO646-GB, ISO646-HU, ISO646-IT, ISO646-JP-OCR-B, ISO646-JP, ISO646-KR, ISO646-NO, ISO646-NO2, ISO646-PT, ISO646-PT2, ISO646-SE, ISO646-SE2, ISO646-US, ISO646-YU, ISO2022CN, ISO2022CNEXT, ISO2022JP, ISO2022JP2, ISO2022KR, ISO6937, ISO8859-1, ISO8859-2, ISO8859-3, ISO8859-4, ISO8859-5, ISO8859-6, ISO8859-7, ISO8859-8, ISO8859-9, ISO8859-9E, ISO8859-10, ISO8859-11, ISO8859-13, ISO8859-14, ISO8859-15, ISO8859-16, ISO11548-1, ISO88591, ISO88592, ISO88593, ISO88594, ISO88595, ISO88596, ISO88597, ISO88598, ISO88599, ISO88599E, ISO885910, ISO885911, ISO885913, ISO885914, ISO885915, ISO885916, ISO_646.IRV:1991, ISO_2033-1983, ISO_2033, ISO_5427-EXT, ISO_5427, ISO_5427:1981, ISO_5427EXT, ISO_5428, ISO_5428:1980, ISO_6937-2, ISO_6937-2:1983, ISO_6937, ISO_6937:1992, ISO_8859-1, ISO_8859-1:1987, ISO_8859-2, ISO_8859-2:1987, ISO_8859-3, ISO_8859-3:1988, ISO_8859-4, ISO_8859-4:1988, ISO_8859-5, ISO_8859-5:1988, ISO_8859-6, ISO_8859-6:1987, ISO_8859-7, ISO_8859-7:1987, ISO_8859-7:2003, ISO_8859-8, ISO_8859-8:1988, ISO_8859-9, ISO_8859-9:1989, ISO_8859-9E, ISO_8859-10, ISO_8859-10:1992, ISO_8859-14, ISO_8859-14:1998, ISO_8859-15, ISO_8859-15:1998, ISO_8859-16, ISO_8859-16:2001, ISO_9036, ISO_10367-BOX, ISO_10367BOX, ISO_11548-1, ISO_69372, IT, JIS_C6220-1969-RO, JIS_C6229-1984-B, JIS_C62201969RO, JIS_C62291984B, JOHAB, JP-OCR-B, JP, JS, JUS_I.B1.002, KOI-7, KOI-8, KOI8-R, KOI8-RU, KOI8-T, KOI8-U, KOI8, KOI8R, KOI8U, KSC5636, L1, L2, L3, L4, L5, L6, L7, L8, L10, LATIN-9, LATIN-GREEK-1, LATIN-GREEK, LATIN1, LATIN2, LATIN3, LATIN4, LATIN5, LATIN6, LATIN7, LATIN8, LATIN10, LATINGREEK, LATINGREEK1, MAC-CENTRALEUROPE, MAC-CYRILLIC, MAC-IS, MAC-SAMI, MAC-UK, MAC, MACCYRILLIC, MACINTOSH, MACIS, MACUK, MACUKRAINIAN, MIK, MS-ANSI, MS-ARAB, MS-CYRL, MS-EE, MS-GREEK, MS-HEBR, MS-MAC-CYRILLIC, MS-TURK, MS932, MS936, MSCP949, MSCP1361, MSMACCYRILLIC, MSZ_7795.3, MS_KANJI, NAPLPS, NATS-DANO, NATS-SEFI, NATSDANO, NATSSEFI, NC_NC0010, NC_NC00-10, NC_NC00-10:81, NF_Z_62-010, NF_Z_62-010_(1973), NF_Z_62-010_1973, NF_Z_62010, NF_Z_62010_1973, NO, NO2, NS_4551-1, NS_4551-2, NS_45511, NS_45512, OS2LATIN1, OSF00010001, OSF00010002, OSF00010003, OSF00010004, OSF00010005, OSF00010006, OSF00010007, OSF00010008, OSF00010009, OSF0001000A, OSF00010020, OSF00010100, OSF00010101, OSF00010102, OSF00010104, OSF00010105, OSF00010106, OSF00030010, OSF0004000A, OSF0005000A, OSF05010001, OSF100201A4, OSF100201A8, OSF100201B5, OSF100201F4, OSF100203B5, OSF1002011C, OSF1002011D, OSF1002035D, OSF1002035E, OSF1002035F, OSF1002036B, OSF1002037B, OSF10010001, OSF10010004, OSF10010006, OSF10020025, OSF10020111, OSF10020115, OSF10020116, OSF10020118, OSF10020122, OSF10020129, OSF10020352, OSF10020354, OSF10020357, OSF10020359, OSF10020360, OSF10020364, OSF10020365, OSF10020366, OSF10020367, OSF10020370, OSF10020387, OSF10020388, OSF10020396, OSF10020402, OSF10020417, PT, PT2, PT154, R8, R9, RK1048, ROMAN8, ROMAN9, RUSCII, SE, SE2, SEN_850200_B, SEN_850200_C, SHIFT-JIS, SHIFT_JIS, SHIFT_JISX0213, SJIS-OPEN, SJIS-WIN, SJIS, SS636127, STRK1048-2002, ST_SEV_358-88, T.61-8BIT, T.61, T.618BIT, TCVN-5712, TCVN, TCVN5712-1, TCVN5712-1:1993, THAI8, TIS-620, TIS620-0, TIS620.2529-1, TIS620.2533-0, TIS620, TS-5881, TSCII, TURKISH8, UCS-2, UCS-2BE, UCS-2LE, UCS-4, UCS-4BE, UCS-4LE, UCS2, UCS4, UHC, UJIS, UK, UNICODE, UNICODEBIG, UNICODELITTLE, US-ASCII, US, UTF-7, UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE, UTF7, UTF8, UTF16, UTF16BE, UTF16LE, UTF32, UTF32BE, UTF32LE, VISCII, WCHAR_T, WIN-SAMI-2, WINBALTRIM, WINDOWS-31J, WINDOWS-874, WINDOWS-936, WINDOWS-1250, WINDOWS-1251, WINDOWS-1252, WINDOWS-1253, WINDOWS-1254, WINDOWS-1255, WINDOWS-1256, WINDOWS-1257, WINDOWS-1258, WINSAMI2, WS2, YU
</pre>
<p>The first parameter, <strong><em>finput-charset</em></strong>, is the charset used to <strong>read</strong> the source code files&#8230; The second one, fexec-charset</em></strong>, is the used to store the strings and character constants <strong>in the executable file</strong>, so they will be shown correctly while running&#8230;</p>
<p>So, assuming you&#8217;re writing your source files in <strong><em><a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">iso-8859-1</a></em></strong> (the most common charset on Windows platforms) and want to show them while running in <strong><em><a href="http://en.wikipedia.org/wiki/Code_page_437">cp437</a></strong></em> (the DOS console charset), we could call the compiler like this:</p>

<pre class="console">
g++ TestChars.cpp -o TestChars.exe -finput-charset=iso-8859-1 -fexec-charset=cp437
</pre>
<p>And what do we expect to get? <img src="http://www.neoegm.com/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>

<pre class="console">
Por favor ingrese su contraseña: contraseña

Su contraseña es inválida, por favor verifíquela e inténtelo nuevamente. Ha ingresado: 'contraseña'.
</pre>
<p>Everything worked just the way we expected! <img src="http://www.neoegm.com/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Now, finally, I&#8217;ll show how to configure these command line options for the wxDev IDE&#8230;</p>
<p>First of all, I must say there are two ways to set compiler options: global options and project options&#8230; As you may imagine, the first ones are applied to every compiled project, while the latter just get applied to the currently opened project (they are set in a per project basis)&#8230;</p>
<p>To set the parameters in the global compiler options you must got to the Tools menu and then open the Compiler Options item&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Main_Menu_EN.png" alt="Main_Menu_EN" title="Main_Menu_EN" width="236" height="229" class="aligncenter size-full wp-image-1006" /></p>
<p>After that, you simply enter the following string (the parameters) into the &#8220;Add the following commands when calling compiler&#8221; box:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
-finput-charset=iso-8859-1 -fexec-charset=cp437
</pre>
<p>If there are already other parameters configured, you should append them&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Main_Compiler_Options_Filled_EN.png" alt="Main_Compiler_Options_Filled_EN" title="Main_Compiler_Options_Filled_EN" width="477" height="503" class="aligncenter size-full wp-image-1004" /></p>
<p>They will be sent to both the C compiler and the C++ compiler&#8230;</p>
<p>The other alternative is to set the same parameters in the project options&#8230;</p>
<p>First, we open the project options&#8230; Either going to Project->Project Options or right clicking the project and going to &#8220;Project Options&#8221;&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Project_Menu_EN.png" alt="Project_Menu_EN" title="Project_Menu_EN" width="278" height="235" class="aligncenter size-full wp-image-1008" /></p>
<p>Then, we go to the Parameters page and paste the parameters string in the two compiler boxes&#8230; Both parameters can be entered either in a single line or broken apart&#8230; Just as before, if there are already other parameters configured, you should append them&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Project_Options_Parameters_Filled_EN.png" rel="lightbox[1000]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Project_Options_Parameters_Filled_EN-299x222.png" alt="Project_Options_Parameters_Filled_EN" title="Project_Options_Parameters_Filled_EN" width="299" height="222" class="aligncenter size-medium wp-image-1002" /></a></p>
<p>Whell, that&#8217;s all&#8230; Most IDEs will have similar options!<br />
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="Programming|NeoEGM com">Programming|NeoEGM com</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="graficos del diapason de la guitarra">graficos del diapason de la guitarra</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="mail czset cn loc:ES">mail czset cn loc:ES</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="mail gpl com cn loc:ES">mail gpl com cn loc:ES</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="mail gino com cn loc:ES">mail gino com cn loc:ES</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="wxDev|NeoEGM com">wxDev|NeoEGM com</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="mail ecma-music com loc:ES">mail ecma-music com loc:ES</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="mail sami com cn loc:ES">mail sami com cn loc:ES</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="where r the notes on a quitar">where r the notes on a quitar</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/" title="email ecma-music com loc:ES">email ecma-music com loc:ES</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple C++ List Class</title>
		<link>http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/</link>
		<comments>http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 20:55:36 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Include]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[List]]></category>
		<category><![CDATA[Memory Leaks]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Teaching]]></category>
		<category><![CDATA[wxDev]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=976</guid>
		<description><![CDATA[Just as I published some days ago the Simple C++ String Class as a C++ learning exercise, now I am freeing a Simple C++ List Class. The standard library has a list class. But, while learning, it&#8217;s a good idea to know how to develop your own list class. That&#8217;s why I made the List [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" rel="bookmark" title="cppMemDbg &#8211; Easy to use C++ memory leak detection library">cppMemDbg &#8211; Easy to use C++ memory leak detection library </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Just as I published some days ago the <a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/">Simple C++ String Class</a> as a C++ learning exercise, now I am freeing a <strong>Simple C++ List Class</strong>.</p>
<p>The standard library has a <em>list</em> class. But, while learning, it&#8217;s a good idea to know how to develop your own <em>list</em> class.</p>
<p>That&#8217;s why I made the <em>List</em> class. It&#8217;s not intended for professional projects (for them, you should use the standard library&#8217;s <em>list</em>), but as help to learn C++.</p>
<pre class="brush: cpp; title: ; notranslate">
template &lt;class TYPE&gt;
class List
{
	/* ... */

public:
	//Construction and destruction
	List() { /* ... */ }
	~List() { /* ... */ }
	
	List(const List&amp; rlList) { /* ... */ }
	
	//Assignment operator
	List&amp; operator=(const List&amp; rlList);

	//Information
	int Length() { /* ... */ }
	bool Empty() { /* ... */ }

	//Element managing
	int Add(TYPE&amp; rtData);
	TYPE* Elem(int nPos);
	bool Delete(int nPos);
	void DeleteAll();
	
	//Search
	int Find(TYPE&amp; rItem, int nStartAt = 0);

	//Operadores
	TYPE&amp; operator[](int nPos) { /* ... */ }	//Elem
	int operator&lt;&lt;(TYPE&amp; rdData) { /* ... */ }	//Add

protected:
	void FreeList();
	void Init() { /* ... */ }
};

//Output
template &lt;class TYPE&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; oStream, List&lt;TYPE&gt;&amp; rlList);
</pre>
<p><span id="more-976"></span></p>
<p>This is a sample project made to explain the <em>List</em> class usage.</p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream&gt;
	using std::cout;
	using std::cin;
	using std::endl;

#include &quot;List.h&quot;
#include &quot;String.h&quot;

int main(int argc, char *argv[])
{
	cout &lt;&lt; &quot;List sample project&quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;-------------------&quot; &lt;&lt; endl &lt;&lt; endl;


	//-----------------------------
	cout &lt;&lt; &quot;&gt; Creating a list of strings... An empty string finishes the list...&quot; &lt;&lt; endl &lt;&lt; endl;

	List&lt;String&gt; lStrings;
	String sTmp;
	
	do
	{
		cout &lt;&lt; &quot;&gt; String &quot; &lt;&lt; lStrings.Length()+1 &lt;&lt; &quot;: &quot;;
		cin &gt;&gt; sTmp;
		
		if (sTmp.Length())
			lStrings.Add(sTmp);
	} while (sTmp.Length());
	
	cout &lt;&lt; endl &lt;&lt; &quot;&gt; Entry finished. &quot; &lt;&lt; lStrings.Length() &lt;&lt; &quot; string(s) loaded.&quot; &lt;&lt; endl &lt;&lt; endl;
	
	cout &lt;&lt; &quot;&gt; Printing list...&quot; &lt;&lt; endl &lt;&lt; endl;
	
	cout &lt;&lt; lStrings;

	cout &lt;&lt; endl;
	//-----------------------------
	
	
	//-----------------------------
	do
	{
		cout &lt;&lt; &quot;&gt; Type a string to find in the list (exact match) [empty = end]: &quot;;
		cin &gt;&gt; sTmp;

		if (sTmp.Length())
		{
			int nFound = lStrings.Find(sTmp);
			
			if (nFound != -1)
			{
				lStrings.Delete(nFound);

				cout &lt;&lt; &quot;&gt; String \&quot;&quot; &lt;&lt; sTmp &lt;&lt; &quot;\&quot; found at position &quot; &lt;&lt; nFound+1 &lt;&lt; &quot; and removed.&quot; &lt;&lt; endl &lt;&lt; endl;
				
				cout &lt;&lt; &quot;&gt; Printing list...&quot; &lt;&lt; endl &lt;&lt; endl;

				if (!lStrings.Empty())
					cout &lt;&lt; lStrings;
				else
				{
					cout &lt;&lt; &quot;[Empty list]&quot; &lt;&lt; endl &lt;&lt; endl;
					break;
				}
			}
			else
				cout &lt;&lt; &quot;&gt; String \&quot;&quot; &lt;&lt; sTmp &lt;&lt; &quot;\&quot; not found.&quot; &lt;&lt; endl;
		}
		
		cout &lt;&lt; endl;
	} while (sTmp.Length());
	
	cout &lt;&lt; endl;
	//-----------------------------

	//-----------------------------
	cout &lt;&lt; &quot;&gt; Now getting a bit more complex... Let's create a list of lists of strings... An empty string finishes the list and an empty first string finishes the list of lists...&quot; &lt;&lt; endl &lt;&lt; endl;

	List&lt; List&lt;String&gt; &gt; lLists;
	List&lt;String&gt; lTmpList;
	int nStrings = 0;

	do
	{
		lTmpList.DeleteAll();
		
		cout &lt;&lt; &quot;&gt; Loading list &quot; &lt;&lt; lLists.Length()+1 &lt;&lt; &quot;...&quot; &lt;&lt; endl;
		
		do
		{
			cout &lt;&lt; &quot;\t&gt; String &quot; &lt;&lt; lTmpList.Length()+1 &lt;&lt; &quot;: &quot;;
			cin &gt;&gt; sTmp;
			
			if (sTmp.Length())
			{
				lTmpList.Add(sTmp);
				nStrings++;
			}
		} while (sTmp.Length());
		
		if (lTmpList.Length())
			lLists.Add(lTmpList);
	} while (lTmpList.Length());
	
	cout &lt;&lt; endl &lt;&lt; &quot;&gt; Entry finished. &quot; &lt;&lt; lLists.Length() &lt;&lt; &quot; list(s) loaded, &quot; &lt;&lt; nStrings &lt;&lt; &quot; string(s) loaded.&quot; &lt;&lt; endl &lt;&lt; endl &lt;&lt; endl;

	cout &lt;&lt; &quot;&gt; Printing lists (standard method)...&quot; &lt;&lt; endl &lt;&lt; endl;

	cout &lt;&lt; lLists;

	cout &lt;&lt; endl;
	
	cout &lt;&lt; &quot;&gt; Printing lists (custom method)...&quot; &lt;&lt; endl &lt;&lt; endl;
	
	for (int i = 0; i &lt; lLists.Length(); i++)
	{
		List&lt;String&gt; *plList = lLists.Elem(i);

		if (plList)
		{
			cout &lt;&lt; &quot;- List &quot; &lt;&lt; i &lt;&lt; endl &lt;&lt; endl;
			cout &lt;&lt; *plList;
			cout &lt;&lt; endl;
		}
	}
	//-----------------------------

    return 0;
}
</pre>
<p>And this is its output:</p>

<pre class="console">
List sample project
-------------------

> Creating a list of strings... An empty string finishes the list...

> String 1: Test 1
> String 2: Test 2
> String 3: Test 3, a little bit longer
> String 4:

> Entry finished. 3 string(s) loaded.

> Printing list...

Test 1
Test 2
Test 3, a little bit longer

> Type a string to find in the list (exact match) [empty = end]: Hello
> String "Hello" not found.

> Type a string to find in the list (exact match) [empty = end]: Test 1
> String "Test 1" found at position 1 and removed.

> Printing list...

Test 2
Test 3, a little bit longer

> Type a string to find in the list (exact match) [empty = end]: Test 1
> String "Test 1" not found.

> Type a string to find in the list (exact match) [empty = end]: test 2
> String "test 2" not found.

> Type a string to find in the list (exact match) [empty = end]: Test 2
> String "Test 2" found at position 1 and removed.

> Printing list...

Test 3, a little bit longer

> Type a string to find in the list (exact match) [empty = end]: Test 3, a little bit longer
> String "Test 3, a little bit longer" found at position 1 and removed.

> Printing list...

[Empty list]


> Now getting a bit more complex... Let's create a list of lists of strings... An empty string finishes the list and an empty first string finishes the list of lists...

> Loading list 1...
        > String 1: Test 1a
        > String 2: Test 1b
        > String 3: Test 1c
        > String 4:
> Loading list 2...
        > String 1: Test 2a
        > String 2: Test 2b
        > String 3: Test 2c
        > String 4: Test 2d
        > String 5:
> Loading list 3...
        > String 1: Test 3a
        > String 2: Test 3b
        > String 3: This is a looooooooooooooooooooooong string
        > String 4:
> Loading list 4...
        > String 1:

> Entry finished. 3 list(s) loaded, 10 string(s) loaded.


> Printing lists (standard method)...

Test 1a
Test 1b
Test 1c

Test 2a
Test 2b
Test 2c
Test 2d

Test 3a
Test 3b
This is a looooooooooooooooooooooong string


> Printing lists (custom method)...

- List 0

Test 1a
Test 1b
Test 1c

- List 1

Test 2a
Test 2b
Test 2c
Test 2d

- List 2

Test 3a
Test 3b
This is a looooooooooooooooooooooong string

</pre>
<p>This project also uses the <a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/">Simple C++ String Class</a> to show the List class working with custom classes. Exactly the same code could be without problem by simply replacing &#8220;String&#8221; with &#8220;string&#8221; and including the standard library&#8217;s <em>string</em> header.</p>
<p>The code completely is portable.</p>
<p>It&#8217;s been developed, compiled and tested using <a href="http://wxdsgn.sourceforge.net/">wxDev-C++</a> for Windows with the <a href="http://www.mingw.org/">MinGW compiler</a> (included in the bundle).</p>
<p><a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">List is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<p><br/><br />
I&#8217;ve also tested the project for memory leaks using the <a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/">cppMemDbg – Easy to use C++ memory leak detection library</a> and it found no problems at all&#8230;</p>
<p>You can download the library output and the cppMemDbg adapted project here:</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/list-class/List_Sample_Project_cppMemDbg_Output.txt">Download cppMemDbg Output</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/list-class/List_Sample_Project_1.0_cppMemDbg.zip">Download Adapted Project 1.0</a></p>
</div>
<p><br/><br />
Now, finally, the download links:</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/list-class/List_1.0.zip">Download List Class 1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/list-class/List_Sample_Project_1.0.zip">Download List Sample Project 1.0</a></p>
</div>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="c list class">c list class</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="list class c">list class c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="class list c">class list c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="lista simple c">lista simple c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="clase lista c">clase lista c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="LISTA SIMPLE EN C">LISTA SIMPLE EN C</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="listas simples en c">listas simples en c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="clase lista en c">clase lista en c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="c class list">c class list</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="list class in c">list class in c</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" rel="bookmark" title="cppMemDbg &#8211; Easy to use C++ memory leak detection library">cppMemDbg &#8211; Easy to use C++ memory leak detection library </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3D Pinball for Windows (Space Cadet) Cracker &#8211; How To Modify High Scores</title>
		<link>http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/</link>
		<comments>http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 19:43:13 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[Game Cheating]]></category>
		<category><![CDATA[.NET Framework]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Cheat]]></category>
		<category><![CDATA[Cracker]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Hall of Fame]]></category>
		<category><![CDATA[High Scores]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Pinball]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Registry]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Trainer]]></category>
		<category><![CDATA[VB.NET]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=942</guid>
		<description><![CDATA[Everybody knows the Pinball game that appeared with Windows 95 Plus!&#8230; It&#8217;s still in current Windows versions&#8230; Although it may seem incredible, there are still some fanatics of this game&#8230; I&#8217;ve made this program in 1999 (some time ago 8-)) to let you modify the High Scores so you could make those fanatics believe you [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/software/tools/guitar-trainer/" rel="bookmark" title="Guitar Trainer">Guitar Trainer </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" rel="bookmark" title="Office Document Property Resetter">Office Document Property Resetter </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Everybody knows the Pinball game that appeared with Windows 95 Plus!&#8230; It&#8217;s still in current Windows versions&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_Game.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_Game-300x233.png" alt="Pinball_Cracker_Game" title="Pinball_Cracker_Game" width="300" height="233" class="aligncenter size-medium wp-image-952" /></a></p>
<p>Although it may seem incredible, there are still some fanatics of this game&#8230;</p>
<p>I&#8217;ve made this program in 1999 (some time ago 8-)) to let you modify the High Scores so you could make those fanatics believe you had beaten them&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_Game_High_Scores.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_Game_High_Scores-300x234.png" alt="Pinball_Cracker_Game_High_Scores" title="Pinball_Cracker_Game_High_Scores" width="300" height="234" class="aligncenter size-medium wp-image-953" /></a></p>
<p>(You should be a little more subtle than me)</p>
<p><span id="more-942"></span></p>
<p>After starting, you must take into account I wrote this program when I was 13&#8230; So I&#8217;m dismissed for any possible criticism&#8230; Now, after that disclaimer, we can continue&#8230;</p>
<p>The tool is very easy to use&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_Main.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_Main-300x224.png" alt="Pinball_Cracker_Main" title="Pinball_Cracker_Main" width="300" height="224" class="aligncenter ft size-medium wp-image-945" /></a></p>
<p>But has some hidden features that make it a bit more powerful&#8230;</p>
<p>There are 3 easter eggs (it seems I really enjoyed writing them at that time) that unlock 3 special options&#8230; They must be made in the following order, otherwise they won&#8217;t work&#8230;</p>
<p>First of all you must open the about screen and wait for the legend to scroll 5 times (you can make it go faster by pressing Shift+U several times)&#8230; If you have the Caps Lock enabled you must not use the Shift key to press the U&#8230; (As an additional tip, not really useful anyway, you can make the text scroll slower again by pressing Shift+D)</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_1.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_1-300x65.png" alt="Pinball_Cracker_About_1" title="Pinball_Cracker_About_1" width="300" height="65" class="aligncenter size-medium wp-image-946" /></a></p>
<p>Then, you must click sequentially the 4 crosses at the corners in this order: lower-right, upper-left, upper-right, lower-left. Anyway, if you start with the lower-right, the lines will guide you. That will enable the first &#8220;cheat&#8221;, which unlocks the &#8220;Show Verification Code&#8221; option at the main screen. The verification code is some sort of checksum used by the game to verify you didn&#8217;t modify the high scores.</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_2.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_2-300x65.png" alt="Pinball_Cracker_About_2" title="Pinball_Cracker_About_2" width="300" height="65" class="aligncenter size-medium wp-image-947" /></a></p>
<p>The second cheat is the easiest&#8230; You must right-click the upper-right cross while holding Shift and then release it and left-click the lower-right cross&#8230; The &#8220;Print Hall of Fame&#8221; option will be unlocked&#8230; It&#8217;s a completely unuseful option, but it seems I wanted to develop my printing ability at that time&#8230; So don&#8217;t ask <img src="http://www.neoegm.com/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_3.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_3-300x65.png" alt="Pinball_Cracker_About_3" title="Pinball_Cracker_About_3" width="300" height="65" class="aligncenter size-medium wp-image-948" /></a></p>
<p>Finally, the latest easter egg (and the most useful of all) gets unlocked by doing the following steps: with the focus (the dotted rectangle) in the upper button, press Shift+P (again the same thing about Caps Lock)&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_4.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_4-300x65.png" alt="Pinball_Cracker_About_4" title="Pinball_Cracker_About_4" width="300" height="65" class="aligncenter size-medium wp-image-949" /></a></p>
<p>Then, move the focus to the next button by pressing Tab and press Shift+C&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_5.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_About_5-300x65.png" alt="Pinball_Cracker_About_5" title="Pinball_Cracker_About_5" width="300" height="65" class="aligncenter size-medium wp-image-950" /></a></p>
<p>That&#8217;s all&#8230; Now you&#8217;ll have enabled the possibility of exporting the scores to a .REG file so you can simply double click it on any computer to set the new scores&#8230;</p>
<p>This is how the main screen will now look like&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_Cheats.png" rel="lightbox[942]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Pinball_Cracker_Cheats-300x274.png" alt="Pinball_Cracker_Cheats" title="Pinball_Cracker_Cheats" width="300" height="274" class="aligncenter size-medium wp-image-951" /></a></p>
<p>This tool was originally written in Visual Basic 6, so I opened the project, updated it to the .NET Framework 2.0 (VB.NET) and then fixed some bugs, corrected some things and prepared it to be published&#8230; I&#8217;m freeing the source code just for the ones who may have curiosity, but I don&#8217;t recommend taking it as model for anything&#8230;</p>
<p>To run it, you&#8217;ll need the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=79BC3B77-E02C-4AD3-AACF-A7633F706BA5">.NET Framework 2.0</a> and the <a href="http://download.neoegm.com/redistributables/VisualBasicPowerPacksSetup.exe">Microsoft Visual Basic PowerPacks 1.2</a>.</p>
<p><strong>UPDATE:</strong> I&#8217;ve just uploaded the required <a href="http://download.neoegm.com/redistributables/VisualBasicPowerPacksSetup.exe">Visual Basic PowerPacks redistributable file</a> since the ones offered online by Microsoft (2.0 &#038; 3.0) does not fulfill the required dependencies. They seem to be different things. This redistributable is needed in order to be able to open the About box and unlock the special options.</p>
<p><br/><br />
<a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">As usual, Pinball Cracker is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span><br />
<br/></p>
<p>Here are the download links:</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/pinball-cracker/Pinball_Cracker_1.0.zip">Download Pinball Cracker v1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/pinball-cracker/Pinball_Cracker_1.0_Source.zip">Pinball Cracker Source Code v1.0</a></p>
</div>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="pinball 3d">pinball 3d</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="pinball cheats">pinball cheats</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="3D pinball">3D pinball</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="pinball windows 95">pinball windows 95</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="3D Pinball Cheats">3D Pinball Cheats</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="pinball high scores">pinball high scores</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="3D Pinball Space Cadet Cheats">3D Pinball Space Cadet Cheats</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="3d pinball space cadet">3d pinball space cadet</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="pinball cheat">pinball cheat</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/" title="windows 95 pinball">windows 95 pinball</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/software/tools/guitar-trainer/" rel="bookmark" title="Guitar Trainer">Guitar Trainer </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" rel="bookmark" title="Office Document Property Resetter">Office Document Property Resetter </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/software/tools/game-cheating/3d-pinball-for-windows-space-cadet-cracker-how-to-modify-high-scores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Office Document Property Resetter</title>
		<link>http://www.neoegm.com/tech/software/tools/office-document-property-resetter/</link>
		<comments>http://www.neoegm.com/tech/software/tools/office-document-property-resetter/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 18:37:19 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Cleanup]]></category>
		<category><![CDATA[Document]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[MS Excel]]></category>
		<category><![CDATA[MS Office]]></category>
		<category><![CDATA[MS Word]]></category>
		<category><![CDATA[OLE]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Property]]></category>
		<category><![CDATA[Reset]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=781</guid>
		<description><![CDATA[This is a tool I&#8217;ve made two years ago to solve a problem a friend of mine had. He had at his work a bunch of Word and Excel files created in different computers and wanted to cleanup their properties so they didn&#8217;t show the configured Author/Title/Subject/etc. tags. This would have been a simple problem [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/software/excel-add-ins/excel-random-password-generator/" rel="bookmark" title="Excel random password generator">Excel random password generator </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" rel="bookmark" title="Attendance Control (wxWidgets Version)">Attendance Control (wxWidgets Version) </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" rel="bookmark" title="Celsius to Fahrenheit">Celsius to Fahrenheit </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>This is a tool I&#8217;ve made two years ago to solve a problem <a href="http://www.fepe55.com.ar/blog/">a friend of mine</a> had. He had at his work a bunch of Word and Excel files created in different computers and wanted to cleanup their properties so they didn&#8217;t show the configured Author/Title/Subject/etc. tags.</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_DOC_Prop_1.png" rel="lightbox[781]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_DOC_Prop_1-218x300.png" alt="Office_Document_Property_Resetter_DOC_Prop_1" title="Office_Document_Property_Resetter_DOC_Prop_1" width="218" height="300" class="aligncenter size-medium wp-image-784" /></a></p>
<p>This would have been a simple problem to solve if there were a few files&#8230; They could be cleaned up manually&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Word_Menu.png" rel="lightbox[781]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Word_Menu-286x300.png" alt="Office_Document_Property_Resetter_Word_Menu" title="Office_Document_Property_Resetter_Word_Menu" width="286" height="300" class="aligncenter size-medium wp-image-795" /></a></p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Word_Prop_1.png" rel="lightbox[781]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Word_Prop_1-300x240.png" alt="Office_Document_Property_Resetter_Word_Prop_1" title="Office_Document_Property_Resetter_Word_Prop_1" width="300" height="240" class="aligncenter size-medium wp-image-796" /></a></p>
<p>But there were lots of them!</p>
<p>So&#8230; I made this tool <img src="http://www.neoegm.com/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Main.png" alt="Office_Document_Property_Resetter_Main" title="Office_Document_Property_Resetter_Main" width="459" height="196" class="aligncenter size-full wp-image-793" /></p>
<p><span id="more-781"></span></p>
<p>It&#8217;s very easy to use&#8230; You just choose the folder where the files are located (it recurses subdirectories) and press Start&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Start.png" alt="Office_Document_Property_Resetter_Start" title="Office_Document_Property_Resetter_Start" width="458" height="194" class="aligncenter size-full wp-image-794" /></p>
<p>You won&#8217;t be able to cancel it while working&#8230; So, if there are lots of files to process, it could take some time to complete&#8230; I recommend running it when you don&#8217;t need to use the computer for a while&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Working.png" alt="Office_Document_Property_Resetter_Working" title="Office_Document_Property_Resetter_Working" width="459" height="195" class="aligncenter size-full wp-image-798" /></p>
<p>Once finished, it will show you the summary of what it has done&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Finish.png" alt="Office_Document_Property_Resetter_Finish" title="Office_Document_Property_Resetter_Finish" width="459" height="194" class="aligncenter size-full wp-image-791" /></p>
<p>In this case there were only two files&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_Folder.png" alt="Office_Document_Property_Resetter_Folder" title="Office_Document_Property_Resetter_Folder" width="481" height="436" class="aligncenter size-full wp-image-792" /></p>
<p>And that&#8217;s all&#8230; Everything will be cleaned up&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_DOC_Prop_1b.png" rel="lightbox[781]"><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_DOC_Prop_1b-219x300.png" alt="Office_Document_Property_Resetter_DOC_Prop_1b" title="Office_Document_Property_Resetter_DOC_Prop_1b" width="219" height="300" class="aligncenter size-medium wp-image-785" /></a></p>
<p><a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">Office Document Property Resetter is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/08/Office_Document_Property_Resetter_About.png" alt="Office_Document_Property_Resetter_About" title="Office_Document_Property_Resetter_About" width="457" height="377" class="aligncenter size-full wp-image-783" /></p>
<p>It has been tested with <strong>Office 2003</strong> and <strong>Office 2007</strong>&#8230;</p>
<p>Now, finally, the download links&#8230;</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/office-document-property-resetter/Office_Document_Property_Resetter_1.0.zip">Office Document Property Resetter v1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/office-document-property-resetter/Office_Document_Property_Resetter_1.0_Source.zip">Download v1.0 Source Code</a></p>
</div>
<p>To recompile from the source code, you&#8217;ll have to copy the following files to the &#8220;<em>Office Document Property Resetter\Office 2003</em>&#8221; folder:</p>
<ul>
<li>C:\Program Files\Common Files\Microsoft Shared\Office11\MSO.DLL</li>
<li>C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB</li>
<li>C:\Program Files\Microsoft Office\Office11\MSWord.olb</li>
<li>C:\Program Files\Microsoft Office\Office11\excel.exe</li>
</ul>
<p>Those paths are from an Office 2003 installation&#8230; I recommend using those files instead of the ones from an Office 2007 (or later) installation since the latter would make the program unusable on computers having the earlier version.</p>
<p>Instead of copying the files, you could locate the following piece of code in the file &#8220;<em>Office Document Property ResetterDlg.h</em>&#8220;:</p>
<pre class="brush: cpp; collapse: true; first-line: 36; light: false; title: ; toolbar: true; notranslate">
//#import &quot;C:\Program Files\Common Files\Microsoft Shared\Office11\MSO.DLL&quot;
#import &quot;Office 2003\MSO.DLL&quot; \
	no_namespace \
	rename(&quot;SearchPath&quot;, &quot;SearchPathMSO&quot;) \
	rename(&quot;RGB&quot;, &quot;RGBMSO&quot;)

//#import &quot;C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB&quot;
#import &quot;Office 2003\VBE6EXT.OLB&quot; \
	no_namespace

//#import &quot;C:\Program Files\Microsoft Office\Office11\MSWord.olb&quot;
#import &quot;Office 2003\MSWord.olb&quot; \
	rename(&quot;FindText&quot;,&quot;FindTextWord&quot;)  \
	rename(&quot;ReplaceText&quot;,&quot;ReplaceTextWord&quot;)  \
	rename(&quot;ExitWindows&quot;,&quot;ExitWindowsWord&quot;)  \
	rename(&quot;RGB&quot;,&quot;RGBWord&quot;)  \
	no_dual_interfaces

//#import &quot;C:\Program Files\Microsoft Office\Office11\excel.exe&quot;
#import &quot;Office 2003\excel.exe&quot; \
	exclude(&quot;IFont&quot;)	\
	exclude(&quot;IPicture&quot;)	\
	rename(&quot;ReplaceText&quot;,&quot;ReplaceTextXLS&quot;)  \
	rename(&quot;RGB&quot;,&quot;RGBXLS&quot;)  \
	rename(&quot;DialogBox&quot;,&quot;DialogBoxXLS&quot;)  \
	rename(&quot;CopyFile&quot;,&quot;CopyFileXLS&quot;)  \
	no_dual_interfaces
</pre>
<p>And replace it with (notice the addition of the trailing slash):</p>
<pre class="brush: cpp; collapse: true; first-line: 36; light: false; title: ; toolbar: true; notranslate">
#import &quot;C:\Program Files\Common Files\Microsoft Shared\Office11\MSO.DLL&quot; \
	no_namespace \
	rename(&quot;SearchPath&quot;, &quot;SearchPathMSO&quot;) \
	rename(&quot;RGB&quot;, &quot;RGBMSO&quot;)

#import &quot;C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB&quot; \
	no_namespace

#import &quot;C:\Program Files\Microsoft Office\Office11\MSWord.olb&quot; \
	rename(&quot;FindText&quot;,&quot;FindTextWord&quot;)  \
	rename(&quot;ReplaceText&quot;,&quot;ReplaceTextWord&quot;)  \
	rename(&quot;ExitWindows&quot;,&quot;ExitWindowsWord&quot;)  \
	rename(&quot;RGB&quot;,&quot;RGBWord&quot;)  \
	no_dual_interfaces

#import &quot;C:\Program Files\Microsoft Office\Office11\excel.exe&quot; \
	exclude(&quot;IFont&quot;)	\
	exclude(&quot;IPicture&quot;)	\
	rename(&quot;ReplaceText&quot;,&quot;ReplaceTextXLS&quot;)  \
	rename(&quot;RGB&quot;,&quot;RGBXLS&quot;)  \
	rename(&quot;DialogBox&quot;,&quot;DialogBoxXLS&quot;)  \
	rename(&quot;CopyFile&quot;,&quot;CopyFileXLS&quot;)  \
	no_dual_interfaces
</pre>
<p>That will make the compiler look for the files at their actual location&#8230; (Do not forget to update the paths if you have installed Office in a different path)</p>
<p>That&#8217;s all&#8230; Enjoy it!<br />
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="document property">document property</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="VBE6EXT OLB">VBE6EXT OLB</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="mensajes de texto">mensajes de texto</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="propiedades de office">propiedades de office</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="descargar msword olb">descargar msword olb</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="descargar archivo VBE6EXT OLB">descargar archivo VBE6EXT OLB</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="vb6ext olb download">vb6ext olb download</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="descargar vb6ext olb">descargar vb6ext olb</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="VB6EXT OLB">VB6EXT OLB</a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="document">document</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/software/excel-add-ins/excel-random-password-generator/" rel="bookmark" title="Excel random password generator">Excel random password generator </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" rel="bookmark" title="Attendance Control (wxWidgets Version)">Attendance Control (wxWidgets Version) </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" rel="bookmark" title="Celsius to Fahrenheit">Celsius to Fahrenheit </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/software/tools/office-document-property-resetter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple C++ String Class</title>
		<link>http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/</link>
		<comments>http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 14:12:15 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Include]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[Strings]]></category>
		<category><![CDATA[Teaching]]></category>
		<category><![CDATA[wxDev]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=764</guid>
		<description><![CDATA[Every C++ programmer knows that the standard library has a string class. But, while learning, it&#8217;s a good idea to know how to develop your own string class. That&#8217;s why I made the String class. It&#8217;s not intended for professional projects (for them, you should use the standard library&#8217;s string), but as help to learn [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" rel="bookmark" title="cppMemDbg &#8211; Easy to use C++ memory leak detection library">cppMemDbg &#8211; Easy to use C++ memory leak detection library </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Every C++ programmer knows that the standard library has a <em>string</em> class. But, while learning, it&#8217;s a good idea to know how to develop your own <em>string</em> class.</p>
<p>That&#8217;s why I made the <em>String</em> class. It&#8217;s not intended for professional projects (for them, you should use the standard library&#8217;s <em>string</em>), but as help to learn C++.</p>
<pre class="brush: cpp; title: ; notranslate">
class String
{
	char *m_pszString;	//Allocated buffer
	int m_nAllocated;	//Allocated length

public:
	//Construction and destruction
	String() { /* ... */ }
	~String() { /* ... */ }

	//Copy constructors
	String(const char *pszString) { /* ... */ }
	String(const String&amp; rsString) { /* ... */ }

	//Operators (assignment)
	String&amp; operator=(const char *pszString);
	String&amp; operator=(const String&amp; rsString) { /* ... */ }

	//Operators (concatenation)
	String&amp; operator+=(const char *pszString);
	String&amp; operator+=(String&amp; rsString) { /* ... */ }
	String operator+(String rsString);

	//Operators (comparison)
	bool operator&lt;(String sString) { /* ... */ }
	bool operator&lt;=(String sString) { /* ... */ }

	bool operator&gt;(String sString) { /* ... */ }
	bool operator&gt;=(String sString) { /* ... */ }

	bool operator==(String sString) { /* ... */ }
	bool operator!=(String sString) { /* ... */ }

	//Operations
	void Clear();
	String Lower() { /* ... */ }
	String Upper() { /* ... */ }

	//Information
	int Length() { /* ... */ }

	//Cast operators
	operator const char*() { /* ... */ }

protected:	//Helper functions
	/* ... */
};

//Output e input
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; oStream, String&amp; rsString);
std::istream&amp; operator&gt;&gt;(std::istream&amp; iStream, String&amp; rsString);
</pre>
<p><span id="more-764"></span></p>
<p>This is a sample project made to explain the <em>String</em> class usage.</p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream&gt;
	using std::cout;
	using std::cin;
	using std::endl;
#include &quot;String.h&quot;

using namespace std;

int main(int argc, char *argv[])
{
	cout &lt;&lt; &quot;String sample project&quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;---------------------&quot; &lt;&lt; endl &lt;&lt; endl;

	String a(&quot;This&quot;), b(&quot;is&quot;), c(&quot;a&quot;), d(&quot;test&quot;);
	String e = a + &quot; &quot; + b + &quot; &quot; + c + &quot; &quot; + d;

	cout &lt;&lt; &quot;String parts:&quot; &lt;&lt; endl;
	cout &lt;&lt; '\t' &lt;&lt; a &lt;&lt; endl;
	cout &lt;&lt; '\t' &lt;&lt; b &lt;&lt; endl;
	cout &lt;&lt; '\t' &lt;&lt; c &lt;&lt; endl;
	cout &lt;&lt; '\t' &lt;&lt; d &lt;&lt; endl &lt;&lt; endl;

	cout &lt;&lt; &quot;Concatenated with spaces:&quot; &lt;&lt; endl;
	cout &lt;&lt; '\t' &lt;&lt; e &lt;&lt; endl &lt;&lt; endl;

	String f, g;

	cout &lt;&lt; &quot;Please input a string (empty to break): &quot;;
	cin &gt;&gt; f;
	cout &lt;&lt; &quot;Please input other string (empty to break): &quot;;
	cin &gt;&gt; g;

	cout &lt;&lt; endl;

	cout &lt;&lt; &quot;1st string (&quot; &lt;&lt; f &lt;&lt; &quot;) is &quot; &lt;&lt; f.Length() &lt;&lt; &quot; chars long.&quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;2nd string (&quot; &lt;&lt; g &lt;&lt; &quot;) is &quot; &lt;&lt; g.Length() &lt;&lt; &quot; chars long.&quot; &lt;&lt; endl;

	cout &lt;&lt; endl;

	cout &lt;&lt; &quot;1st string in lowercase is &quot; &lt;&lt; f.Lower() &lt;&lt; endl;
	cout &lt;&lt; &quot;1st string in uppercase is &quot; &lt;&lt; f.Upper() &lt;&lt; endl &lt;&lt; endl;

	cout &lt;&lt; &quot;2nd string in lowercase is &quot; &lt;&lt; g.Lower() &lt;&lt; endl;
	cout &lt;&lt; &quot;2nd string in uppercase is &quot; &lt;&lt; g.Upper() &lt;&lt; endl &lt;&lt; endl;

	cout &lt;&lt; &quot;1 &lt; 2\t=&gt; &quot; &lt;&lt; (f&lt;g?&quot;true&quot;:&quot;false&quot;) &lt;&lt; endl;
	cout &lt;&lt; &quot;1 &lt;= 2\t=&gt; &quot; &lt;&lt; (f&lt;=g?&quot;true&quot;:&quot;false&quot;) &lt;&lt; endl;
	cout &lt;&lt; &quot;1 &gt; 2\t=&gt; &quot; &lt;&lt; (f&gt;g?&quot;true&quot;:&quot;false&quot;) &lt;&lt; endl;
	cout &lt;&lt; &quot;1 &gt;= 2\t=&gt; &quot; &lt;&lt; (f&gt;=g?&quot;true&quot;:&quot;false&quot;) &lt;&lt; endl;
	cout &lt;&lt; &quot;1 == 2\t=&gt; &quot; &lt;&lt; (f==g?&quot;true&quot;:&quot;false&quot;) &lt;&lt; endl;
	cout &lt;&lt; &quot;1 != 2\t=&gt; &quot; &lt;&lt; (f!=g?&quot;true&quot;:&quot;false&quot;) &lt;&lt; endl &lt;&lt; endl;

	if (f == g)
		cout &lt;&lt; &quot;Strings are equal.&quot; &lt;&lt; endl;
	else
		cout &lt;&lt; &quot;Strings are not equal.&quot; &lt;&lt; endl;

	cout &lt;&lt; endl;

	cout &lt;&lt; &quot;1+2\t=&gt; &quot; &lt;&lt; f+g &lt;&lt; endl;
	cout &lt;&lt; &quot;2+1\t=&gt; &quot; &lt;&lt; g+f &lt;&lt; endl;

	cout &lt;&lt; endl;

    return 0;
}
</pre>
<p>And this is its output:</p>

<pre class="console">
String sample project
---------------------

String parts:
        This
        is
        a
        test

Concatenated with spaces:
        This is a test

Please input a string (empty to break): Hello, string 1
Please input other string (empty to break): Phrase 2

1st string (Hello, string 1) is 15 chars long.
2nd string (Phrase 2) is 8 chars long.

1st string in lowercase is hello, string 1
1st string in uppercase is HELLO, STRING 1

2nd string in lowercase is phrase 2
2nd string in uppercase is PHRASE 2

1 < 2   => false
1 <= 2  => false
1 > 2   => true
1 >= 2  => true
1 == 2  => false
1 != 2  => true

Strings are not equal.

1+2     => Hello, string 1Phrase 2
2+1     => Phrase 2Hello, string 1

</pre>
<p>The code completely is portable.</p>
<p>It&#8217;s been developed, compiled and tested using <a href="http://wxdsgn.sourceforge.net/">wxDev-C++</a> for Windows with the <a href="http://www.mingw.org/">MinGW compiler</a> (included in the bundle).</p>
<p><a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">String is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<p>Now the download links:</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/string-class/String_1.0.zip">Download String Class 1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/string-class/String_Sample_Project_1.0.zip">Download String Sample Project 1.0</a></p>
</div>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="open source c string class">open source c string class</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="clase string c">clase string c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="C String Class Source Code">C String Class Source Code</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="string c español">string c español</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="simple string class c">simple string class c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="simple string class">simple string class</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="mail istream al loc:ES">mail istream al loc:ES</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="string c">string c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="simple c string class">simple c string class</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="c string class source">c string class source</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" rel="bookmark" title="cppMemDbg &#8211; Easy to use C++ memory leak detection library">cppMemDbg &#8211; Easy to use C++ memory leak detection library </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cppMemDbg &#8211; Easy to use C++ memory leak detection library</title>
		<link>http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/</link>
		<comments>http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 11:51:13 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Include]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Memory Leaks]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Source Code]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=727</guid>
		<description><![CDATA[This library is the C++ sequel to the cMemDbg. Just as the cMemDbg, it is a very easy to use library which can help you to detect and track memory leaks. Its usage is very similar to the cMemDbg, but with support for the C++ operators (new, new[], delete and delete[]). There are lots of [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" rel="bookmark" title="cMemDbg &#8211; Easy to use C memory leak detection library">cMemDbg &#8211; Easy to use C memory leak detection library </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>This library is the C++ sequel to the <a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/">cMemDbg</a>.</p>
<p>Just as the cMemDbg, it is a very easy to use library which can help you to detect and track memory leaks.</p>
<p>Its usage is very similar to the cMemDbg, but with support for the C++ operators (new, new[], delete and delete[]).</p>
<p>There are lots of solutions for this on the net, but this one has the particularity of being really simple to implement.</p>

<pre class="console">>new  003D26D8  36  [Main.cpp:127]
>new  003D2708  36  [Main.cpp:128]
>ERROR  Bad free type  free => delete  003D2708  36
(Main.cpp:128)
>free  003D2708  36  (Main.cpp:128)  [Main.cpp:129]
>free  003D2708  0    [Main.cpp:130]
>ERROR  Trying to free unallocated memory: 003D2708
[Main.cpp:130]
>delete[]  003D3EB0  7  (String.cpp:59)  [String.h:41]
[...]
>delete[]  003D24F0  4  (String.cpp:59)  [String.h:41]
>delete  003D2490  40  (Lista.h:120)  [Lista.h:112]
>INFO  PROBLEM: Memory leak found (36 bytes)
>INFO  Unfreed block  003D26D8  36    [Main.cpp:127]
</pre>
<p><span id="more-727"></span>You just have to add the following include to your main include file (a file that gets included by each file of your project) or, in case you don&#8217;t have one, to each file that calls any memory allocation function (malloc, realloc, calloc, free, new, new[], delete or delete[]).</p>
<p>This is the line:</p>
<pre class="brush: cpp; light: true; title: ; notranslate">#include &quot;cMemDbg.h&quot;</pre>
<p>There are two extra cautions you have to take into account:<br />
1- Include it <strong>after</strong> the standard headers (stdio.h, stdlib.h, malloc.h, etc.).<br />
2- Never call the delete (or delete[]) operator without knowing if its argument is NULL. So: &#8220;delete a;&#8221; should become &#8220;if (a) delete a;&#8221;. Otherwise, the library may show incorrect messages.</p>
<p>That&#8217;s all&#8230; Expecting more? Well, there is a final step&#8230; You have to make this call just before you exit your program so you can get the detailed conclusions:</p>
<pre class="brush: cpp; light: true; title: ; notranslate">PrintMemoryLeakInfo();</pre>
<p>By default, the library output will go to stdout (normally the console screen). If you want to redirect it to a file, you can call the InitCPPMemDbg() function. This is its prototype:</p>
<pre class="brush: cpp; light: true; title: ; notranslate">void InitCPPMemDbg(const char *pszOutputPath = NULL);</pre>
<p>Other option, to simplify, is to create a global object of the &#8220;cppMemDbg&#8221; type at the beginning of the global declarations. You can pass a file path to the constructor to redirect the output. It will call InitCPPMemDbg (to setup the redirect) at construction and PrintMemoryLeakInfo() at destruction.</p>
<p>Simply like this:</p>
<pre class="brush: cpp; light: true; title: ; notranslate">cppMemDbg cDbg;</pre>
<p>Or, with redirection:</p>
<pre class="brush: cpp; light: true; title: ; notranslate">cppMemDbg cDbg(&quot;mylocalfile.txt&quot;);</pre>
<p>Easy, not?</p>
<p>That was all&#8230; Really.</p>
<p>The code completely is portable.</p>
<p><a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">cppMemDbg is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<p>Now, before going to more &#8220;expert&#8221; features, I&#8217;ll leave here the link to download the library for the ones who don&#8217;t wish to keep reading:</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/cppmemdbg/cppMemDbg_1.0.zip">Download cppMemDbg 1.0</a></p>
</div>
<p>Now let&#8217;s continue&#8230;</p>
<p>The library comes with three configurable settings (available in cppMemDbg.cpp):</p>
<ul>
<li><strong>PRINT_OPERATIONS:</strong> If set to 1, it will print to the configured output (stdout by default) each memory alloc operation done in the program (allocation or free). Otherwise, the library will just print problems and notifications and the final dump. <em>[Default value = 1]</em></li>
<li><strong>MAX_ALLOC:</strong> Internal library memory stack length (in elements). It is the max amount of allocations that can be tracked without being freed. You can increase this value at will if needed. In fact, if it is needed, the library will print a message saying: &#8220;INTERNAL_ERROR: Allocation stack overflow, please increase MAX_ALLOC&#8221;. <em>[Default value = 256]</em></li>
<li><strong>g_fFile:</strong> FILE* to print the library generated notifications to. <em>[Default value = stdout]</em></li>
<li><strong>MAX_DELETE_STACK:</strong> Internal library <em>delete</em> nesting stack array length (in elements). It is the max amount of <em>delete</em>s that can be nested. You can increase this value at will if needed. In fact, if it is needed, the library will print a message saying: &#8220;INTERNAL_ERROR: Delete stack overflow, please increase MAX_DELETE_STACK&#8221;. <em>[Default value = 16]</em></li>
</ul>
<p>Finally, there are two more functions you could use wherever needed:</p>
<ul>
<li><strong>PrintTotalAllocatedMemory():</strong> Prints the accumulative amount of memory allocated at the moment of the call.</li>
<li><strong>PrintMemoryReservedByCMemDbgLibrary():</strong> Prints the amount of memory reserved by the library (defined at compilation time by the MAX_ALLOC constant).</li>
</ul>
<p>That&#8217;s all&#8230; I said it was easy to use.</p>
<p>Anyway, if after reading the cppMemDbg.h file&#8217;s comments, you have any questions, comments or suggestions, please feel free to contact me.</p>
<p>Here is the <a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/">Attendance Control</a> project modified to test it for memory leaks and allocation/deallocation problems with the cppMemDbg library:</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/cppmemdbg/ControlAsistencia_cppMemDbg.zip">Download sample project</a></p>
</div>
<p>The code is portable between Linux and Windows (I&#8217;ve tested it myself on both platforms and it worked seamlessly).</p>
<p>It&#8217;s been developed, compiled and tested using <a href="http://wxdsgn.sourceforge.net/">wxDev-C++</a> for Windows with the <a href="http://www.mingw.org/">MinGW compiler</a> (included in the bundle). In Linux, it was compiled using the GNU GCC compiler.</p>
<p>It is configured to send the output to the &#8220;TestMemDbg.txt&#8221; file in the working directory. This is the relevant piece of the Main.cpp file:</p>
<pre class="brush: cpp; first-line: 101; highlight: [107,109]; title: ; notranslate">
//...

#include &quot;ControlDeAsistencia.h&quot;
#include &quot;BasicFunctions.h&quot;
#include &lt;fstream&gt;

#include &quot;cppMemDbg.h&quot;

cppMemDbg cDbg(&quot;TestMemDbg.txt&quot;);

//...
</pre>
<p>And this is its successful output (the real output es tabbed to make it easier the analysis en a spreadsheet software):</p>

<pre class="console">>new[]  003D3F58  14  [String.cpp:59]
>new[]  003D2438  14  [String.cpp:59]
>delete[]  003D3F58  14  (String.cpp:59)  [String.h:41]
>new[]  003D3EB0  7  [String.cpp:59]
>new[]  003D2450  7  [String.cpp:59]
[...]
>delete[]  003D2558  4  (String.cpp:59)  [String.h:41]
>delete[]  003D24F0  4  (String.cpp:59)  [String.h:41]
>delete  003D2490  40  (Lista.h:120)  [Lista.h:112]
>INFO  No memory leaks detected
</pre>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="cppMemDbg">cppMemDbg</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="mingw memory leak detection">mingw memory leak detection</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="memory leak detection mingw">memory leak detection mingw</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="mingw memory leak">mingw memory leak</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="c memory leak library">c memory leak library</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="c memory leak detector">c memory leak detector</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="memory leak mingw">memory leak mingw</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="c memory leak detection library">c memory leak detection library</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="memory leak detection c">memory leak detection c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="libreria para delete en c">libreria para delete en c</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" rel="bookmark" title="cMemDbg &#8211; Easy to use C memory leak detection library">cMemDbg &#8211; Easy to use C memory leak detection library </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attendance Control (wxWidgets Version)</title>
		<link>http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/</link>
		<comments>http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:00:25 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[wxWidgets]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Teaching]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[wxDev]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=479</guid>
		<description><![CDATA[wxAttendanceControl is a GUI version of Attendance Control. It&#8217;s been prepared as a further introduction exercise to the wxWidgets GUI (Graphical User Interface) usage (the basic introduction exercise was the Celsius to Fahrenheit application). For the complete exercise explanation please visit the original Attendance Control exercise. Since the code of the console project was written [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" rel="bookmark" title="Celsius to Fahrenheit">Celsius to Fahrenheit </a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" rel="bookmark" title="Office Document Property Resetter">Office Document Property Resetter </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>wxAttendanceControl is a GUI version of <a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/">Attendance Control</a>.</p>
<p>It&#8217;s been prepared as a further introduction exercise to the <a href="http://www.wxwidgets.org/">wxWidgets</a> GUI (Graphical User Interface) usage (the basic introduction exercise was the <a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/">Celsius to Fahrenheit</a> application).</p>
<p>For the complete exercise explanation please visit the <a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/">original Attendance Control exercise</a>.</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia1.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia1-300x225.png" alt="wxControlAsistencia1" title="wxControlAsistencia1" width="300" height="225" class="aligncenter size-medium wp-image-506" /></a></p>
<p><span id="more-479"></span></p>
<p>Since the code of the console project was written trying to make it encapsulated and portable, we re-utilized as most of the files that we could. For a detailed description of the files utilized, look at the &#8220;Files.xls&#8221; file on the source code package.</p>
<p>What&#8217;s next will be a very similar overview to the original one, but with the wxWidgets Version screens.</p>
<p>When you first start the program, you can only log in as admin (-1234:prueba)&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia2.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia2-300x225.png" alt="wxControlAsistencia2" title="wxControlAsistencia2" width="300" height="225" class="aligncenter size-medium wp-image-507" /></a></p>
<p>Then, you&#8217;ll get to the administration menu:</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia3.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia3-300x225.png" alt="wxControlAsistencia3" title="wxControlAsistencia3" width="300" height="225" class="aligncenter size-medium wp-image-508" /></a></p>
<p>The next step should be registering the different users using the first option:</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia4.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia4-300x225.png" alt="wxControlAsistencia4" title="wxControlAsistencia4" width="300" height="225" class="aligncenter size-medium wp-image-509" /></a></p>
<p>After that, they&#8217;ll be able to sign in themselves:</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia5.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia5-300x225.png" alt="wxControlAsistencia5" title="wxControlAsistencia5" width="300" height="225" class="aligncenter size-medium wp-image-510" /></a></p>
<p>So they&#8217;ll get into the attendance screen to record their actions:</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia6.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia6-300x225.png" alt="wxControlAsistencia6" title="wxControlAsistencia6" width="300" height="225" class="aligncenter size-medium wp-image-511" /></a></p>
<p>Each of them &#8217;till they go back to home&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia7.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia7-300x225.png" alt="wxControlAsistencia7" title="wxControlAsistencia7" width="300" height="225" class="aligncenter size-medium wp-image-512" /></a></p>
<p>When any administrator wants to watch the full listing of users and actions, he simply logs in and goes to the second button of the administration menu:</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia8.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia8-300x225.png" alt="wxControlAsistencia8" title="wxControlAsistencia8" width="300" height="225" class="aligncenter size-medium wp-image-513" /></a></p>
<p>It&#8217;s simply the same text that appeared on the console version. But, now you have a second option (third button):</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia9.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia9-300x225.png" alt="wxControlAsistencia9" title="wxControlAsistencia9" width="300" height="225" class="aligncenter size-medium wp-image-514" /></a></p>
<p>If he wants, he can save that information to a file by using, instead, the fourth button:</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia10.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia10-300x225.png" alt="wxControlAsistencia10" title="wxControlAsistencia10" width="300" height="225" class="aligncenter size-medium wp-image-515" /></a></p>
<p>Or the fifth:</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia11.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia11-300x225.png" alt="wxControlAsistencia11" title="wxControlAsistencia11" width="300" height="225" class="aligncenter size-medium wp-image-516" /></a></p>
<p>Finally, he can close the program by going to the sixth button (losing all the data)&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia12.png" rel="lightbox[479]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/wxControlAsistencia12-300x225.png" alt="wxControlAsistencia12" title="wxControlAsistencia12" width="300" height="225" class="aligncenter size-medium wp-image-505" /></a></p>
<p>That&#8217;s all&#8230;</p>
<p>Now, like I&#8217;ve done before, I&#8217;ll leave the links.</p>
<p>The code should be portable, but I&#8217;ve only tried it on Windows.</p>
<p>It&#8217;s been developed, compiled and tested using <a href="http://wxdsgn.sourceforge.net/">wxDev-C++</a> for Windows with the <a href="http://www.mingw.org/">MinGW compiler</a> (included in the bundle).</p>
<p><a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">wxControlAsistencia is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/wx-control-asistencia/wxControlAsistencia_1.01.zip">Download wxControlAsistencia v1.01</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/wx-control-asistencia/wxControlAsistencia_1.01_Source.zip">Download v1.01 Source Code</a></p>
</div>
<p><strong>Update:</strong> minor bug in String.cpp fixed => version 1.01<br />
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="codigo fuente control de asistencia">codigo fuente control de asistencia</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="codigo fuente sistema asistencia">codigo fuente sistema asistencia</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="wxwidgets gui">wxwidgets gui</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="control de asistencias de alumnos">control de asistencias de alumnos</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="control de asistencia codigo fuente">control de asistencia codigo fuente</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="codigo fuente de control de asistencia">codigo fuente de control de asistencia</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="CODIGO FUENTE CONTROL DE PERSONAL">CODIGO FUENTE CONTROL DE PERSONAL</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="control asistencia">control asistencia</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="wxControlAsistencia">wxControlAsistencia</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="codigo fuente de control de personal">codigo fuente de control de personal</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" rel="bookmark" title="Celsius to Fahrenheit">Celsius to Fahrenheit </a></li>
<li><a href="http://www.neoegm.com/tech/software/tools/office-document-property-resetter/" rel="bookmark" title="Office Document Property Resetter">Office Document Property Resetter </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Celsius to Fahrenheit</title>
		<link>http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/</link>
		<comments>http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 22:00:33 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[wxWidgets]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Celsius]]></category>
		<category><![CDATA[Convert]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Fahrenheit]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MinGW]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Teaching]]></category>
		<category><![CDATA[Temperature]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[wxDev]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=474</guid>
		<description><![CDATA[This is a very tiny and simple application I’ve written to teach the basic usage of wxWidgets as an introduction to GUI (Graphical User Interfaces).

Its purpose is just what it’s name says: converting from celsius degrees to fahrenheit degrees (and sideways).<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/online-tools/convert-celsius-to-fahrenheit-online/" rel="bookmark" title="Convert Celsius to Fahrenheit Online">Convert Celsius to Fahrenheit Online </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" rel="bookmark" title="Attendance Control (wxWidgets Version)">Attendance Control (wxWidgets Version) </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>If you just want to convert temperatures by using a website, you should visit the <a href="http://www.neoegm.com/tech/online-tools/convert-celsius-to-fahrenheit-online/">online celsius to fahrenheit conversion tool</a>. Otherwise, keep reading&#8230;</p>
<p>This is a very tiny and simple application I&#8217;ve written to teach the basic usage of <a href="http://www.wxwidgets.org/" target="_blank">wxWidgets</a> as an introduction to GUI (Graphical User Interfaces).</p>
<p>Its purpose is just what it&#8217;s name says: converting from celsius degrees to fahrenheit degrees (and sideways).</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/07/CelsiusAFahrenheit.png" alt="CelsiusAFahrenheit" title="CelsiusAFahrenheit" width="374" height="229" class="aligncenter size-full wp-image-481" /></p>
<p><span id="more-474"></span></p>
<p>These are the two formulas needed to make the program (in fact one is derived from the other, but for the sake of simplicity, I&#8217;m leaving both):</p>
<pre class="brush: plain; light: true; title: ; notranslate">
Tcelsius = (5/9) * (Tfahrenheit - 32)
Tfahrenheit = (9/5) * Tcelsius + 32
</pre>
<p>It&#8217;s been developed, compiled and tested using <a href="http://wxdsgn.sourceforge.net/">wxDev-C++</a> for Windows with the <a href="http://www.mingw.org/">MinGW compiler</a> (included in the bundle).</p>
<p>The code should be <strong>portable</strong>, but I haven&#8217;t tested it myself on other platforms.</p>
<p><a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">CelsiusAFahrenheit is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/celsius-to-fahrenheit/CelsiusAFahrenheit_1.0.zip">Download CelsiusAFahrenheit v1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/celsius-to-fahrenheit/CelsiusAFahrenheit_1.0_Source.zip">Download v1.0 Source Code</a></p>
</div>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="convertir grados fahrenheit a centigrados">convertir grados fahrenheit a centigrados</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="grados celsius a farenheit">grados celsius a farenheit</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="convertir grados farenheit a centigrados">convertir grados farenheit a centigrados</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="convertir centigrados a farenheit">convertir centigrados a farenheit</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="grados farenheit a celsius">grados farenheit a celsius</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="convertir celsius a farenheit">convertir celsius a farenheit</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="convertir de fahrenheit a celsius">convertir de fahrenheit a celsius</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="convertir grados centigrados a farenheit en java">convertir grados centigrados a farenheit en java</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="convertir grados farenheit a celsius">convertir grados farenheit a celsius</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/" title="como convertir grados farenheit a centigrados">como convertir grados farenheit a centigrados</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/online-tools/convert-celsius-to-fahrenheit-online/" rel="bookmark" title="Convert Celsius to Fahrenheit Online">Convert Celsius to Fahrenheit Online </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" rel="bookmark" title="Attendance Control (wxWidgets Version)">Attendance Control (wxWidgets Version) </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attendance Control</title>
		<link>http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/</link>
		<comments>http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 21:00:42 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Attendance]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[DOS]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Teaching]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[wxDev]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=476</guid>
		<description><![CDATA[&#8220;Attendance Control&#8221; is a console application made as an exercise to integrate the different C++ concepts taught in class up to the middle of the year. The main objective is to be able to develop a employee attendance control which records the times (and justifications, if corresponding) of each time the employees arrive, go to [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" rel="bookmark" title="Attendance Control (wxWidgets Version)">Attendance Control (wxWidgets Version) </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>&#8220;Attendance Control&#8221; is a console application made as an <strong>exercise</strong> to integrate the different C++ concepts taught in class up to the middle of the year.</p>
<p>The main objective is to be able to develop a employee attendance control which records the times (and justifications, if corresponding) of each time the employees arrive, go to lunch, return from lunch and go back to home.</p>

<pre class="console">Sistema de control de asistencia de personal
--------------------------------------------

DNI:

</pre>
<p><span id="more-476"></span></p>
<p>The complete wording says:</p>
<blockquote><p>
Develop an employee attendance control system (for later verification of absences and late arrivals with their corresponding justifications) and its managemente private part (user registration and gathered data visualization).</p>
<p>The main screen must staywaiting for ID <strong>[DNI]</strong> and password.</p>
<p>There must be a preset admin user with <strong>DNI</strong> = -1234 and Password = prueba.</p>
<p>In case of being an administrator user, you&#8217;ll be able to access the management part, with the following options:</p>
<p>	1- Alta de usuario <em>[New user]</em><br />
	2- Lista de usuarios (datos adquiridos) <em>[User list (gathered data)]</em><br />
	3- Salida a archivo <em>[Output to file]</em><br />
	4- Cerrar la aplicación <em>[Close the application]</em><br />
	0- Volver a la pantalla principal <em>[Back to the main screen]</em></p>
<p>Otherwise, it will be asked which kind of action are you about to do (Arrival <strong>[Ingreso]</strong>, return to home <strong>[Salida]</strong>, lunch <strong>[Salida a almuerzo]</strong> or return from lunch <strong>[Retorno de almuerzo]</strong>) and its justification in case it corresponds, and they will be recorded along with the current time in a &#8220;Events&#8221; record of the corresponding user.</p>
<p>The user required data is:<br />
	DNI <em>[ID]</em><br />
	Nombre completo <em>[Full name]</em><br />
	Contraseña <em>[Password]</em><br />
	Si es administrador <em>[Whether it is administrator]</em><br />
	Eventos relacionados <em>[Related events]</em></p>
<p>It&#8217;s desired to use as a base the class &#8220;PersonaBasica&#8221; <em>[Basic person]</em> which has already been developed by the IT department, whose header file &#8220;PersonaBasica.h&#8221; is attached below:</p>
<pre class="brush: cpp; title: ; notranslate">
#include &quot;String.h&quot;
#include &lt;iostream&gt;

class PersonaBasica
{
	String m_sNombreCompleto;
	long m_nDNI;

public:
	//Construcción
	PersonaBasica() { m_nDNI = 0; }

	//Encapsulaciones
	long DNI() const { return m_nDNI; }
	void DNI(long val) { m_nDNI = val; }

	String NombreCompleto() const { return m_sNombreCompleto; }
	void NombreCompleto(String val) { m_sNombreCompleto = val; }
};

std::ostream&amp; operator&lt;&lt;(std::ostream&amp; oStream, PersonaBasica&amp; rpPersonaBasica);
</pre>
<p>Note: the lengths of the data to be registered is completely unknown and rumors are circulating that the users are used to write pretty elaborate justifications.
</p></blockquote>
<p>When you first start the program, you can only log in as admin (-1234:prueba)&#8230;</p>

<pre class="console">Sistema de control de asistencia de personal
--------------------------------------------

DNI: -1234
Contraseña: prueba
Usuario "Administrador" reconocido.

Presione una tecla para continuar...

</pre>
<p>Then, you&#8217;ll get to the administration menu:</p>

<pre class="console">Sistema de control de asistencia de personal (ADMNISTRACION)
------------------------------------------------------------

1- Alta de usuario
2- Lista de usuarios (datos adquiridos)
3- Salida a archivo
4- Cerrar la aplicación
0- Volver a la pantalla principal

Ingrese la opción deseada:

</pre>
<p>The next step should be registering the different users using the first option:</p>

<pre class="console">Sistema de control de asistencia de personal (Alta de usuario)
--------------------------------------------------------------

DNI: 12345678
Nombre completo: Pedro Gutierrez
Password: 123bbb
Administrador [1 = Sí/0 = No]: 0

Persona agregada satisfatoriamente.

Presione una tecla para continuar...

</pre>
<p>After that, they&#8217;ll be able to sign in themselves:</p>

<pre class="console">Sistema de control de asistencia de personal
--------------------------------------------

DNI: 12345678
Contraseña: 123bbb
Usuario "Pedro Gutierrez" reconocido.

Presione una tecla para continuar...

</pre>
<p>So they&#8217;ll get into the attendance screen to record their actions:</p>

<pre class="console">Asistencia de "Pedro Gutierrez"
-------------------------------

Tipo de asistencia:
        1- Ingreso
        2- Salida
        3- Salida a almorzar
        4- Vuelta de almorzar
Selección: 1

Justificación (si corresponde): Llegué tarde porque había
corte de calles.

Evento agregado satisfactoriamente.

Presione una tecla para continuar...

</pre>
<p>Each of them &#8217;till they go back to home&#8230;</p>

<pre class="console">Asistencia de "Pedro Gutierrez"
-------------------------------

Tipo de asistencia:
        1- Ingreso
        2- Salida
        3- Salida a almorzar
        4- Vuelta de almorzar
Selección: 2

Justificación (si corresponde): Me voy más temprano porque
tengo que llevar a mi hijo al médico.

Evento agregado satisfactoriamente.

Presione una tecla para continuar...

</pre>
<p>When any administrator wants to watch the full listing of users and actions, he simply logs in and goes to the second option of the administration menu:</p>

<pre class="console">Sistema de control de asistencia de personal (Lista de
usuarios)
------------------------------------------------------

DNI: -1234
Nombre completo: Administrador
Password: ********
Administrador: 1
Cantidad de eventos: 0
Eventos:

[Esta persona no posee eventos]


DNI: 12345678
Nombre completo: Pedro Gutierrez
Password: ********
Administrador: 0
Cantidad de eventos: 4
Eventos:

Hora: 28/07/2009 14:13:27
Tipo: Ingreso
Justificación: Llegué tarde porque había corte de calles.

Hora: 28/07/2009 14:14:23
Tipo: Salida a almorzar
Justificación:

Hora: 28/07/2009 14:14:44
Tipo: Vuelta de almorzar
Justificación:

Hora: 28/07/2009 14:14:52
Tipo: Salida
Justificación: Me voy más temprano porque tengo que llevar a
mi hijo al médico.

Presione una tecla para continuar...

</pre>
<p>If he wants, he can save that information to a file by using, instead, the third option:</p>

<pre class="console">Sistema de control de asistencia de personal (ADMNISTRACION)
------------------------------------------------------------

1- Alta de usuario
2- Lista de usuarios (datos adquiridos)
3- Salida a archivo
4- Cerrar la aplicación
0- Volver a la pantalla principal

Ingrese la opción deseada: 3

Ingrese la ruta del archivo a guardar: c:asistencia.txt
Archivo guardado satisfactoriamente

Presione una tecla para continuar...

</pre>
<p>Finally, he can close the program by going to the fourth option (losing all the data)&#8230;</p>

<pre class="console">Sistema de control de asistencia de personal (ADMNISTRACION)
------------------------------------------------------------

1- Alta de usuario
2- Lista de usuarios (datos adquiridos)
3- Salida a archivo
4- Cerrar la aplicación
0- Volver a la pantalla principal

Ingrese la opción deseada: 4
Saliendo de la aplicación...

Presione una tecla para continuar...

</pre>
<p>That&#8217;s the idea of the application&#8230;</p>
<p>Now I&#8217;ll leave the links for the ones who don&#8217;t want to solve it themselves (or the ones who just want to run it and watch it work).</p>
<p>The code is portable between Linux and Windows (I&#8217;ve tested it myself on both platforms and it worked seamlessly).</p>
<p>It&#8217;s been developed, compiled and tested using <a href="http://wxdsgn.sourceforge.net/">wxDev-C++</a> for Windows with the <a href="http://www.mingw.org/">MinGW compiler</a> (included in the bundle). In Linux, it was compiled using the GNU GCC compiler.</p>
<p><a href="http://www.gnu.org/licenses/gpl-3.0.txt"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/gplv3-127x511.png" alt="GNU GPL v3" title="GNU GPL v3" width="127" height="51" class="aligncenter size-full wp-image-251" /></a> <span class="aligncenter">ControlAsistencia is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/control-asistencia/ControlAsistencia_1.02.zip">Download ControlAsistencia v1.02</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/control-asistencia/ControlAsistencia_1.02_Source.zip">Download v1.02 Source Code</a></p>
</div>
<p><strong>Update:</strong> minor bug in String.cpp fixed => version 1.01<br />
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control de asistencia de personal en excel">control de asistencia de personal en excel</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control de asistencia en excel">control de asistencia en excel</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="asistencia de personal en excel">asistencia de personal en excel</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="como hacer un control de asistencia en excel">como hacer un control de asistencia en excel</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control de asistencia">control de asistencia</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="Control de Asistencia GNU">Control de Asistencia GNU</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control de asistencia gpl">control de asistencia gpl</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control de asistencia de personal">control de asistencia de personal</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control asistencia excel">control asistencia excel</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control de asistencia linux">control de asistencia linux</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" rel="bookmark" title="Attendance Control (wxWidgets Version)">Attendance Control (wxWidgets Version) </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cMemDbg &#8211; Easy to use C memory leak detection library</title>
		<link>http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/</link>
		<comments>http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 18:42:07 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Include]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Memory Leaks]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Source Code]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=58</guid>
		<description><![CDATA[After some time working with C, I decided to develop a very easy to use library which can help you to detect and track memory leaks. There are lots of solutions for this on the net, but this one has the particularity of being really simple to implement. You just have to add the following [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" rel="bookmark" title="cppMemDbg &#8211; Easy to use C++ memory leak detection library">cppMemDbg &#8211; Easy to use C++ memory leak detection library </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>After some time working with C, I decided to develop a very easy to use library which can help you to detect and track memory leaks.</p>
<p>There are lots of solutions for this on the net, but this one has the particularity of being really simple to implement.</p>
<p><span id="more-58"></span><br />
You just have to add the following include to your main include file (a file that gets included by each file of your project) or, in case you don&#8217;t have one, to each file that calls any memory allocation function (malloc, realloc, calloc or free). The only extra caution you have to take into account is to include it <strong>after</strong> the standard headers (stdio.h, stdlib.h, malloc.h, etc.).</p>
<p>This is the line:</p>
<pre class="brush: plain; light: true; title: ; notranslate">#include &quot;cMemDbg.h&quot;</pre>
<p>That&#8217;s all&#8230; Expecting more? Well, there is a final step&#8230; You have to make this call just before you exit your program so you can get the detailed conclusions:</p>
<pre class="brush: plain; light: true; title: ; notranslate">PrintMemoryLeakInfo();</pre>
<p>Easy, not?</p>
<p>That was all&#8230; Really.</p>
<p>Now, before going to more &#8220;expert&#8221; features, I&#8217;ll leave here the link to download the library for the ones who don&#8217;t wish to keep reading:</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/cmemdbg/cMemDbg_1.0.zip">Download cMemDbg 1.0</a></p>
</div>
<p>Now let&#8217;s continue&#8230;</p>
<p>The library comes with three configurable settings (available in cMemDbg.c):</p>
<ul>
<li><strong>PRINT_OPERATIONS:</strong> If set to 1, it will print to the configured output (stdout by default) each memory alloc operation done in the program (allocation or free). Otherwise, the library will just print problems and notifications and the final dump. <em>[Default value = 1]</em></li>
<li><strong>MAX_ALLOC:</strong> Internal library memory stack length (in elements). It is the max amount of allocations that can be tracked without being freed. You can increase this value at will if needed. In fact, if it is needed, the library will print a message saying: &#8220;INTERNAL_ERROR: Allocation stack overflow, please increase MAX_ALLOC&#8221;. <em>[Default value = 256]</em></li>
<li><strong>PRINT_OUTPUT:</strong> Location to print the library generated notifications (can be any stream/file in which you could print using fprintf). <em>[Default value = stdout]</em></li>
</ul>
<p>Finally, there are two more functions you could use wherever needed:</p>
<ul>
<li><strong>PrintTotalAllocatedMemory():</strong> Prints the accumulative amount of memory allocated at the moment of the call.</li>
<li><strong>PrintMemoryReservedByCMemDbgLibrary():</strong> Prints the amount of memory reserved by the library (defined at compilation time by the MAX_ALLOC constant).</li>
</ul>
<p>That&#8217;s all&#8230; I said it was easy to use.</p>
<p>Anyway, if after reading the cMemDbg.h files&#8217; comments, you have any questions, comments or suggestions, please feel free to contact me.<br />
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="detectar fugas de memoria en c">detectar fugas de memoria en c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="cmemdbg">cmemdbg</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="c memory leak">c memory leak</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="detectar fuga memoria c">detectar fuga memoria c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="detectar fugas de memoria">detectar fugas de memoria</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="internal_error allocation stack overflow please increase max_alloc">internal_error allocation stack overflow please increase max_alloc</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="detectar memory leaks c">detectar memory leaks c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="detectar fugas de memoria c">detectar fugas de memoria c</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="freebsd memory leak detection">freebsd memory leak detection</a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="Detector de fugas de memoria">Detector de fugas de memoria</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" rel="bookmark" title="cppMemDbg &#8211; Easy to use C++ memory leak detection library">cppMemDbg &#8211; Easy to use C++ memory leak detection library </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" rel="bookmark" title="Simple C++ List Class">Simple C++ List Class </a></li>
<li><a href="http://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" rel="bookmark" title="Simple C++ String Class">Simple C++ String Class </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
