<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Komme nicht weiter -&amp;gt; Access Violation]]></title><description><![CDATA[<pre><code class="language-cpp">bool c_sprite::extractWorkDir ( char szPath[MAX_PATH] )
{
	char *fndest, *extdest;
	int fn, ext, rest;

	fndest = strrchr( szPath, '\\' );
	fn = fndest - szPath + 1;
	extdest = strrchr( szPath, '.' );
	ext = extdest - szPath + 1;

	rest = strlen(szPath) - fn;
-&gt;	strncpy( szWorkDir, szPath, fn );
	_strnset( szWorkDir + fn, '\0', 1 );

	strncpy( szFileName, szPath + fn, ( strlen( szPath ) - fn - ext ) );
	_strnset( szFileName + rest, '\0', 1 );

	rest = strlen(szPath) - ext;
	strncpy( szFileExtension, szPath + ext, ( strlen( szPath ) - ext ) );
	_strnset( szFileExtension + rest, '\0', 1 );

	printf (&quot;Arbeitsverzeichnis:\t%s\nDateiname:\t\t%s\nErweiterung:\t\t%s\n&quot;, szWorkDir, szFileName, szFileExtension );

	system (&quot;pause&quot;);

	return true;
}
</code></pre>
<p>Die -&gt; Markierte zeile gefällt dem Debugger nicht.<br />
Und mir inzwischen auch nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Warum zum Geier bekomm ich da nen Access Violation Error ? ( Naja einer is leicht untertrieben ) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Achso: Die Variablen, die hier nicht Deklariert wurden, sind global. *indeckunggeh*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180188/komme-nicht-weiter-gt-access-violation</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 17:31:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180188.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 30 Apr 2007 02:09:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komme nicht weiter -&amp;gt; Access Violation on Mon, 30 Apr 2007 02:15:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">bool c_sprite::extractWorkDir ( char szPath[MAX_PATH] )
{
	char *fndest, *extdest;
	int fn, ext, rest;

	fndest = strrchr( szPath, '\\' );
	fn = fndest - szPath + 1;
	extdest = strrchr( szPath, '.' );
	ext = extdest - szPath + 1;

	rest = strlen(szPath) - fn;
-&gt;	strncpy( szWorkDir, szPath, fn );
	_strnset( szWorkDir + fn, '\0', 1 );

	strncpy( szFileName, szPath + fn, ( strlen( szPath ) - fn - ext ) );
	_strnset( szFileName + rest, '\0', 1 );

	rest = strlen(szPath) - ext;
	strncpy( szFileExtension, szPath + ext, ( strlen( szPath ) - ext ) );
	_strnset( szFileExtension + rest, '\0', 1 );

	printf (&quot;Arbeitsverzeichnis:\t%s\nDateiname:\t\t%s\nErweiterung:\t\t%s\n&quot;, szWorkDir, szFileName, szFileExtension );

	system (&quot;pause&quot;);

	return true;
}
</code></pre>
<p>Die -&gt; Markierte zeile gefällt dem Debugger nicht.<br />
Und mir inzwischen auch nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Warum zum Geier bekomm ich da nen Access Violation Error ? ( Naja einer is leicht untertrieben ) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Achso: Die Variablen, die hier nicht Deklariert wurden, sind global. *indeckunggeh*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275995</guid><dc:creator><![CDATA[Pyro Phoenix]]></dc:creator><pubDate>Mon, 30 Apr 2007 02:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Komme nicht weiter -&amp;gt; Access Violation on Mon, 30 Apr 2007 06:03:45 GMT]]></title><description><![CDATA[<p>Allen deratigen</p>
<pre><code class="language-cpp">// 
/*
 *
 */
#if 
// und das dazwischen 
#endif
#pragma
#error
</code></pre>
<p>Senf habe ich einfefügt.</p>
<p>Grüsse</p>
<p>*this</p>
<p>Pyro Phoenix schrieb:</p>
<blockquote>
<pre><code class="language-cpp">bool c_sprite::extractWorkDir ( char szPath[MAX_PATH] ) // =&gt; Ist das vielleicht ein UNICODE String den Du hart gecastet hast ?  
{
    /*
     *   Gegen Uninitialisirtes prüft sich's später schlecht !
     */
    char *fndest, *extdest; // Beide erstmal = NULL setzen !
    int fn, ext, rest; // dto = 0

    fndest = strrchr( szPath, '\\' ); // =&gt; Ist das vielleicht NULL weil nichts gefunden wurde? // Kommentar ?
    fn = fndest - szPath + 1; // Kommentar ?
    extdest = strrchr( szPath, '.' ); // Kommentar ?
    ext = extdest - szPath + 1; // Kommentar ?

    rest = strlen(szPath) - fn;
#pragma message(&quot;Ich mach das mal in Assembler denn irgendwie erinnert mich Dein Code daran...&quot;);
#pragma message(&quot;SCNR ;-)&quot;);
#pragma message(&quot;...oder halt in der vorigen Codezeile einen Breakpoint setzen ;-)&quot;)
#if defined(_MSC_VER) 
    __asm {
        int 0x3; // User Breakpoint
    }
#elif defined(__GNUC__)
    __asm__ (&quot;int $0x3&quot;); // User Breakpoint
#else
#error Weder MCVC noch GCC ???
#endif
    // Hier solls knallen
    strncpy( szWorkDir, szPath, fn ); // =&gt; Ist szWorkDir vielleicht NULL
    //
#pragma message(&quot;Zum Rest schweige ich ;-)&quot;); 
    _strnset( szWorkDir + fn, '\0', 1 );

	strncpy( szFileName, szPath + fn, ( strlen( szPath ) - fn - ext ) );
	_strnset( szFileName + rest, '\0', 1 );

	rest = strlen(szPath) - ext;
	strncpy( szFileExtension, szPath + ext, ( strlen( szPath ) - ext ) );
	_strnset( szFileExtension + rest, '\0', 1 );

	printf (&quot;Arbeitsverzeichnis:\t%s\nDateiname:\t\t%s\nErweiterung:\t\t%s\n&quot;, szWorkDir, szFileName, szFileExtension );

	system (&quot;pause&quot;);

	return true;
}
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1276021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276021</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Mon, 30 Apr 2007 06:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to Komme nicht weiter -&amp;gt; Access Violation on Mon, 30 Apr 2007 06:05:57 GMT]]></title><description><![CDATA[<p>Wieviel Platz ist denn hinter 'szWorkDir' reserviert (bzw. wie ist der überhaupt deklariert?)?</p>
<p>Ansonsten hätte ich als Alternative noch anzubieten, daß du auf nackte char* verzichtest und std::string verwendest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276023</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Apr 2007 06:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to Komme nicht weiter -&amp;gt; Access Violation on Mon, 30 Apr 2007 08:18:39 GMT]]></title><description><![CDATA[<p>Sach mal kurz was der Code bewirken soll ... ist jedenfalls sehr schlechter Stil ... Willst du den Pfad, die Extension und den Dateinamen bekommen, oder was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276090</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 30 Apr 2007 08:18:39 GMT</pubDate></item><item><title><![CDATA[Reply to Komme nicht weiter -&amp;gt; Access Violation on Mon, 30 Apr 2007 10:27:46 GMT]]></title><description><![CDATA[<p>Also ich machs mal kurz und knackig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Mit der Funktion will ich mir aus dem Absoluten Pfad Das Arbeitsverzeichnis,<br />
den Dateinamen und die Erweiterung extrahieren.</p>
<p>Alle Variablen die mit sz... anfangen, haben eine Länge von</p>
<pre><code class="language-cpp">#ifndef MAX_PATH
#define MAX_PATH 4000
#endif
</code></pre>
<p>Soll heissen, wenn ich grade mal nicht mit MFC arbeite, hat eine sz... Variable<br />
eine länge von 4000 char.</p>
<p>Zu meinem Stil:<br />
Ich hab C++ nicht in der Schule oder sonstwo gelernt, sonder hier ganz allein<br />
vor meinem PC. Da kanns schonmal passieren, das der eine oder andere Code<br />
stilistisch nicht ganz dem Standard entspricht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Edit:</p>
<p>Ich hatte den Pfad manuell eingegeben ... ich glaub, das war ein Fehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Vorher:</p>
<pre><code class="language-cpp">c_sprite sprite ( &quot;K:\Eigene Dateien\Eigene C++ Projekte\sprinfo\Debug\bm1.spr&quot; );
</code></pre>
<p>Nachher:</p>
<pre><code class="language-cpp">c_sprite sprite ( &quot;K:\\Eigene Dateien\\Eigene C++ Projekte\\sprinfo\\Debug\\bm1.spr&quot; );
</code></pre>
<p>Jetzt hängt er nichtmehr beim ersten strncpy sondern beim nächsten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276183</guid><dc:creator><![CDATA[Pyro Phoenix]]></dc:creator><pubDate>Mon, 30 Apr 2007 10:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to Komme nicht weiter -&amp;gt; Access Violation on Mon, 30 Apr 2007 10:29:44 GMT]]></title><description><![CDATA[<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>...<br />
Mit der Funktion will ich mir aus dem Absoluten Pfad Das Arbeitsverzeichnis,<br />
den Dateinamen und die Erweiterung extrahieren....</p>
</blockquote>
<p>Also für sowas gibt's prima C++-Dinge: string, find(), find_first(), find_last_not_of(), ....</p>
<p>Und alle ohne (zu setzenden oder fehlenden) Nullterminierer, Speicherüberschreitungen, ...</p>
<p>Was mir noch auffällt: Du hast überhaupt keine Fehlerprüfung ! Wenn Dir also jemanden ein String gibt, bei dem z.B. gar kein '\' drin ist, hast Du schon eine access violation....</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276190</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 30 Apr 2007 10:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to Komme nicht weiter -&amp;gt; Access Violation on Mon, 30 Apr 2007 10:53:52 GMT]]></title><description><![CDATA[<p>Ja <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /><br />
War wohl n bisschen spät gestern, das mit der Fehlerprüfung ist mir auch grade<br />
eben erst eingefallen.</p>
<p>So Danke Jungs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Jetzt funktionierts :p</p>
<pre><code class="language-cpp">bool c_sprite::extractWorkDir ( char szPath[MAX_PATH] )
{
	char *fndest, *extdest;
	int fn, ext, rest;

	if ( (fndest = strrchr( szPath, '\\' ) ) == NULL )
		return false;
	fn = fndest - szPath + 1;
	if ( (extdest = strrchr( szPath, '.' ) ) == NULL )
		return false;
	ext = extdest - szPath;

	rest = strlen(szPath) - fn;
	strncpy( szWorkDir, szPath, fn );
	_strnset( szWorkDir + fn, '\0', 1 );

	rest = strlen(szPath) - ext -1;
	strncpy( szFileName, szPath + fn, ( strlen( szPath ) - ext ) );
	_strnset( szFileName + rest, '\0', 1 );

	rest = strlen(szPath) - ext;
	strncpy( szFileExtension, szPath + ext, ( strlen( szPath ) - ext ) );
	_strnset( szFileExtension + rest, '\0', 1 );

#ifdef _DEBUG
	printf (&quot;Arbeitsverzeichnis:\t%s\nDateiname:\t\t%s\nErweiterung:\t\t%s\n&quot;, szWorkDir, szFileName, szFileExtension );
	system (&quot;pause&quot;);
#endif

	return true;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1276198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276198</guid><dc:creator><![CDATA[Pyro Phoenix]]></dc:creator><pubDate>Mon, 30 Apr 2007 10:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to Komme nicht weiter -&amp;gt; Access Violation on Mon, 30 Apr 2007 11:23:52 GMT]]></title><description><![CDATA[<p>hmm und jetzt mal Ordentlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">void split_path(const std::string&amp; fullpath, std::string&amp; file, std::string&amp; ext, std::string&amp; path)
{
	std::size_t pos = fullpath.find_last_of('\\');
	if (pos != std::string::npos)
	{
		path = fullpath.substr(0, pos);
		std::size_t pos_ext = fullpath.find_last_of('.');
		if (pos_ext != std::string::npos)
		{
			ext = fullpath.substr(pos_ext + 1);
			file = fullpath.substr(pos + 1, fullpath.length() - pos_ext);
		}
		else
		{
			file = fullpath.substr(pos + 1);
		}
	}
}
</code></pre>
<p>... ist ja selbst erklären ... und sauber <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
<strong>Edit</strong><br />
Fehlerteufel war drin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276213</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 30 Apr 2007 11:23:52 GMT</pubDate></item></channel></rss>