<?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>Advanced Programming Stories &#187; c++</title>
	<atom:link href="http://developstories.gr/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://developstories.gr</link>
	<description>advanced web development techniques &#38; reverse engineering stories</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:57:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JSON++ compiled with VS 6.0</title>
		<link>http://developstories.gr/php/json-compiled-with-vs-60/</link>
		<comments>http://developstories.gr/php/json-compiled-with-vs-60/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 10:05:23 +0000</pubDate>
		<dc:creator>thek</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://developstories/?p=26</guid>
		<description><![CDATA[
Χρειαζόμουν έναν τρόπο να συνδέσω ένα c++ script με ένα php script, ώστε να ανταλλάσουνε δεδομένα. Στην αρχή σκέφτηκα με xml από το stdin/stdout, άλλα δεν ήθελα και τόσο δομημένη πληροφορία, όποτε αποφάσισα να χρησιμοποιήσω json.
Για php δεν υπήρχε συζήτηση ότι θα χρησιμοποιούσα μία κλάση που έχω βρει, και την έχω δουλέψει αρκετά σε πολλά [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Χρειαζόμουν έναν τρόπο να συνδέσω ένα <a href="http://en.wikipedia.org/wiki/C%2B%2B">c++</a> script με ένα <a href="http://www.php.net/">php</a> script, ώστε να ανταλλάσουνε δεδομένα. Στην αρχή σκέφτηκα με <a href="http://en.wikipedia.org/wiki/XML">xml</a> από το <a href="http://en.wikipedia.org/wiki/Standard_streams">stdin/stdout</a>, άλλα δεν ήθελα και τόσο δομημένη πληροφορία, όποτε αποφάσισα να χρησιμοποιήσω <a href="http://en.wikipedia.org/wiki/JSON">json</a>.</p>
<p>Για php δεν υπήρχε συζήτηση ότι θα χρησιμοποιούσα μία κλάση που έχω βρει, και την έχω δουλέψει αρκετά σε πολλά projects, την <a href="http://mike.teczno.com/JSON/JSON.phps">Services_JSON</a>. Για C++ όμως δεν είχα χρησιμοποιήσει ποτέ, όποτε έπρεπε να ψάξω και να βρω κάτι που να με βολεύει.<br />
Googlesearch, json.org, πολλά project, στα πρώτα αποτελέσματα, άλλα όχι κάτι απλό έτσι που το ήθελα εγώ. Κάπου στη <a href="http://www.google.com/search?hl=en&amp;q=json+c%2B%2B&amp;sa=N&amp;start=20"> 3<sup>η</sup> σελίδα</a> βρήκα ένα ενδιαφέρον project το <a href="http://www.offsetdesign.co.uk/code/">JSON++</a>. Αμέσως το κατέβασα, και έφτιαξα ένα test project στο <a href="http://msdn.microsoft.com/en-us/library/ms950417.aspx">Visual Studio 6.0</a> να το δοκιμάσω. Το JSON++ όμως ήταν για <a href="http://www.microsoft.com/products/info/product.aspx?view=32&amp;pcid=9fdcc2af-6b86-4ee8-9b71-90cebe8626e6&amp;type=ovr">Visual Studio .NET</a>. Δεν πτοήθηκα, διότι στο παρελθών έχω κάνει και compile το <a href="http://www.gophp5.org/">php5</a> με <a href="http://msdn.microsoft.com/en-us/visualc/default.aspx">VC++</a> 6.0, οπότε ξεκίνησα τις αλλαγές ώστε να γίνει το compile.<br />
Στο αρχείο value.cpp στην γραμμή 428 και 432, διόρθωσα την  εντολή swprintf από<br />
<span style="color: #ff0000;">swprintf(strnum,31,L&#8221;%.1lld&#8221;,(*(__int64 *)val));</span><br />
σε<span style="color: #009900;"><br />
swprintf(strnum,L&#8221;%.1lld&#8221;,(*(__int64 *)val));</span></p>
<p>και<span style="color: #ff0000;"><br />
swprintf(strnum,31,L&#8221;%lG&#8221;,(*(double *)val));</span><br />
σε<span style="color: #009900;"><br />
swprintf(strnum,L&#8221;%lG&#8221;,(*(double *)val));</span></p>
<p>Στο αρχείο parser.h έβγαλα την μεταβλητή errstrings, από την γραμμή 28 extern const wchar_t *errstrings[8];<br />
Στο αρχείο parser.cpp πρόσθεσα τα παρακάτω includes στην αρχή</p>
<p><span style="color: #009900;">#include &lt;stdio.h&gt;</span></p>
<p><small><span style="color: #009900;"><big>#include &lt;stdlib.h&gt;</big></span></small></p>
<p>Μετέφερα την μεταβλητή errstrings από το αρχείο errstrings.cpp εδώ μέσα namespace json {<small><span style="color: #ff0000;">const wchar_t *errstrings[9]={<br />
/*0*/    L&#8221;Invalid Unicode escape sequence&#8221;,<br />
L&#8221;Tried to read past End of File&#8221;,<br />
L&#8221;Error reading Array, ] expected&#8221;,<br />
L&#8221;Unquoted object names not allowed&#8221;,<br />
L&#8221;Error reading Object, : expected after name&#8221;,<br />
/*5*/    L&#8221;Error reading Object, } expected&#8221;,<br />
L&#8221;Could not find a valid Object value&#8221;,<br />
L&#8221;Invalid unquoted string, or misspelled literal&#8221;,<br />
L&#8221;Duplicate value name in Object&#8221;<br />
};</span></small></p>
<p>…</p>
<p>και στην γραμμή 253 του παλιού αρχείο άλλαξα την συνάρτηση _wtof σε _wtol.Από<br />
<big><span style="color: #ff0000;"><small>val-&gt;setnumber(_wtof(number.c_str()));<br />
</small></span></big>σε<big><span style="color: #009900;"><small><br />
val-&gt;setnumber(_wtol(number.c_str()));</small></span></big></p>
<p>Αυτό βέβαια δεν είναι σωστό, γιατί μία μεταβλητή float θα χαλάει, το σωστό θα ήταν να ασχολούμουν λίγο παραπάνω και να έβρισκα το σωστό συνδυασμό από functions προκείμενο να μετατραπεί σωστά το string σε float. Στην προκειμένη περίπτωση δεν θα είχα float όποτε και δεν ασχολήθηκα παραπάνω. Αν κάποιος το βρει θα ήθελα να το γράψει στα σχόλια για είναι ποιο ολοκληρωμένη η μετατροπή του project από .net σε 6.0.Τέλος έβγαλα το αρχείο errstrings.cpp από το compile γιατί ήταν άχρηστο πλέων, και το compile έγινε κανονικά.</p>
<p>Το JSON++ ήταν ακριβώς αυτό που χρειαζόμουν, διότι είναι πού εύκολο στην χρήση του σε αντίθεση με τα υπόλοιπα open source projects.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://developstories.gr/php/json-compiled-with-vs-60/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
