<?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; C</title>
	<atom:link href="https://www.neoegm.com/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>https://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>How to compile C++ console programs which support special characters (ISO-8859-1)</title>
		<link>https://www.neoegm.com/tech/programming/c-cpp/how-to-compile-c-console-programs-which-support-special-characters-iso-8859-1/</link>
		<comments>https://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="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="https://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="https://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>https://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>https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/</link>
		<comments>https://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="https://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="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="c list class">c list class</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="list class c">list class c</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="class list c">class list c</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="lista simple c">lista simple c</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="clase lista c">clase lista c</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="LISTA SIMPLE EN C">LISTA SIMPLE EN C</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="listas simples en c">listas simples en c</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="clase lista en c">clase lista en c</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/" title="c class list">c class list</a></li>
<li><a href="https://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="https://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="https://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="https://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>https://www.neoegm.com/tech/programming/c-cpp/simple-list-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Office Document Property Resetter</title>
		<link>https://www.neoegm.com/tech/software/tools/office-document-property-resetter/</link>
		<comments>https://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="https://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="https://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="https://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="https://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="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="document property">document property</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="VBE6EXT OLB">VBE6EXT OLB</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="mensajes de texto">mensajes de texto</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="propiedades de office">propiedades de office</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="descargar msword olb">descargar msword olb</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="descargar archivo VBE6EXT OLB">descargar archivo VBE6EXT OLB</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="vb6ext olb download">vb6ext olb download</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="descargar vb6ext olb">descargar vb6ext olb</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" title="VB6EXT OLB">VB6EXT OLB</a></li>
<li><a href="https://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="https://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="https://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="https://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>https://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>https://www.neoegm.com/tech/programming/c-cpp/simple-string-class/</link>
		<comments>https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="clase string c">clase string c</a></li>
<li><a href="https://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="https://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="string c español">string c español</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="simple string class c">simple string class c</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="simple string class">simple string class</a></li>
<li><a href="https://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="https://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="string c">string c</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/simple-string-class/" title="simple c string class">simple c string class</a></li>
<li><a href="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="https://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>https://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>https://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/</link>
		<comments>https://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="https://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="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/cppmemdbg-easy-to-use-cpp-memory-leak-detection-library/" title="cppMemDbg">cppMemDbg</a></li>
