![]() |
Bestimmten Text unter eine bestimmte Zeile einer Textdatei
Meine Frage ist, wie man einen Text aus einem Memo genau unter ein bestimmte Zeile
einer Textdatei speichern/einfügen kann. Inhalt der Zeile und Text aus dem Memo sind natürlich bekannt. Gibt es eine Funktion, mit der man eine Textdatei nach einer Zeile durchsuchen kann und unter diese einen bestimmten Text speichern kann. |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Guten Morgen... :zwinker:
das wirst du wohl nur über Umwege lösen können. - den Text ab der betreffenden Zeile kopieren ( in Stringlist z.B.) und dann entfernen. - die betreffende Zeile ans Memo anhängen und den Text zurückkopieren. performanter dürfte aber die "Vorbereitung" des Textes in einer Stringlist sein und den kompletten Text dem Memo zuordnen. :hi: |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Wieso nicht einfach Memo.Text per Insert in die Stringliste einfügen?
[edit] Gerade ausprobiert, tut.
Delphi-Quellcode:
[/edit]
var sl: TStringlist;
begin sl := TStringlist.Create; try sl.LoadFromFile(Filename); sl.Insert(1,TrimRight(Memo1.Text)); sl.SaveToFile(Filename); finally sl.Free; end; end; |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Wenn es nur um das Auslesen und Ändern eines Teiles der Datei ginge, dann eventuell
![]() Aber wenn die geänderte Datei dann eh komplett in ein Memo rein soll, dann entweder direkt alles im Memo machen oder wenn viele Zeilen "schnell" eingefügt/gelöscht/geändert werden sollen, dann die Änderungen in einer TStringList machen und danach alles an das Memo übergeben. |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
ähmmm... :gruebel:
er möchte doch in den Memo Text was mittenreinfügen ... oder interpretiere ich das falsch ? |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Hatte verstanden er will was in der Datei einfügen und es auch noch angezeigt haben :gruebel:
|
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Zitat:
|
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Also...
Danke für die vielen schnellen Rückmeldungen. Um es nocheinmal einfacher darzustellen (;D) erkläre ich nochmal mein Problem: Ich habe ein Memo (meLog) und eine Textdatei. Der Ort wo die Textdatei liegt und der Text (bzw. mindestens 1 Zeile) sind mir bekannt. (Ich benötige nur 1 Zeile) Anstatt die Textdatei zu öffnen und an einer bestimmten Stelle in sie hinein zu schreiben, möchte ich genau unter die mir bekannte Zeile den Text des Memofeldes (meLog) einfügen. Natürlich gibt es die Lösung einen Text innerhalb eines Memo zu bearbeiten und ich weiß natürlich auch wie das geht...aber das möchte ich ja gar nicht. Mein Ziel ist es, zb bei einer html-Datei, nicht die ganze Datei nach der richtigen Stelle durchsuchen zu müssen, sondern mit Delphi einen Text (kein Html-Code) genau an die richtige Stelle [unter die Zeile die ich kenne (-> Kann zb ein Kommentar sein)] einzufügen. @DeddyH: Könntest du mir die Zeile " sl.Insert(1,TrimRight(Memo1.Text)); " einmal erläutern? Meinst du mit der "1" in der Klammer die Zeile "1"? Das wäre schon ein großer Schritt zur Lösung :) |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Meine Testdatei hatte 2 Zeilen, dazwischen wollte ich den Text des Memos unterbringen. Alles Weitere kanst Du in der Hilfe zu
![]() |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Okay, der Index von TString bedeutet also immer dieselbe Zeile. Aber die mir bekannte Zeile verschiebt sich natürlich
jedes mal wenn die Datei geändert wird. Wenn ich eine Zeile hinzufüge, wird alles um 1 Zeile verschoben. Daher suche ich nach einer Lösung wie man einen Text unter eine Zeile einfügen kann. Ich denke es wäre sehr umständlich immer wieder die neue Position, den neuen Index der bekannten Zeile herauszufinden. Gibt es da eine andere Lösung? Danke, mfg Ghost |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Dann mußt du eben die Zeile erstmal suchen und dann in der nachfolgenden Zeile ein Insert ausführen.
Wenn du die komplette Zeile kennst, dann wäre SL.IndexOf eine Lösung.
Delphi-Quellcode:
i := SL.IndexOf('abc');
SL.Insert(i + 1, 'xyz); |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Gut, danke ich probiers gleich aus
Edit: Hat leider nicht geklappt. |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Hast Du Dir einmal angesehen, was IndexOf macht? Ich vermute, Du suchst nur nach einem Teilstring oder etwas in der Art, deshalb findet IndexOf nichts. Aber das sind alles nur Vermutungen, da Du ja nicht mit Infos herausrückst ("klappt nicht" gilt nicht als Info).
|
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Ich kann leider keine Informationen nennen wenn das Ergebnis von IndexOf = nichts war.
Aber, dass Problem hat sich jetzt erledigt. Ich habe eine andere Möglichkeit gefunden es zu lösen. Danke für die hilfreichen Antworten. Mfg Ghost |
Re: Bestimmten Text unter eine bestimmte Zeile einer Textdat
Hallo zusammen,
ich hatte so ein ähnliches Problem. Ich hatte es wie folgt gelöst: Die Zeile aus dem Memo ist je bekannt, bzw. wo es in die Textdatei rein geschrieben werden soll. Es gibt einmal Pos und PosEx. Ich hatte die die Zeile der Textdatei herausgesucht und dann noch einmal zum nächsten Zeilenumbruch gesucht. Nach diesem Zeilenumbruch hatte ich dann die Zeile eingefügt. So ähnlich sieht es bei mir aus. Das soll nur den Weg zeigen, wie ich es bei mir gelöst habe. Vor allem ist meine Textdatei nur 10 Zeilen lang ohne viel Inhalt.
Delphi-Quellcode:
Gruß
SL.LoadFromFile(GetCurrentDir + PathDelim + cfg);
s := SL.Text; ipos := Pos('Contact', s); i2 := PosEx(#13#10, s, ipos); i2 := i2+1; s2 := copy(s,0, i2); //Den Text bis zur Position an der eingefügt werden soll in s2 schieben Insert('PUTSERIAL '+StartingHexAdress + ' ' +NewSn+ #13#10, s2, i2); SL.Text := s2; SL.SaveToFile(GetCurrentDir + PathDelim + cfg); Mike //Oh... das war ja schon erledigt...?! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz