Announcement

Collapse
No announcement yet.

Suchen ersetzen in textdatei

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

  • Suchen ersetzen in textdatei

    hallo,

    aufgrund meiner probleme mit dem translation-manager muss ich mir ein tool schreiben, welches in einer textdatei gewisse dinge sucht und ersetzt!
    wie geht man am besten vor?
    datei zeilenweise lesen mit readline scheidet aus, fallse der zu ersetzende string mehrzeilig ist oder?
    ich bin geneigt zu sagen, datei in stringliste und mit stringrepleace und der eigenschaft text!

    was meint ihr?

    gruß

    markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,

    ich selber hatte mit StringReplace() schon mal erhebliche Performanceprobleme, wenn der Text zu groß ist. Die Jedi-Komponenten haben eine eigene StringReplace() implementiert, welche erheblich schneller arbeitet.
    .
    Hans

    Comment


    • #3
      Hallo Markus,

      wenn es darum geht in Textdateien etwas zu suchen und zu ersetzen, verwenden wir den UltraEdit. Mit dem kannst Du nach regulären Ausdrücken suchen und somit auch über mehrere Zeilen.
      Wenn Du dann noch eine sich immer wiederholende Suche hast (also ich meine bei jedem neuen Text die gleiche Suche), dann kannst Du ein Makro schreiben und dieses in Zukunft immer verwenden.
      Aber als Delphianer versucht man natürlich sowas erst einmal selbst zu entwickeln.
      UltraEdit ist aber wirklich sehr mächtig.

      www.ultraedit.com

      Grüsse Pete

      Comment


      • #4
        @hans
        was heißt Jedi-Komponenten? ein spezial memo- bzw. richeditfeld?

        @peter
        ich brauche es leider im programmcode, weil auch noch dateien gelöscht und umbenannt werden müssen!

        habe es nur so gemacht:
        <pre>
        SL := TStringList.Create;
        try
        SL.LoadFromFile(datei);
        StringReplace(SL.Text,suchwort,ersetzwort,[rfReplaceAll]);
        DeleteFile(datei);
        SL.SaveToFile(datei);
        finally
        SL.Free;
        end;
        </pre>

        gruß

        marku
        Herzliche Grüße

        Markus Lemcke
        barrierefreies Webdesign

        Comment


        • #5
          Hallo Markus,
          &lt;

          Du hast geschrieben:
          ...datei zeilenweise lesen mit readline scheidet aus, fallse der zu ersetzende string mehrzeilig ist oder?...

          Ich weis ja nicht aus wievielen Wörtern Dein String besteht, aber Du könntest doch auch z.B. beim String "Mein String" so suchen:

          for i:= 0 to MyList.count -1 do begin
          if (AnsiPos('Mein',MyList[i]) > 0) {oder bestimmten Integerwert} and (AnsiPos('String',MyList[i+1]) > 0 then begin
          irgendwas;
          end;
          end;

          Ich hoffe es bringt Dich weiter.

          &gt;
          Grüsse Pete

          Comment


          • #6
            hi peter,

            es geht um eine pascal objektdeklaration!
            <pre>
            object OvcController1: TOvcController
            EntryCommands.TableList = ( 'Default'
            True
            EntryCommands.TableList = ()
            'WordStar'
            False
            EntryCommands.TableList = ()
            'Grid'
            False
            EntryCommands.TableList = () )
            Epoch = 2000
            Left = 248
            Top = 48
            end
            end
            </pre>

            habe es nun doch mit stringreplace gemacht!
            hast du ne bessere idee?

            gruß

            marku
            Herzliche Grüße

            Markus Lemcke
            barrierefreies Webdesign

            Comment

            Working...
            X