<?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[Rückwärts suchen als Befehl....??]]></title><description><![CDATA[<p>Hallo, zusammen<br />
suche in einem AnsiString eine bestimmte Stelle, erhalte dann den Index (i2)<br />
zurück und möchte nun ab dieser Stelle rückwärts ein vorhergehendes Zeichen suchen:<br />
Konkret finde ich in Int i2 die Position von &quot;|&quot;+z1+&quot;|&quot; und davor suche ich nun<br />
mit z3.LastDelimiter(&quot;°&quot;) das Zeichen für den Datenanfang, die mich interessieren.<br />
Mir kommt meine Methode irgendwie mit dem Zerteilen in Einzelstring ziemlich<br />
blöde vor. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> Gibt es keinen Befehl, der in einem String ab Pos x rückwärts<br />
suchen kann? (in anderen Sprachen kenne ich das als Instr() (hier AnsiPos) und<br />
eben für Rückwärts als RInstr().... ???</p>
<pre><code class="language-cpp">z2=zSchrank.SubString(i2,zSchrank.Length()-i2);                               // und String nur ab diesem Schrank kürzen
  i2=z2.AnsiPos(&quot;°°°&quot;);                                                         // und suchen Schrankende
  z2=z2.SubString(1,i2);                                                        // und String nur ab diesem Schrank kürzen
  //ShowMessage(&quot;Schrank: &quot;+z2+&quot;\r\rSuche: &quot;+z1);                               // Schrankdaten komplett

  z1=frm13_grdPatch-&gt;Cells[2][i1];                                              // Panelname auslesen
  i2=z2.AnsiPos(&quot;|&quot;+z1+&quot;|&quot;);                                                    // Panelbezeichnung suchen
  o2=i2&gt;0;                                                                      // Panel vorhanden
  z3=z2.SubString(1,i2);                                                        // und String ab da kürzen
  i2=z3.LastDelimiter(&quot;°&quot;);                                                     // ab wo stehen für dieses Panel die Daten?
  z3=z2.SubString(i2,z2.Length()-i2);                                           // reine Paneldaten abschneiden

  z4   =DatenPipe(1,4,z3,&quot;!!&quot;); i2=z4.AnsiPos(&quot;_&quot;);                             // z.B. Ports_24 ausschneiden
  z4   =z4.SubString(i2+1,z4.Length());                                         // Anzahl als String ermitteln
  iPort=StrToIntDef(z4,0);                                                      // und als Int ermitteln
  //ShowMessage(&quot;Schrank: &quot;+z2+&quot;\r\rPanel: &quot;+z3+&quot;\r\rPorts: &quot;+z4);                // Panel- und Portdaten

  z1=frm13_grdPatch-&gt;Cells[3][i1];                                              // Portanzahl auslesen
  i2=StrToIntDef(z1,0);                                                         // und als Int ermitteln
  o3=i2&lt;=iPort &amp;&amp; i2&gt;0;                                                         // prüfen
</code></pre>
<p>Danke und Gruss, Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/140525/rückwärts-suchen-als-befehl</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 15:33:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140525.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Mar 2006 14:27:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rückwärts suchen als Befehl....?? on Wed, 15 Mar 2006 14:27:19 GMT]]></title><description><![CDATA[<p>Hallo, zusammen<br />
suche in einem AnsiString eine bestimmte Stelle, erhalte dann den Index (i2)<br />
zurück und möchte nun ab dieser Stelle rückwärts ein vorhergehendes Zeichen suchen:<br />
Konkret finde ich in Int i2 die Position von &quot;|&quot;+z1+&quot;|&quot; und davor suche ich nun<br />
mit z3.LastDelimiter(&quot;°&quot;) das Zeichen für den Datenanfang, die mich interessieren.<br />
Mir kommt meine Methode irgendwie mit dem Zerteilen in Einzelstring ziemlich<br />
blöde vor. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> Gibt es keinen Befehl, der in einem String ab Pos x rückwärts<br />
suchen kann? (in anderen Sprachen kenne ich das als Instr() (hier AnsiPos) und<br />
eben für Rückwärts als RInstr().... ???</p>
<pre><code class="language-cpp">z2=zSchrank.SubString(i2,zSchrank.Length()-i2);                               // und String nur ab diesem Schrank kürzen
  i2=z2.AnsiPos(&quot;°°°&quot;);                                                         // und suchen Schrankende
  z2=z2.SubString(1,i2);                                                        // und String nur ab diesem Schrank kürzen
  //ShowMessage(&quot;Schrank: &quot;+z2+&quot;\r\rSuche: &quot;+z1);                               // Schrankdaten komplett

  z1=frm13_grdPatch-&gt;Cells[2][i1];                                              // Panelname auslesen
  i2=z2.AnsiPos(&quot;|&quot;+z1+&quot;|&quot;);                                                    // Panelbezeichnung suchen
  o2=i2&gt;0;                                                                      // Panel vorhanden
  z3=z2.SubString(1,i2);                                                        // und String ab da kürzen
  i2=z3.LastDelimiter(&quot;°&quot;);                                                     // ab wo stehen für dieses Panel die Daten?
  z3=z2.SubString(i2,z2.Length()-i2);                                           // reine Paneldaten abschneiden

  z4   =DatenPipe(1,4,z3,&quot;!!&quot;); i2=z4.AnsiPos(&quot;_&quot;);                             // z.B. Ports_24 ausschneiden
  z4   =z4.SubString(i2+1,z4.Length());                                         // Anzahl als String ermitteln
  iPort=StrToIntDef(z4,0);                                                      // und als Int ermitteln
  //ShowMessage(&quot;Schrank: &quot;+z2+&quot;\r\rPanel: &quot;+z3+&quot;\r\rPorts: &quot;+z4);                // Panel- und Portdaten

  z1=frm13_grdPatch-&gt;Cells[3][i1];                                              // Portanzahl auslesen
  i2=StrToIntDef(z1,0);                                                         // und als Int ermitteln
  o3=i2&lt;=iPort &amp;&amp; i2&gt;0;                                                         // prüfen
</code></pre>
<p>Danke und Gruss, Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1016781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1016781</guid><dc:creator><![CDATA[Stefan71242]]></dc:creator><pubDate>Wed, 15 Mar 2006 14:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to Rückwärts suchen als Befehl....?? on Wed, 15 Mar 2006 15:05:42 GMT]]></title><description><![CDATA[<p>Ist das rückwärtssuchen nötig??</p>
<p>Vielleicht hilft schon aufteilen:</p>
<p><a href="http://www.marquardtnet.info/cecke/quickies.1/1_quicky_01.html" rel="nofollow">http://www.marquardtnet.info/cecke/quickies.1/1_quicky_01.html</a></p>
<p>oder suchen und ersetzen</p>
<p><a href="http://www.marquardtnet.info/cecke/quickies.1/1_quicky_02.html" rel="nofollow">http://www.marquardtnet.info/cecke/quickies.1/1_quicky_02.html</a></p>
<p>Und dann ggf. in eine Teilstring arbeiten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1016840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1016840</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Wed, 15 Mar 2006 15:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to Rückwärts suchen als Befehl....?? on Wed, 15 Mar 2006 16:06:40 GMT]]></title><description><![CDATA[<p>ungefähr soetwas?</p>
<pre><code class="language-cpp">int Rinstr(AnsiString asText,char cZeichen, int iPos)
{
    int i;
    for(i = iPos; i&gt;0; i--)
    {
        if(asText[i] == cZeichen)
            break;    
    }
    return i;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1016922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1016922</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Wed, 15 Mar 2006 16:06:40 GMT</pubDate></item></channel></rss>