<?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[übergebenen Dateinamen in eigenem Programm auswerten...]]></title><description><![CDATA[<p>Direkt nach Top 3 der faq steht folgendes &quot;Um den übergebenen Dateinamen dann im eigenen Programm auszuwerten&quot; ... als &quot;ein Beispiel:&quot;</p>
<pre><code>__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  if (ParamStr(1) != &quot;&quot;)
    Memo1-&gt;Lines-&gt;LoadFromFile(ParamStr(1));
}
</code></pre>
<p>Dann folgendes:<br />
1. tatsaechlich startet das Programm bei Doppelklick auf eine Datei (mit bei Programminstallation in der Windows Registry eingetragenen Dateiendung) automatisch<br />
2. Rechner produziert 2 x sekundenlanges Pfeifen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> samt mechanischen Geraeuschen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /><br />
3. Access violation at address 0040EF65 in module MeinProgramm.exe read of address 00000470.</p>
<p>Was mach ich falsch? Wie viele Versuche hab ich noch bis der Rechner rein mechanisch aufgibt???</p>
<p>Also, ganz reduziert: Ist die Fkt ParamStr(1) ausreichend bzw das einzig Machbare um herauszufinden (a) wie die Datei heisst und (b) in welchem Pfad sich die Datei befindet durch welche der Programmstart ausgeloest wurde?</p>
<p>Alvast Bedankt!<br />
Nils</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164943/übergebenen-dateinamen-in-eigenem-programm-auswerten</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 18:29:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164943.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Nov 2006 01:16:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Tue, 14 Nov 2006 01:57:05 GMT]]></title><description><![CDATA[<p>Direkt nach Top 3 der faq steht folgendes &quot;Um den übergebenen Dateinamen dann im eigenen Programm auszuwerten&quot; ... als &quot;ein Beispiel:&quot;</p>
<pre><code>__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  if (ParamStr(1) != &quot;&quot;)
    Memo1-&gt;Lines-&gt;LoadFromFile(ParamStr(1));
}
</code></pre>
<p>Dann folgendes:<br />
1. tatsaechlich startet das Programm bei Doppelklick auf eine Datei (mit bei Programminstallation in der Windows Registry eingetragenen Dateiendung) automatisch<br />
2. Rechner produziert 2 x sekundenlanges Pfeifen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> samt mechanischen Geraeuschen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /><br />
3. Access violation at address 0040EF65 in module MeinProgramm.exe read of address 00000470.</p>
<p>Was mach ich falsch? Wie viele Versuche hab ich noch bis der Rechner rein mechanisch aufgibt???</p>
<p>Also, ganz reduziert: Ist die Fkt ParamStr(1) ausreichend bzw das einzig Machbare um herauszufinden (a) wie die Datei heisst und (b) in welchem Pfad sich die Datei befindet durch welche der Programmstart ausgeloest wurde?</p>
<p>Alvast Bedankt!<br />
Nils</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174119</guid><dc:creator><![CDATA[nhr]]></dc:creator><pubDate>Tue, 14 Nov 2006 01:57:05 GMT</pubDate></item><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Tue, 14 Nov 2006 07:00:46 GMT]]></title><description><![CDATA[<p>nhr schrieb:</p>
<blockquote>
<p>2. Rechner produziert 2 x sekundenlanges Pfeifen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> samt mechanischen Geraeuschen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
</blockquote>
<p>Und du glaubst tatsächlich das liegt an der Software, dass dein REchner mechanische Geräusche von sich gibt? Wie soll das denn gehen? Vielleicht durch übermässigen Elektronenbeschuss?</p>
<p>nhr schrieb:</p>
<blockquote>
<p>3. Access violation at address 0040EF65 in module MeinProgramm.exe read of address 00000470.</p>
</blockquote>
<p>Setz mal nen Breakpoint in die Funktion und schau dir an, was da genau passiert... Mein Tip: Memo1 ist zum Zeitpunkt des Aufrufs noch null...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174162</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Tue, 14 Nov 2006 07:00:46 GMT</pubDate></item><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Sat, 18 Nov 2006 23:08:56 GMT]]></title><description><![CDATA[<p>Habe folgende Fkt zum auslesen des ProgrammDirectories (aus borland hilfe) benutzt:</p>
<pre><code>char *current_directory(char *path);
char *current_directory(char *path)
{
  strcpy(path, &quot;X:\\&quot;);      /* fill string with form of response: X:\ */
  path[0] = 'A' + getdisk();    /* replace X with current drive letter */
  getcurdir(0, path+3);  /* fill rest of string with current directory */
  return(path);
}
</code></pre>
<p>und es kommen genauso viele exceptions wie leerzeichen in dem directory string stehen. verstehe ich zwar auch nicht, tut aber nicht viel zur sache...</p>
<p>... weil mir in diesem Forum gesagt wurde die ParamStr() Funktion benutzen zu sollen. Ziel: Datei mit z.B. .xxx Dateiendung laesst das Programm starten, .xxx-Datei soll ausgelesen (sprich: &quot;geoeffnet&quot;) werden. Ist das Programm noch in keiner Instanz aktiv, dann funktioniert das auch alles supi. Wenn aber mein Programm schon in einer ersten Instanz laeuft, dann nicht...</p>
<p>Der Code schaut aus wie folgt:</p>
<p>in der WINAPI wird gecheckt ob schon eine Programminstanz laeuft, und Kommandozeile wird mittels einer WM_COPYDATA Message an die schon laufende Programminstanz weitergegeben:</p>
<pre><code>WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR cmdLine, int)
{
 try
  {
    // Versuche, Mutex zu öffnen:
    HANDLE hMutex = OpenMutex(MUTEX_ALL_ACCESS, 0, &quot;DeviPVS.0&quot;);

    // Falls hMutex ist 0, Mutex erzeugen:
    if (!hMutex)
      hMutex = CreateMutex(0, 0, &quot;DeviPVS.0&quot;);
    else
    {
      // Es ist die zweite Instanz. Aktiviere die erste Instanz:
      HWND hWnd = FindWindow(0, &quot;iPV-Sim&quot;);
      //************************************************
      // Kommandozeile nicht leer. Sende die
      // Kommandozeile an die laufende
      // Programminstanz in einer WM_COPYDATA Message:
      if (strlen(cmdLine) != 0)
      {
        COPYDATASTRUCT cds;
        cds.cbData = strlen(cmdLine) + 1;
        cds.lpData = cmdLine;
        SendMessage(hWnd, WM_COPYDATA, 0, (LPARAM)&amp;cds);
      }
      // Es ist die zweite Instanz. Aktiviere die erste Instanz:
      SetForegroundWindow(hWnd);
      UpdateWindow(hWnd);

      return 0;
      //************************************************
    }
        try
        {
                 Application-&gt;Initialize();
                 // ...
                 Application-&gt;Run();
        }                                 
        catch (Exception &amp;exception)                      
        {
                 Application-&gt;ShowException(&amp;exception);
        }
        catch (...)
        {
                 // ...        
        }
        ReleaseMutex(hMutex);
  }
  catch (Exception &amp;exception)
  {
    Application-&gt;ShowException(&amp;exception);
  }

  return 0;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Anscheinend wir die Komandozeile aber NICHT weitergegeben, denn</p>
<pre><code>void __fastcall WmCopyData(TWMCopyData&amp; Message);
(void __fastcall TMainForm::WmCopyData(TWMCopyData&amp; Message)
{
        for (int i=1;i&lt;=ParamCount();i++)
        {
                Memo1-&gt;Lines-&gt;Add(&quot;WmCopyData: &quot; + ParamStr(i));
        }

  ButtonStartStartScreen(MainForm);
}
</code></pre>
<p>macht garnichts...</p>
<p>und jetzt?</p>
<p>Wenn mir einer hilft, dann jetzt schon vielen herzlichen Dank! Weiss da wirklich nicht mehr weiter...</p>
<p>Nils</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175413</guid><dc:creator><![CDATA[nhr]]></dc:creator><pubDate>Sat, 18 Nov 2006 23:08:56 GMT</pubDate></item><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Sat, 18 Nov 2006 23:00:18 GMT]]></title><description><![CDATA[<p>Bisheriger Code steht ja bereits da... scheint nicht die richtige Loesung zu sein; gibt es zumindest eine Idee wie es anders oder richtig gehen koennte???</p>
<p>Wenn, dann auf jeden Fall schon Mal vielen Dank,<br />
Nils</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1176894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1176894</guid><dc:creator><![CDATA[nhr]]></dc:creator><pubDate>Sat, 18 Nov 2006 23:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Sun, 19 Nov 2006 09:09:05 GMT]]></title><description><![CDATA[<p>Wie oben schon gesagt: benutze den Debugger!<br />
Setze einen Breakpoint z.B. in Zeile 14, geh von dort in Einzelschritten weiter und sieh dir jeweils den Inhalt der relevanten Variablen an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1176985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1176985</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sun, 19 Nov 2006 09:09:05 GMT</pubDate></item><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Mon, 20 Nov 2006 13:30:07 GMT]]></title><description><![CDATA[<p>Wenn du die Daten per WM_COPYDATA weitergibst, stehen natürlich in den Variablen 'ParamCount' und 'ParamStr' nur die bei Programmstart gesetzten Werte drin.<br />
Du mußt schon die Werte aus der &quot;TWMCopyData&amp; Message&quot; auslesen.</p>
<p>Mir scheint, als ob dieses Programm dich ein wenig überfordert, wenn du noch nicht einmal die Grundlagen beherrscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1177764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1177764</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 20 Nov 2006 13:30:07 GMT</pubDate></item><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Tue, 21 Nov 2006 03:30:02 GMT]]></title><description><![CDATA[<p>Na, dann erst Mal vielen herzlichen Dank fuer die Antwort! Dachte schon, dass dies ein Forum sei in welchem man nach 100 x FAQ und &quot;benutze-doch-mal-die-hilfe-deiner-rad-software&quot; nur auf den Debugger hingewiesen wird...</p>
<p>Ueberfordert bin ich schon: sonst wuerde ich ja nicht(s) posten.</p>
<p>Also Danke fuer den Tip, werde es Mal (morgen, demnaechst, gibt gerade wichtigeres) checken.</p>
<p>P.S. Apropros Debugger: 1.) Wie soll das gehen, wenn es um ein WINDOWS message-posting zu einer anderen Instanz geht? Das laueft ja &quot;eigentlich&quot; alles ohne Probleme...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1178137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1178137</guid><dc:creator><![CDATA[nhr]]></dc:creator><pubDate>Tue, 21 Nov 2006 03:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Tue, 21 Nov 2006 06:55:41 GMT]]></title><description><![CDATA[<p>nhr schrieb:</p>
<blockquote>
<p>Dachte schon, dass dies ein Forum sei in welchem man nach 100 x FAQ und &quot;benutze-doch-mal-die-hilfe-deiner-rad-software&quot; nur auf den Debugger hingewiesen wird...</p>
</blockquote>
<p>Naja, man sollte schon der Fertigkeit des<a href="http://www.junix.ch/bcb/help" rel="nofollow">Debuggerbenutzens</a> mächtig sein. Das verhindert nämlich, dass ellen lange LIstings einem die Lust am Helfen nehmen. Denn wir haben ja alle nicht die Infrastruktur um deine drüftigen Informationen nach zu bauen.</p>
<p>nhr schrieb:</p>
<blockquote>
<p>P.S. Apropros Debugger: 1.) Wie soll das gehen, wenn es um ein WINDOWS message-posting zu einer anderen Instanz geht?</p>
</blockquote>
<p>Hmmm mal überlegen... Man könnte doch.... ach nein, das ist wahrscheinlich zuviel... wobei... naja, man könnte wirklich.... Wie wärs denn wenn man (bei Problemen für den Empfang der Nachricht) den empfangenden Task im Debugger laufen lässt und dann die andere Instanz einfach startet und den Versand der Message provoziert? (oder natürlich umgekehrt bei Problemen im Sendenden Task....)</p>
<p>nhr schrieb:</p>
<blockquote>
<p>Das laueft ja &quot;eigentlich&quot; alles ohne Probleme...</p>
</blockquote>
<p>offensichtlich nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1178149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1178149</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Tue, 21 Nov 2006 06:55:41 GMT</pubDate></item><item><title><![CDATA[Reply to übergebenen Dateinamen in eigenem Programm auswerten... on Tue, 21 Nov 2006 20:27:23 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9348">@Th</a>: nope, auch wenn das - von der in meinem posting nicht vollstaendig aufgeschriebenen funktion - die ursache gewesen waere... es sei denn folgendes ist auch falsch um WmCopyData(TWMCopyData&amp; Message) asuzulesen...(?)</p>
<pre><code>void __fastcall TMainForm::WmCopyData(TWMCopyData&amp; Message)
{
  AnsiString slCmdLine =
    (char*)Message.CopyDataStruct-&gt;lpData;
  slCmdLine = slCmdLine + '\0';

  // Den Code hier einfügen... z.B.:
  ShowMessage(slCmdLine);

  Memo1-&gt;Lines-&gt;Add(&quot;WmCopyData slCmdLine: &quot; + slCmdLine);

        for (int i=1;i&lt;=ParamCount();i++)
        {
        //    if (LowerCase(ParamStr(i)) == &quot;beep&quot;)
        //      Beep(10000,1000);
                Memo1-&gt;Lines-&gt;Add(&quot;WmCopyData: &quot; + ParamStr(i));
        //    elseif (LowerCase(ParamStr(i)) == &quot;exit&quot;)
        //      Application-&gt;Terminate();
        }
}
</code></pre>
<p>weil @ JUNix ich habe natuerlich dummer Weise meinen Code versucht auf das Wesentliche zu bereinigen,</p>
<p>junix schrieb:</p>
<blockquote>
<p>Das verhindert nämlich, dass ellen lange LIstings einem die Lust am Helfen nehmen</p>
</blockquote>
<p>.</p>
<p>Vielen Dank fuer den Debugger-Link. Frage mich aber, warum Du so schuechtern damit rausgerueckt bist...:</p>
<p>junix schrieb:</p>
<blockquote>
<p>Hmmm mal überlegen... Man könnte doch.... ach nein, das ist wahrscheinlich zuviel... wobei... naja, man könnte wirklich.... Wie wärs denn wenn man</p>
</blockquote>
<p>...zu lange vorm Bildschirm gesessen?-) hatte aber auf jeden Fall Humor...</p>
<p>Hast sicherlich Recht damit: HowTo's ueber das Debuggen machen sich rar (vielleicht systemimmanent durch das Benutzen von rad:) Auch wenn's von einem Laien wie mir nicht viel Wert sein mag: ich finde Deine Einfuehrung (mehr ist's ja nicht) in die Instrumente des Debuggens da sehr passend! Manchmal scheifst Du da aber wirklich ab... ich gerade auch. Trotzdem: Ich find's toll das Du's machst, Danke!</p>
<p>Ja, Danke soweit fuer Eure Tips / Ideen / Anregungen.<br />
Es laueft aber immer noch nicht... werde bei Zeit debuggen...</p>
<p>Groetjes,<br />
Nils</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1178796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1178796</guid><dc:creator><![CDATA[nhr]]></dc:creator><pubDate>Tue, 21 Nov 2006 20:27:23 GMT</pubDate></item></channel></rss>