Announcement

Collapse
No announcement yet.

Strings, die mit 'SYS_' anfangen aus einer Stringliste löschen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Strings, die mit 'SYS_' anfangen aus einer Stringliste löschen

    Wie kann ich Strings, die mit 'SYS_' anfangen oder als vorletzte 2 Zeichen 'VW' haben aus einer Stringliste löschen

  • #2
    Du könntest das Probieren:<br>
    <br>
    <pre>
    <b>label</b> SearchNext;<br>
    <b>var</b> i : Integer;<br>
    <b>begin</b><br>
    searchNext:<br>
    <b>for</b> i:=0 <b>to</b> strList.Count-1 <b>do begin</b><br>
    <b>if</b> (copy(strList[i],1,4)='SYS_') <b>or</b> (copy(strList[i],length(strList<br>[i])-2,2)='VW') <b>then begin</b><br>
    strList.delete(i);<br>
    <b>goto</b> SearchNext;<br>
    <b>end;</b><br>
    <b>end;</b><br>
    <br>
    </pre>
    Ich habe diesen Code noch nicht ausprobiert, aber so müsste es funktionieren<br>

    mfg Hansjör

    Comment


    • #3
      Hi

      Das Label und Goto sieht sehr schlecht aus, es geht auch so:

      <pre>

      for I := StringList.Count -1 downto 0 do
      if AnsiStrLIComp(PChar(StringList[I]), 'SYS_', 4) = 0 then
      StringList.Delete(I);

      </pre>

      Gruß Hage

      Comment


      • #4
        Hi Hagen,
        Den Code habe ich nur schnell hingeschrieben, deiner ist hier natürlich viel schneller und genialer (herunterzählen).
        Ich habe das Label nur verwendet weil der Index um 1 nach unten verschoben wird wenn man Delete verwendet. Aber so müßte es auch funktionieren (wenn man anstatt einer TSTringlist eine ZeigerListe (TList) verwendet!!), und ich denke noch ein bischen schneller wird es damit auch, weil der Index nich jedesmal neu aufgebaut werden muß:

        for i:=0 to stringlist.count-1 do<br>
        if AnsiStrLIComp(PCHar(STringlist[i]^),'SYS_',4)=0 then<br>
        StringList[i]:=nil;<br>
        STringList.Pack;<br>

        mfg Hansjörg ;-

        Comment

        Working...
        X