<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="https://www.schweda.net/style_feed.css" ?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:atom="http://www.w3.org/2005/Atom"	
	xmlns:dc="http://purl.org/dc/elements/1.1/" > 
<channel>
    <title>schweda.net - Blog</title>
    <link>https://www.schweda.net/</link>
    <description>schweda.net - Blog - Blog-Beitraege</description>
    <language>de-at</language>
    <copyright>Copyright 2006-2026</copyright>
    <generator>schweda.net</generator>
    <managingEditor>heinz.schweda@schweda.net (Heinz Schweda)</managingEditor>
    <webMaster>heinz.schweda@schweda.net (Heinz Schweda)</webMaster>
    <category>Blog</category>
	<atom:link href="https://schweda.net/blog_rss.php?bid=157" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Fehlerhafte str2con-Funktion]]></title>
<description><![CDATA[
<p>Wer schon mal versucht hat in Dynamics AX 2.x einen String in einen Container umzuwandeln, der hat recht bald entdecken m&uuml;ssen, da&szlig; es - anders als in den meisten anderen Programmiersprachen - in X++ der Version 2.x keine entsprechende Funktion daf&uuml;r gibt und man sich eine solche selbst schreiben mu&szlig;.<br />
<br />
Etwas besser sieht das ganze in Dynamics AX 3.x aus, dort gibt es zwar eine Funktion str2con, diese ist allerdings etwas buggy. Beginnt der umzuwandelnde String n&auml;mlich mit einer Zahl, so erfolgt die Umwandlung nicht wie vom Entwickler erwartet.<br />
<br />
Korrigiert wurde dieser Fehler erst in AX 4.0, dort arbeitet die Methode str2con meines Erachtens korrekt.<br />
<br />
Anbei der X++ Code aus AX 4.0, sollte problemlos auch in &auml;lteren Versionen arbeiten. In AX 2.x kann man die Methode einfache in die Klasse global integrieren, in der Version 3.0 sollte die bestehende &uuml;berschrieben werden.
</p>


<pre class="pre_blog_axcode">
static container str2con(str _value, str 10 _sep = &#39;,&#39;)
{
    int length = strlen(_value);
    int i = 1;
    int j = strscan(_value, _sep, 1, length);
    container ret;
    void add2Ret(str _current)
    {
        // v-artemt, 26 Jul 2004, PS#: 1741
        if (match(&#39;&lt;:d+&gt;&#39;, _current))
            ret += str2int(_current);
        else
            ret += _current;
    }
;
    while (j)
    {
        add2Ret(substr(_value, i, j-i));
        i = j+1;
        j = strscan(_value, _sep, i, length);
    }
    add2Ret(substr(_value, i, length-i+1));
    return ret;
}
</pre>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Wed, 17 Oct 2007 16:08:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=157</link>
<comments>https://www.schweda.net/blog_ax.php?bid=157</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=157</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=157</wfw:commentRss>
</item>
</channel>
</rss>	