<li><a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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>https://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>SMS Scheduler</title>
		<link>https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/</link>
		<comments>https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 21:00:09 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Cellular]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Message]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Pocket PC]]></category>
		<category><![CDATA[Schedule]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=637</guid>
		<description><![CDATA[4 o&#8217;clock in the morning&#8230; You&#8217;re going late to bed&#8230; Suddenly, you remember you had to send someone a message with some important information he should have at 9 o&#8217;clock&#8230; Of course you don&#8217;t want to wake up at 9:00&#8230; If you send the message at this moment, you&#8217;ll probably wake him up if he [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" rel="bookmark" title="Wake On LAN (Remotely power on a computer)">Wake On LAN (Remotely power on a computer) </a></li>
<li><a href="https://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="https://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>4 o&#8217;clock in the morning&#8230; You&#8217;re going late to bed&#8230; Suddenly, you remember you had to send someone a message with some important information he should have at 9 o&#8217;clock&#8230;</p>
<p>Of course you don&#8217;t want to wake up at 9:00&#8230; If you send the message at this moment, you&#8217;ll probably wake him up if he didn&#8217;t power off the phone (he deserves it! :))&#8230;</p>
<p>So what can you do? This tool is the answer&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/07/SMS_Scheduler_1.png" alt="SMS_Scheduler_1" title="SMS_Scheduler_1" width="317" height="399" class="aligncenter size-full wp-image-638" /></p>
<p><span id="more-637"></span></p>
<p>You can simply fill the message data (Recipient, Body and Desired Time) and press &#8220;Schedule&#8221;&#8230; (Multiple recipients are allowed separating them with semicolons)</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/07/SMS_Scheduler_2.png" alt="SMS_Scheduler_2" title="SMS_Scheduler_2" width="314" height="403" class="aligncenter size-full wp-image-639" /></p>
<p>Then, you can just go to sleep and wait for the message to be delivered at the time you wanted&#8230;</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/07/SMS_Scheduler_5.png" alt="SMS_Scheduler_5" title="SMS_Scheduler_5" width="315" height="401" class="aligncenter size-full wp-image-642" /></p>
<p>If you regret, you can always uncheck the box to cancel the message&#8230; (If not already sent, of course)</p>
<p><img src="http://www.neoegm.com/wp-content/uploads/2009/07/SMS_Scheduler_3.png" alt="SMS_Scheduler_3" title="SMS_Scheduler_3" width="313" height="404" class="aligncenter size-full wp-image-640" /></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">SMS Scheduler 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/07/SMS_Scheduler_4.png" alt="SMS_Scheduler_4" title="SMS_Scheduler_4" width="313" height="400" class="aligncenter size-full wp-image-641" /></p>
<p>The installation package is targeted for Windows Mobile 5. I haven&#8217;t tested it on other versions, but, at least recompiling, should work on others&#8230;</p>
<p>It requires the .NET Compact Framework 2.0 installed on the Pocket PC&#8230; If you don&#8217;t have it, you can simply download the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=aea55f2f-07b5-4a8c-8a44-b4e1b196d5c0&#038;displaylang=en">.NET Compact Framework 2.0 Service Pack 2 Redistributable</a> and install it while having your Pocket PC connected to the computer with ActiveSync running (so it can get copied and installed into the device)&#8230;</p>
<p>The SMS Scheduller installer has to be run with the Pocket PC connected with ActiveSync running too&#8230;</p>
<p>Well, that&#8217;s all&#8230; Now, finally, the links&#8230;</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/sms-scheduler/SMS_Scheduler_1.0.zip">Download SMS Scheduler v1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/sms-scheduler/SMS_Scheduler_1.0_Source.zip">Download v1.0 Source Code (Full)</a></p>
</div>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="sms scheduler">sms scheduler</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="programar mensajes de texto">programar mensajes de texto</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="PROGRAMADOR DE MENSAJES">PROGRAMADOR DE MENSAJES</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="sms scheduler windows mobile">sms scheduler windows mobile</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="programar mensaje">programar mensaje</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="programar mensaje de texto">programar mensaje de texto</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="programar un mensaje">programar un mensaje</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="sms scheduler source code">sms scheduler source code</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="programador de mensajes de texto">programador de mensajes de texto</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" title="sms scheduler full">sms scheduler full</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" rel="bookmark" title="Wake On LAN (Remotely power on a computer)">Wake On LAN (Remotely power on a computer) </a></li>
<li><a href="https://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="https://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>https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attendance Control (wxWidgets Version)</title>
		<link>https://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/</link>
		<comments>https://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="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="https://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="https://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="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="wxwidgets gui">wxwidgets gui</a></li>
<li><a href="https://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="https://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="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="control asistencia">control asistencia</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/wxwidgets/wx-control-de-asistencia/" title="wxControlAsistencia">wxControlAsistencia</a></li>
<li><a href="https://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="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" rel="bookmark" title="Attendance Control">Attendance Control </a></li>
<li><a href="https://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="https://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>https://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>https://www.neoegm.com/tech/programming/c-cpp/wxwidgets/celsius-to-fahrenheit/</link>
		<comments>https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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>https://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>https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/</link>
		<comments>https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control de asistencia">control de asistencia</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="Control de Asistencia GNU">Control de Asistencia GNU</a></li>
<li><a href="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control de asistencia gpl">control de asistencia gpl</a></li>
<li><a href="https://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="https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/" title="control asistencia excel">control asistencia excel</a></li>
<li><a href="https://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="https://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="https://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="https://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>https://www.neoegm.com/tech/programming/c-cpp/control-de-asistencia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wake On LAN (Remotely power on a computer)</title>
		<link>https://www.neoegm.com/tech/software/tools/wake-on-lan/</link>
		<comments>https://www.neoegm.com/tech/software/tools/wake-on-lan/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 22:00:36 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[DOS]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[LAN]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Power]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=414</guid>
		<description><![CDATA[Have you ever wondered how you could power on a computer remotely? Well, with this program you can do it! You have to configure the remote computer (the one which will be powered on) to support the Wake-On-LAN feature. This is done in the CMOS settings looking for the &#8220;Power/ACPI&#8221; settings or something like that. [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" rel="bookmark" title="UpTime (How much time has the computer been powered on)">UpTime (How much time has the computer been powered on) </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" rel="bookmark" title="Guitar Trainer">Guitar Trainer </a></li>
<li><a href="https://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>Have you ever wondered how you could power on a computer remotely?</p>
<p>Well, with this program you can do it!</p>

<pre class="console">C:\>wol

Wake-On-Lan (WOL) Tool v1.0 by NeoEGM
http://www.neoegm.com/software/wake-on-lan/
-------------------------------------------

Usage: wol <mac address>

Wakes the computer with the specified MAC address.

Accepted MAC address formats: 01-4B-8E-00-52-A1
                              01-4b-8e-00-52-a1
                              01:4B:8E:00:52:A1
                              01:4b:8e:00:52:a1
                              014B.8E00.52A1
                              014b.8e00.52a1
                              014b8e0052a1
                              014B8E0052A1

</pre>
<p><span id="more-414"></span></p>
<p>You have to configure the remote computer (the one which will be powered on) to support the Wake-On-LAN feature. This is done in the CMOS settings looking for the &#8220;Power/ACPI&#8221; settings or something like that.</p>
<p>Then, you have to find out the MAC Address (sometimes called &#8220;Physical Address&#8221;) of the network adapter connected to the LAN. On Windows it&#8217;s done doing this from the console:</p>

<pre class="console">C:\>ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : mypc1
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Unknown
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Marvell Yukon 88E8056
PCI-E Gigabit Ethernet Controller
   Physical Address. . . . . . . . . : 00-1F-C2-14-B3-F4
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 192.168.0.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.0.254
   DNS Servers . . . . . . . . . . . : 192.168.0.254

</pre>
<p>In this case, it&#8217;s &#8220;00-1F-C2-14-B3-F4&#8243;, so the tool can be used like this:</p>

<pre class="console">C:\>wol 00-1F-C2-14-B3-F4

Wake-On-Lan (WOL) Tool v1.0 by NeoEGM
http://www.neoegm.com/software/wake-on-lan/
-------------------------------------------

Wake-up packet sent to MAC address 00-1F-C2-14-B3-F4.

</pre>
<p>There are some restrictions that apply to the hardware, but a summary may be: the motherboard must support the &#8220;Wake-On-Lan (WOL)&#8221; feature and the NIC (network adapter) must have a wire called with that name connected to the motherboard. <strong>If the motherboard of the computer you want to power on is not so old and has an integrated (on-board) Ethernet card, then it&#8217;ll probably work.</strong></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">WakeOnLan 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 links&#8230;</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/wake-on-lan/WakeOnLan_1.0.zip">Download WakeOnLan v1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/wake-on-lan/WakeOnLan_1.0_Source.zip">Download v1.0 Source Code</a></p>
</div>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="marvell yukon 88E8056 wake on lan">marvell yukon 88E8056 wake on lan</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="marvell yukon 88e8056 wol">marvell yukon 88e8056 wol</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="wake on lan GPL">wake on lan GPL</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="wake on lan C">wake on lan C</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="Marvell Yukon 88E8056 PCI-E Gigabit Ethernet Controller WAKE ON LAN">Marvell Yukon 88E8056 PCI-E Gigabit Ethernet Controller WAKE ON LAN</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="Marvell Yukon 88E8056 PCI-E Gigabit Ethernet Controller WOL">Marvell Yukon 88E8056 PCI-E Gigabit Ethernet Controller WOL</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="88e8056 wol">88e8056 wol</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="Marvell 88E8056 Wol">Marvell 88E8056 Wol</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="Marvell 88E8056 wake on lan">Marvell 88E8056 wake on lan</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" title="marvell yukon wake on lan">marvell yukon wake on lan</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" rel="bookmark" title="UpTime (How much time has the computer been powered on)">UpTime (How much time has the computer been powered on) </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" rel="bookmark" title="Guitar Trainer">Guitar Trainer </a></li>
<li><a href="https://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>https://www.neoegm.com/tech/software/tools/wake-on-lan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UpTime (How much time has the computer been powered on)</title>
		<link>https://www.neoegm.com/tech/software/tools/uptime/</link>
		<comments>https://www.neoegm.com/tech/software/tools/uptime/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 13:15:38 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Easy]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Uptime]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/?p=391</guid>
		<description><![CDATA[With this tiny tool, you can know how much time has the computer been powered on&#8230; UpTime is licensed under the GNU GPL v3 (attached)&#8230; As usual, here are the links&#8230; Download UpTime v1.0 Download v1.0 Source Code For the ones who want to easily read the relevant code: Incoming search terms for the article: [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" rel="bookmark" title="Wake On LAN (Remotely power on a computer)">Wake On LAN (Remotely power on a computer) </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" rel="bookmark" title="Office Document Property Resetter">Office Document Property Resetter </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" rel="bookmark" title="Guitar Trainer">Guitar Trainer </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>With this tiny tool, you can know how much time has the computer been powered on&#8230;</p>
<p><img class="aligncenter size-full wp-image-392" title="UpTime" src="http://www.neoegm.com/wp-content/uploads/2009/07/UpTime.png" alt="UpTime" width="485" height="141" /></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">UpTime is licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a> (attached)&#8230;</span></p>
<p>As usual, here are the links&#8230;</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/uptime/UpTime_1.0.zip">Download UpTime v1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/uptime/UpTime_1.0_Source.zip">Download v1.0 Source Code</a></p>
</div>
<p>For the ones who want to easily read the relevant code:</p>
<pre class="brush: cpp; auto-links: false; collapse: true; light: false; title: ; toolbar: true; notranslate">
DWORD dwMilliseconds = GetTickCount();

int nSeconds = (dwMilliseconds/1000)%60;
int nMinutes = (dwMilliseconds/1000/60)%60;
int nHours = (dwMilliseconds/1000/60/60)%24;
int nDays = dwMilliseconds/1000/60/60/24;

char pszStr[256];
sprintf_s(pszStr, 256, &quot;%d days, %d hours, %d minutes and %d seconds&quot;, nDays, nHours, nMinutes, nSeconds);

MessageBox(NULL, pszStr, &quot;UpTime 1.0 by NeoEGM &lt;http://www.neoegm.com/software/uptime/&gt;&quot;, MB_ICONINFORMATION);
</pre>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="como saber cuanto tiempo esta prendida la pc">como saber cuanto tiempo esta prendida la pc</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="como saber cuanto tiempo estuvo prendida la pc">como saber cuanto tiempo estuvo prendida la pc</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="saber cuanto tiempo estuvo prendida la pc">saber cuanto tiempo estuvo prendida la pc</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="como saber cuanto tiempo esta prendida la pc windows 7">como saber cuanto tiempo esta prendida la pc windows 7</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="cuanto tiempo estuvo prendida la pc">cuanto tiempo estuvo prendida la pc</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="como saber cuanto tiempo estubo prendida la pc">como saber cuanto tiempo estubo prendida la pc</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="programa que me indique el tiempo que la computadora esta prendida">programa que me indique el tiempo que la computadora esta prendida</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="saber hace cuanto esta prendida la pc">saber hace cuanto esta prendida la pc</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="tiempo prendida pc">tiempo prendida pc</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" title="pc music server">pc music server</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" rel="bookmark" title="Wake On LAN (Remotely power on a computer)">Wake On LAN (Remotely power on a computer) </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/office-document-property-resetter/" rel="bookmark" title="Office Document Property Resetter">Office Document Property Resetter </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" rel="bookmark" title="Guitar Trainer">Guitar Trainer </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>https://www.neoegm.com/tech/software/tools/uptime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guitar Trainer</title>
		<link>https://www.neoegm.com/tech/software/tools/guitar-trainer/</link>
		<comments>https://www.neoegm.com/tech/software/tools/guitar-trainer/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 09:08:16 +0000</pubDate>
		<dc:creator><![CDATA[NeoEGM]]></dc:creator>
				<category><![CDATA[Guitar Tools]]></category>
		<category><![CDATA[Music Tools]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[Fretboard]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Train]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.neoegm.com/uncategorized/guitar-trainer/</guid>
		<description><![CDATA[Guitar Trainer is a program I&#8217;ve written to make easier the learning of the position of the different notes in the guitar fretboard. There are lots of features pending to be implemented (including sound, different scales, guessing game by position and by sound, etc.), but it&#8217;s quite useful with its current functionality. The fretboard starts [&#8230;]<div class='yarpp-related-rss'>
<strong>
Related posts:<ol>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" rel="bookmark" title="Wake On LAN (Remotely power on a computer)">Wake On LAN (Remotely power on a computer) </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" rel="bookmark" title="UpTime (How much time has the computer been powered on)">UpTime (How much time has the computer been powered on) </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" rel="bookmark" title="SMS Scheduler">SMS Scheduler </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Guitar Trainer is a program I&#8217;ve written to make easier the learning of the position of the different notes in the guitar fretboard. There are lots of features pending to be implemented (including sound, different scales, guessing game by position and by sound, etc.), but it&#8217;s quite useful with its current functionality.</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_FullFretboard.png" target="_blank" rel="lightbox[364]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_FullFretboard-300x235.png" alt="GuitarTrainer_FullFretboard" title="GuitarTrainer_FullFretboard" width="300" height="235" class="aligncenter size-medium wp-image-368" /></a></p>
<p><span id="more-364"></span></p>
<p>The fretboard starts empty and you can click any space you wish to show the corresponding notes and find patterns. Each note is colored corresponding to its octave. For example, you can explore the different scales:</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_CScale.png" target="_blank" rel="lightbox[364]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_CScale-300x236.png" alt="GuitarTrainer_CScale" title="GuitarTrainer_CScale" width="300" height="236" class="aligncenter size-medium wp-image-373" /></a></p>
<p>Watch the relationship between different strings&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_2Strings.png" target="_blank" rel="lightbox[364]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_2Strings-300x235.png" alt="GuitarTrainer_2Strings" title="GuitarTrainer_2Strings" width="300" height="235" class="aligncenter size-medium wp-image-371" /></a></p>
<p>O between frets&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_2Frets.png" target="_blank" rel="lightbox[364]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_2Frets-300x235.png" alt="GuitarTrainer_2Frets" title="GuitarTrainer_2Frets" width="300" height="235" class="aligncenter size-medium wp-image-369" /></a></p>
<p>Another useful option is analyzing the position of given notes in the entire fretboard&#8230;</p>
<p><a href="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_2Notes.png" target="_blank" rel="lightbox[364]"><img src="http://www.neoegm.com/wp-content/uploads/2009/07/GuitarTrainer_2Notes-300x236.png" alt="GuitarTrainer_2Notes" title="GuitarTrainer_2Notes" width="300" height="236" class="aligncenter size-medium wp-image-370" /></a></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">Guitar Trainer 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/07/GuitarTrainer_About.png" alt="GuitarTrainer_About" title="GuitarTrainer_About" width="451" height="368" class="aligncenter size-full wp-image-372" /></p>
<p>And now, finally, the links&#8230;</p>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/guitar-trainer/Guitar_Trainer_1.0.zip">Download Guitar Trainer v1.0</a></p>
</div>
<div align="center">
<p class="download"><a href="http://download.neoegm.com/software/guitar-trainer/Guitar_Trainer_1.0_Source.zip">Download v1.0 Source Code</a></p>
</div>
<h4>Incoming search terms for the article:</h4>
<ul>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="guitar trainer">guitar trainer</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="guitar fretboard">guitar fretboard</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="fretboard">fretboard</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="guitar fretboard notes">guitar fretboard notes</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="notes on a guitar fretboard">notes on a guitar fretboard</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="NOTAS EN EL DIAPASON DE LA GUITARRA">NOTAS EN EL DIAPASON DE LA GUITARRA</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="notes on a guitar">notes on a guitar</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="guitar frets">guitar frets</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="guitar trainer español">guitar trainer español</a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/guitar-trainer/" title="fretboard notes">fretboard notes</a></li>
</ul>
<div class='yarpp-related-rss'>
<strong><p>Related posts:<ol>
<li><a href="https://www.neoegm.com/tech/software/tools/wake-on-lan/" rel="bookmark" title="Wake On LAN (Remotely power on a computer)">Wake On LAN (Remotely power on a computer) </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/uptime/" rel="bookmark" title="UpTime (How much time has the computer been powered on)">UpTime (How much time has the computer been powered on) </a></li>
<li><a href="https://www.neoegm.com/tech/software/tools/windows-mobile/sms-scheduler/" rel="bookmark" title="SMS Scheduler">SMS Scheduler </a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>https://www.neoegm.com/tech/software/tools/guitar-trainer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cMemDbg &#8211; Easy to use C memory leak detection library</title>
		<link>https://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/</link>
		<comments>https://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="https://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="https://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="https://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="https://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="https://www.neoegm.com/tech/programming/c-cpp/cmemdbg-easy-to-use-c-memory-leak-detection-library/" title="cmemdbg">cmemdbg</a></li>
<li><a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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>https://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>
