nina hat folgendes geschrieben: |
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| memo.Lines.LoadFromFile(Pfadname)
for i := 0 to memo.Lines.count-1 do begin if memo.lines[i] = ' <RDF:li>' then begin //posi := Pos('<RDF:li>', memo.lines.Strings[i]); memo.lines.Delete(i); end; end; //for i.... | |
Dass du keinen Erfolg hast, wundert mich nicht. Du prüfst
Quelltext
1:
| if memo.lines[i] = ' <RDF:li>' |
sagst aber selbst, dass eine Zeile z.B. so aussehen kann
Quelltext
1:
| <RDF:li>www.google.de</RDF:li> |
Warum also nicht
Quelltext
1:
| if(pos('<RDF:li>',memo.lines[i]) > 0) then |
Ich würde aber rückwärts durch die Schleife gehen. Luckie hat
hier übrigens auch den Grund dafür genannt.
< --- schnibbel ------------>
nina hat folgendes geschrieben: |
Also mein Programm soll den Inhalt der Adressleiste aus dem Netscape und aus Mozilla löschen! Diese Einträge befinden sich in einer Datei mit der Endung .rdf. |
Das dachte ich mir: XML. Die RDF-Dateien des Mozilla sind im XML-Format. Du solltest dich daher am besten mit einem Parser beschäftigen. Ab Delphi 6 ist eine XML-Komponente dabei. Bei älteren Delphi-Versionen kannst du z.B. die Typbibliothek von Microsoft oder einen anderen freien XML-Parser benutzen.
Der Vorteil: du kannst das Dokument mit seiner kompletten Struktur laden und alle Knoten mit dem Namen "<RDF:li/>" in eine interne Liste (Nodelist) laden. Du könntest dann alle gefundenen Knoten löschen.
Ist der Knotentext noch wichtig (etwa google), dann kannst du in einer simplen for-Schleife alle gefundenen Knoten durchlaufen und nur die entfernen, die die gewünschten Begriffe aufweisen. Dann speicherst du die Datei neu ab. Fertig.
Ich denke, diese Lösung ist weitaus eleganter als der Umweg über ein oder sogar zwei Memos.
Grüße.