<?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[Fehlermeldung bei GetSaveFileName]]></title><description><![CDATA[<p>Ich hab mal wieder ein Problemchen.</p>
<p>Und zwar, wenn ich die Funktion <em>GetSaveFileName</em> aufrufe bekomme ich folgenden Fehler:</p>
<p><a href="http://s6.bilder-hosting.de/img/GRFQO.png" rel="nofollow">http://s6.bilder-hosting.de/img/GRFQO.png</a></p>
<p>Die MessageBox hab ich eingebaut um den kryptischen Fehlercode in einen besseren Fehlertext zu konvertieren:</p>
<pre><code>void MeldeFehler(DWORD Fehlercode)
{
	LPVOID lpMsgBuf;

	FormatMessage(  FORMAT_MESSAGE_ALLOCATE_BUFFER | 							FORMAT_MESSAGE_FROM_SYSTEM | 							        FORMAT_MESSAGE_IGNORE_INSERTS,
				NULL,
				Fehlercode,
				MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
				(LPTSTR) &amp;lpMsgBuf,
				0,
				NULL 
				);
				MessageBox( NULL, (LPCTSTR)lpMsgBuf, &quot;Error&quot;, MB_OK | MB_ICONINFORMATION );
				// Free the buffer.
				LocalFree( lpMsgBuf );
}
</code></pre>
<p>Jetzt kommt mein Aufruf:</p>
<pre><code>DateiMenue.lpstrFile = Programminfo.Datei.FileName;
   if(GetSaveFileName(&amp;DateiMenue))
   {
      FehlerVar = DateiSpeichern(&amp;Programminfo,DateiMenue,&amp;BlockSpeicherHandle,&amp;VerdrahtungsListenHandle);
      if (FehlerVar != ok)
      {
            FehlerMeldung(FehlerVar,&amp;Programminfo,0);
            Programminfo.Datei.gespeichert = FALSE;
	    return 0;
      }
      else
           Programminfo.Datei.gespeichert = TRUE;
       }
       else
       {
	[b]MeldeFehler(CommDlgExtendedError());[/b]
       }
</code></pre>
<p>Bei der fett markierten Zeile lasse ich mir den Fehler ausgeben und der lautet, wie auf dem Bild zu sehen: Die Adresse des Steuerblocks ist ungültig. Hat jemand eine Idee woran das liegt?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177091/fehlermeldung-bei-getsavefilename</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 16:25:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177091.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Mar 2007 08:38:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlermeldung bei GetSaveFileName on Wed, 28 Mar 2007 08:38:59 GMT]]></title><description><![CDATA[<p>Ich hab mal wieder ein Problemchen.</p>
<p>Und zwar, wenn ich die Funktion <em>GetSaveFileName</em> aufrufe bekomme ich folgenden Fehler:</p>
<p><a href="http://s6.bilder-hosting.de/img/GRFQO.png" rel="nofollow">http://s6.bilder-hosting.de/img/GRFQO.png</a></p>
<p>Die MessageBox hab ich eingebaut um den kryptischen Fehlercode in einen besseren Fehlertext zu konvertieren:</p>
<pre><code>void MeldeFehler(DWORD Fehlercode)
{
	LPVOID lpMsgBuf;

	FormatMessage(  FORMAT_MESSAGE_ALLOCATE_BUFFER | 							FORMAT_MESSAGE_FROM_SYSTEM | 							        FORMAT_MESSAGE_IGNORE_INSERTS,
				NULL,
				Fehlercode,
				MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
				(LPTSTR) &amp;lpMsgBuf,
				0,
				NULL 
				);
				MessageBox( NULL, (LPCTSTR)lpMsgBuf, &quot;Error&quot;, MB_OK | MB_ICONINFORMATION );
				// Free the buffer.
				LocalFree( lpMsgBuf );
}
</code></pre>
<p>Jetzt kommt mein Aufruf:</p>
<pre><code>DateiMenue.lpstrFile = Programminfo.Datei.FileName;
   if(GetSaveFileName(&amp;DateiMenue))
   {
      FehlerVar = DateiSpeichern(&amp;Programminfo,DateiMenue,&amp;BlockSpeicherHandle,&amp;VerdrahtungsListenHandle);
      if (FehlerVar != ok)
      {
            FehlerMeldung(FehlerVar,&amp;Programminfo,0);
            Programminfo.Datei.gespeichert = FALSE;
	    return 0;
      }
      else
           Programminfo.Datei.gespeichert = TRUE;
       }
       else
       {
	[b]MeldeFehler(CommDlgExtendedError());[/b]
       }
</code></pre>
<p>Bei der fett markierten Zeile lasse ich mir den Fehler ausgeben und der lautet, wie auf dem Bild zu sehen: Die Adresse des Steuerblocks ist ungültig. Hat jemand eine Idee woran das liegt?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254383</guid><dc:creator><![CDATA[Bard00]]></dc:creator><pubDate>Wed, 28 Mar 2007 08:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei GetSaveFileName on Wed, 28 Mar 2007 08:45:09 GMT]]></title><description><![CDATA[<p>Und wie hast du die OPENFILENAME Structure gefüllt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254392</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 28 Mar 2007 08:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei GetSaveFileName on Wed, 28 Mar 2007 09:47:06 GMT]]></title><description><![CDATA[<p>Hi Luckie,</p>
<p>ich habe die Struktur so gefüllt:</p>
<pre><code class="language-cpp">extern bool InitDateimenue (ProgrammInformation *info,OPENFILENAME *Dateiname)
{
	static TCHAR szFilter[] =	TEXT(&quot;EX_PRESS - Dateien (*.FUP)\0*.FUP\0&quot;) \
//eingefügt//
								TEXT(&quot;MAKRO - Dateien (*.MKR)\0*.MKR\0&quot;) \
//eingefügt//
								TEXT(&quot;Alle Dateien (*.*)\0*.*\0\0&quot;);
	(*Dateiname).lStructSize		= sizeof(OPENFILENAME);
	(*Dateiname).hwndOwner			= (*info).handles.Hauptfenster;
	(*Dateiname).hInstance			= (*info).hInstance;
	(*Dateiname).lpstrFilter		= szFilter;
	(*Dateiname).lpstrCustomFilter	= NULL;
	(*Dateiname).nMaxCustFilter		= 0;
	(*Dateiname).nFilterIndex		= 0;
	(*Dateiname).lpstrFile			= NULL;
	(*Dateiname).nMaxFile			= MAX_PATH;
	(*Dateiname).lpstrFileTitle		= NULL;
	(*Dateiname).nMaxFileTitle		= MAX_PATH;
	(*Dateiname).lpstrInitialDir	= NULL;
	(*Dateiname).lpstrTitle			= NULL;
	(*Dateiname).Flags				= OFN_CREATEPROMPT;
	(*Dateiname).nFileOffset		= 0;
	(*Dateiname).nFileExtension		= 0;
	(*Dateiname).lpstrDefExt		= TEXT(&quot;FUP&quot;);
	(*Dateiname).lCustData			= 0L;
	(*Dateiname).lpfnHook			= NULL;
	(*Dateiname).lpTemplateName		= NULL;
	return TRUE;
};
</code></pre>
<p>hilft das weiter?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254435</guid><dc:creator><![CDATA[Bard00]]></dc:creator><pubDate>Wed, 28 Mar 2007 09:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei GetSaveFileName on Wed, 28 Mar 2007 10:44:56 GMT]]></title><description><![CDATA[<p>1. Wie und wo ist 'Dateiname' deklariert/definiert ?<br />
2. Bei der Verwendung von bool sollte man auch true und false zurückgeben (nicht TRUE oder FALSE, auch wenn das äquivalent ist).<br />
3. Kennst Du den Pfeiloperator ? ... Der bietet sich hier gerade zu an <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 />
4. Du solltest hier:</p>
<pre><code class="language-cpp">(*Dateiname).lStructSize = sizeof(OPENFILENAME);
</code></pre>
<p>besser schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<pre><code class="language-cpp">Dateiname-&gt;lStructSize = sizeof(*Dateiname);
</code></pre>
<p>Das ist dann Typen unabhängig.<br />
5. Hier liegt Dein Problem (also deshalb stürzt/bricht er ab):</p>
<p>Bard00 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">(*Dateiname).lpstrFile = NULL;
  (*Dateiname).nMaxFile  = MAX_PATH;
</code></pre>
</blockquote>
<p>Du musst bei lpstrFile einen Zeiger auf einen nicht konstanten (also beschreibbaren) Buffer (-&gt; TCHAR-Array) übergeben und die Größe davon in nMaxFile angeben. Darin steht dann später die ausgewählte(n) Datei(en).</p>
<p>Siehe auch:</p>
<p>MSDN schrieb:</p>
<blockquote>
<p>Pointer to a buffer[...]. When the GetOpenFileName or GetSaveFileName function returns successfully, this buffer contains the drive designator, path, file name, and extension of the selected file.</p>
</blockquote>
<p><strong>Quelle:</strong> <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxstructures/openfilename.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxstructures/openfilename.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254466</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 28 Mar 2007 10:44:56 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei GetSaveFileName on Wed, 28 Mar 2007 11:33:30 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>1. Wie und wo ist 'Dateiname' deklariert/definiert ?</p>
</blockquote>
<p>als Parameter in der Funktion <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>CodeFinder schrieb:</p>
<blockquote>
<p>2. Bei der Verwendung von bool sollte man auch true und false zurückgeben (nicht TRUE oder FALSE, auch wenn das äquivalent ist).</p>
</blockquote>
<p>ist geändert.</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>3. Kennst Du den Pfeiloperator ? ... Der bietet sich hier gerade zu an <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>
</blockquote>
<p>kene ich, nur ist das Fremdcode und da fummel ich nicht alles um, sondern ergänze es nur noch.</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>4. Du solltest hier:</p>
<pre><code class="language-cpp">(*Dateiname).lStructSize = sizeof(OPENFILENAME);
</code></pre>
<p>besser schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<pre><code class="language-cpp">Dateiname-&gt;lStructSize = sizeof(*Dateiname);
</code></pre>
</blockquote>
<p>hab ich geändert.</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>5. Hier liegt Dein Problem (also deshalb stürzt/bricht er ab):</p>
<p>Bard00 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">(*Dateiname).lpstrFile = NULL;
  (*Dateiname).nMaxFile  = MAX_PATH;
</code></pre>
</blockquote>
<p>Du musst bei lpstrFile einen Zeiger auf einen nicht konstanten (also beschreibbaren) Buffer (-&gt; TCHAR-Array) übergeben und die Größe davon in nMaxFile angeben. Darin steht dann später die ausgewählte(n) Datei(en).</p>
</blockquote>
<p>hab ich gemacht, aber ich bekomme immer noch Fehler 9.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254501</guid><dc:creator><![CDATA[Bard00]]></dc:creator><pubDate>Wed, 28 Mar 2007 11:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei GetSaveFileName on Wed, 28 Mar 2007 12:43:06 GMT]]></title><description><![CDATA[<p>Bard00 schrieb:</p>
<blockquote>
<p>aber ich bekomme immer noch Fehler 9.</p>
</blockquote>
<p>Schön für dich. Und jetzt? Sollen wir raten was für welche und wo im Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254558</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 28 Mar 2007 12:43:06 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei GetSaveFileName on Wed, 28 Mar 2007 13:36:50 GMT]]></title><description><![CDATA[<p>So lFreunde ich habe es gelöst war triviales Problem und habe ihn net gefunden,<br />
das Problem war</p>
<p>das ID_FILE_SAVE_AS falsch geschrieben war (in der resource.rc) hies ursprüngleich ID_FILE_AS</p>
<pre><code class="language-cpp">IDR_MENU_EN MENU DISCARDABLE 
BEGIN
    POPUP &quot;&amp;File&quot;
    BEGIN
        MENUITEM &quot;&amp;New FUP Project&quot;,            ID_FILE_NEW
        MENUITEM &quot;New &amp;MAKRO Project&quot;,          ID_FILE_MAKRO
        MENUITEM &quot;&amp;Open&quot;,                       ID_FILE_OPEN
        MENUITEM &quot;&amp;Save&quot;,                       ID_FILE_SAVE
        MENUITEM &quot;Save &amp;as&quot;,                    ID_FILE_SAVE_AS
        MENUITEM SEPARATOR
        MENUITEM &quot;E&amp;xit&quot;,                       ID_FILE_EXIT
    END
</code></pre>
<p>so funktioniert es jetzt</p>
<p>Ich danke euch für eure Hielfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254624</guid><dc:creator><![CDATA[Bard00]]></dc:creator><pubDate>Wed, 28 Mar 2007 13:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei GetSaveFileName on Wed, 28 Mar 2007 13:45:19 GMT]]></title><description><![CDATA[<p>Luckie schrieb:</p>
<blockquote>
<p>Bard00 schrieb:</p>
<blockquote>
<p>aber ich bekomme immer noch Fehler 9.</p>
</blockquote>
<p>Schön für dich. Und jetzt? Sollen wir raten was für welche und wo im Code?</p>
</blockquote>
<p>Der Code kahm immer hier fast fett markiert ist.<br />
Aber jetzt geht es ja wie oben beschrieben</p>
<pre><code>DateiMenue.lpstrFile = Programminfo.Datei.FileName;
   [b]if(GetSaveFileName(&amp;DateiMenue))[/b]
   {
      FehlerVar = DateiSpeichern(&amp;Programminfo,DateiMenue,&amp;BlockSpeicherHandle,&amp;VerdrahtungsListenHandle);
      if (FehlerVar != ok)
      {
            FehlerMeldung(FehlerVar,&amp;Programminfo,0);
            Programminfo.Datei.gespeichert = FALSE;
        return 0;
      }
      else
           Programminfo.Datei.gespeichert = TRUE;
       }
       else
       {
    MeldeFehler(CommDlgExtendedError());
       }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1254640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254640</guid><dc:creator><![CDATA[Bard00]]></dc:creator><pubDate>Wed, 28 Mar 2007 13:45:19 GMT</pubDate></item></channel></rss>