Announcement

Collapse
No announcement yet.

eine txt datei nach einem wort mit einer zahl durchsuchen

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

  • eine txt datei nach einem wort mit einer zahl durchsuchen

    Ich habe eine txt datei und will die wörter durchsuchen wenn z.b. eine 1 in dem wort vor kommt soll er das gantze wort in eine listbox kopieren und weiter suchen.

  • #2
    Hallo Benny,<br>versuche mal folgendes:<br>
    ...<br>
    SL:=TStringList.Create;<br>
    Try<br>
    SL.LoadFormFile(Deine Textdatei);<br>
    For iCnt:=0 to SL.Count-1 do<br>
    If Pos('1',SL.Strings[iCnt])>0 then<br>
    Listbox1.Items.Add(SL.Strings[iCnt]);<br>
    Finally<br>
    SL.Free;<br>
    end;<br>
    <br>
    :-) Jens Schuman

    Comment


    • #3

      Comment


      • #4
        Schon ok du hattest LoadFromFile falsch geschrieben :-)
        Geht ja super, danke.
        Aber er koppiert jetzt die gantze Zeile, wie mache ich das denn wenn er nur das wort mit der 1 kopiert ??

        Comment


        • #5
          <p>Hallo Benny,<br>
          <br>
          folgend ein Beispiel für Dein Problem. Es wird davon ausgegengen, dass dem gesuchten Wort ein Leerzeichnen vor- und nachgeht:<br>
          <pre>
          function SucheWortMitZahl(aText:String; aPos:Integer):String;
          var start, ende:Integer;
          begin
          start:=pos;
          ende:=pos;
          while (aText[start]<>' ') do Dec(start);
          while (aText[ende]<>' ') do Inc(ende);
          Result:=System.Copy(aText, start, ende-start+1);
          end; // SucheWortMitZahl
          </pre>
          <br>
          Aufrufen tust Du Funktion folgendermassen (angelehnt am Beispiel von Jens):<br>
          <pre>
          var x:Integer;
          begin
          ...
          for iCnt:=0 to SL.Count-1 do
          begin
          x:=Pos('1',SL.Strings[iCnt]);
          if (x>0) then Listbox1.Items.Add(SucheWortMitZahl
          (SL.Strings[iCnt]), x);
          end; // for
          ...
          </pre>
          <br>
          Gruß Thomas</p&gt

          Comment


          • #6
            <p>Hallo Benny,<br>
            <br>
            folgend ein Lösungsvorschlag: Es wird von der Annahme ausgegangen, dass das gesuchte Wort zwischen Leerzeichen steht.<br>
            <br>
            <pre>
            function WortMitZahl(aWort:String; aPos:Integer):String;
            var start, ende:Integer;
            begin
            start:=aPos;
            ende:=aPos;
            while (aWort[start]<>' ') do Dec(start);
            while (aWort[ende]<>' ') do Inc(ende);
            Result:=System.Copy(aWort, start, ende-start+1);
            end; // WortMitZahl
            </pre>
            <br>
            Die Funktion wird folgendemassen (in Anlehnung an das Beispiel von Jens) aufgerufen:
            <br>
            <pre>
            ...
            For iCnt:=0 to SL.Count-1 do
            begin
            x:=Pos('1', SL.Strings[iCnt]);
            if (x>0) then
            Listbox1.Items.Add(WortMitZahl(SL.Strings[iCnt]), x);
            end; // for
            ...
            </pre>
            <br>
            Gruß Thomas</p&gt

            Comment


            • #7
              <p>Hallo Benny,<br>
              <br>
              folgend ein Lösungsvorschlag: Es wird von der Annahme ausgegangen, dass das gesuchte Wort zwischen Leerzeichen steht.<br>
              <br>
              <pre>
              function WortMitZahl(aWort:String; aPos:Integer):String;
              var start, ende:Integer;
              begin
              start:=aPos;
              ende:=aPos;
              while (aWort[start]<>' ') do Dec(start);
              while (aWort[ende]<>' ') do Inc(ende);
              Result:=System.Copy(aWort, start, ende-start+1);
              end; // WortMitZahl
              </pre>
              <br>
              Die Funktion wird folgendermassen (in Anlehnung an das Beispiel von Jens) aufgerufen:
              <br>
              <pre>
              ...
              for iCnt:=0 to SL.Count-1 do
              begin
              x:=Pos('1', SL.Strings[iCnt]);
              if (x>0) then
              Listbox1.Items.Add(WortMitZahl(SL.Strings[iCnt], x));
              end; // for
              ...
              </pre>
              <br>
              Gruß Thomas</p&gt

              Comment

              Working...
              X