<?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[wieder Programmparameter aus String]]></title><description><![CDATA[<p>Ich hab jetzt eine Funktion geschrieben, mit der man die Programmparameter aus einem String extrahieren kann:</p>
<pre><code class="language-cpp">void __fastcall TMainForm::ExtractParams(AnsiString FullName,TStringList &amp;Ausgabe)
{
 AnsiString Suchstring = FullName;
 AnsiString Pfad;
 bool KeineParam = false;
 if(FullName.SubString(0,1)==&quot;\&quot;&quot;)
 { //Erstes Zeichen ist &quot;
  if(FullName.SubString(FullName.Length(),1)==&quot;\&quot;&quot;)
  { //Kompletter Name in Anführungszeichen - &quot; entfernen und Suchstring ändern
   Pfad = FullName.SubString(2,FullName.Length()-2);
   KeineParam = true;
  }
  else
  { //Pfad+Name in Anführungszeichen, danach Parameter - Pfad und Suchstring ändern
   int ZwAnf = (FullName.SubString(2,FullName.Length()-1)).AnsiPos(&quot;\&quot;&quot;);
   Suchstring = FullName.SubString(ZwAnf+2,FullName.Length()-ZwAnf);
   Pfad = FullName.SubString(2,ZwAnf-1);
   delete &amp;ZwAnf;
  }
 }
  //Pfad extrahieren:
 if(Pfad==&quot;&quot;)
 {
  TStringList *TempListEP1 = new TStringList;
  split(*TempListEP1,Suchstring,&quot; &quot;);
  Pfad = TempListEP1-&gt;Strings[0];
 }
  //Parameter extrahieren:
 TStringList *TempListEP2 = new TStringList;
 if(!KeineParam) split(*TempListEP2,Suchstring,&quot; &quot;);
 TStringList *ausgabe = &amp;Ausgabe;
 ausgabe-&gt;Add(Pfad);
 for(int i=1;i&lt;TempListEP2-&gt;Count;i++) ausgabe-&gt;Add(TempListEP2-&gt;Strings[i]);
}
</code></pre>
<p>Zur Erklärung: split(TStringList,String eingabe,String delimiter) teilt den String eingabe an den Zeichen delimiter in die StringList auf.</p>
<p>Bisher hat alles gut geklappt, bis ich auf folgendes Programm gestoßen bin:<br />
&quot;D:\Programme\TuneUp Utilities\MemOptimizer.exe autostart&quot; (ohne Anführungszeichen!) beim Windows Autostart funzts</p>
<p>Wie soll man da wissen, was die Parameter sind <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="😕"
    /></p>
<p>Gruß,<br />
BCB6-User</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/107016/wieder-programmparameter-aus-string</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 10:35:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/107016.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Apr 2005 13:03:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wieder Programmparameter aus String on Fri, 15 Apr 2005 13:03:50 GMT]]></title><description><![CDATA[<p>Ich hab jetzt eine Funktion geschrieben, mit der man die Programmparameter aus einem String extrahieren kann:</p>
<pre><code class="language-cpp">void __fastcall TMainForm::ExtractParams(AnsiString FullName,TStringList &amp;Ausgabe)
{
 AnsiString Suchstring = FullName;
 AnsiString Pfad;
 bool KeineParam = false;
 if(FullName.SubString(0,1)==&quot;\&quot;&quot;)
 { //Erstes Zeichen ist &quot;
  if(FullName.SubString(FullName.Length(),1)==&quot;\&quot;&quot;)
  { //Kompletter Name in Anführungszeichen - &quot; entfernen und Suchstring ändern
   Pfad = FullName.SubString(2,FullName.Length()-2);
   KeineParam = true;
  }
  else
  { //Pfad+Name in Anführungszeichen, danach Parameter - Pfad und Suchstring ändern
   int ZwAnf = (FullName.SubString(2,FullName.Length()-1)).AnsiPos(&quot;\&quot;&quot;);
   Suchstring = FullName.SubString(ZwAnf+2,FullName.Length()-ZwAnf);
   Pfad = FullName.SubString(2,ZwAnf-1);
   delete &amp;ZwAnf;
  }
 }
  //Pfad extrahieren:
 if(Pfad==&quot;&quot;)
 {
  TStringList *TempListEP1 = new TStringList;
  split(*TempListEP1,Suchstring,&quot; &quot;);
  Pfad = TempListEP1-&gt;Strings[0];
 }
  //Parameter extrahieren:
 TStringList *TempListEP2 = new TStringList;
 if(!KeineParam) split(*TempListEP2,Suchstring,&quot; &quot;);
 TStringList *ausgabe = &amp;Ausgabe;
 ausgabe-&gt;Add(Pfad);
 for(int i=1;i&lt;TempListEP2-&gt;Count;i++) ausgabe-&gt;Add(TempListEP2-&gt;Strings[i]);
}
</code></pre>
<p>Zur Erklärung: split(TStringList,String eingabe,String delimiter) teilt den String eingabe an den Zeichen delimiter in die StringList auf.</p>
<p>Bisher hat alles gut geklappt, bis ich auf folgendes Programm gestoßen bin:<br />
&quot;D:\Programme\TuneUp Utilities\MemOptimizer.exe autostart&quot; (ohne Anführungszeichen!) beim Windows Autostart funzts</p>
<p>Wie soll man da wissen, was die Parameter sind <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="😕"
    /></p>
<p>Gruß,<br />
BCB6-User</p>
]]></description><link>https://www.c-plusplus.net/forum/post/767496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767496</guid><dc:creator><![CDATA[BCB6-User]]></dc:creator><pubDate>Fri, 15 Apr 2005 13:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to wieder Programmparameter aus String on Fri, 15 Apr 2005 13:37:57 GMT]]></title><description><![CDATA[<p>- schau mal</p>
<pre><code class="language-cpp">ParamStr(int Index)
</code></pre>
<h2>an</h2>
<blockquote>
<pre><code class="language-cpp">if(FullName.SubString(0,1)==&quot;\&quot;&quot;)
</code></pre>
</blockquote>
<p>wieso &quot;0&quot;? AnsiString fängt bei 1 an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/767531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767531</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Fri, 15 Apr 2005 13:37:57 GMT</pubDate></item><item><title><![CDATA[Reply to wieder Programmparameter aus String on Fri, 15 Apr 2005 15:09:44 GMT]]></title><description><![CDATA[<p>ParamStr(int Index) kann doch nur beim Programm, dass gerade läuft die Parameter extrahieren, oder nicht? Und SubString(0,1) funzt auch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/767608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767608</guid><dc:creator><![CDATA[BCB6-User]]></dc:creator><pubDate>Fri, 15 Apr 2005 15:09:44 GMT</pubDate></item><item><title><![CDATA[Reply to wieder Programmparameter aus String on Fri, 15 Apr 2005 15:28:09 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>ParamStr(int Index) kann doch nur beim Programm, dass gerade läuft die Parameter extrahieren, oder nicht?</p>
</blockquote>
<p>Ach so, jetzt versteh ich, was du die ganze Zeit willst : Du liest die AutoRun-Einträga der Registry aus und willst diese nach Programm und Parameter aufschlüsseln. Man, das mußt du doch mal deutlich sagen.<br />
Dann hast du natürlich recht, ParamStr hilft dir da nicht.</p>
<blockquote>
<p>Und SubString(0,1) funzt auch</p>
</blockquote>
<p>Ganz bestimmt nicht. Es wird im besten Fall nichts passieren.<br />
Aus der Borland-Hilfe :</p>
<blockquote>
<p>Die Indexnumerierung beginnt mit 1. Bei dem String &quot;Hallo&quot; und einem Indexwert von 2 würde beispielsweise das Zeichen 'a' zurückgegeben...<br />
Der Teilstring enthält die in count angegebene Anzahl von Zeichen und beginnt an der mit index festgelegten Position.</p>
</blockquote>
<blockquote>
<p>Bisher hat alles gut geklappt, bis ich auf folgendes Programm gestoßen bin:<br />
&quot;D:\Programme\TuneUp Utilities\MemOptimizer.exe autostart&quot; (ohne Anführungszeichen!) beim Windows Autostart funzts</p>
</blockquote>
<p>Das ist natürlich ein Problem. Vielleicht hilft es ja, zuerst mal den Pfad mit ExtractFilePath zu extrahieren. Das sollte das Leerzeichen aus &quot;\TuneUp Utilities\&quot; erkennen. Alles was übrigbleibt, ist der reine Programmname und dananch Parameter.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/767623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767623</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 15 Apr 2005 15:28:09 GMT</pubDate></item><item><title><![CDATA[Reply to wieder Programmparameter aus String on Fri, 15 Apr 2005 16:34:43 GMT]]></title><description><![CDATA[<p>Super Idee, Danke<br />
Das SubString(0,1) hat bei mir aber richtig funktioniert, aber ich werds trotzdem mal umändern</p>
]]></description><link>https://www.c-plusplus.net/forum/post/767689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767689</guid><dc:creator><![CDATA[BCB6-User]]></dc:creator><pubDate>Fri, 15 Apr 2005 16:34:43 GMT</pubDate></item></channel></rss>