Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wort oder Satz in Memo finden und ersetzen (https://www.delphipraxis.net/99383-wort-oder-satz-memo-finden-und-ersetzen.html)

taktaky 11. Sep 2007 13:45


Wort oder Satz in Memo finden und ersetzen
 
Hallo

http://members.lycos.co.uk/forforums...-ersetzen2.jpg

ich muss ständig den Link ändern, deswegen möchte ich gerne nur den Link im Memo oder in Listbox suchen und mit einem anderen Link (der aktuelle Link) ersetzen.

der aktuelle Link befindet sich in einer text-Datei und wird mit dem Code geholt :mrgreen:
Delphi-Quellcode:
ListBox1.Items.LoadFromFile('test.txt');
oder
Memo1.lines.LoadFromFile('test.txt');
nun muss den alten Link http://blabla.de mit dem neuen Link in Txt-Datei : http://bla2bla2.de ersetzen

wie kann ich den Link ersetzen?

Es wäre noch genauer, wenn ich den Inhalt zwischen " " nach dem Wort action :gruebel:
weil der alten Link nicht immer http://blabla.de :mrgreen:

Hat jemand eine Idee mit
Delphi-Quellcode:
 for i= bla to bla2 do
Gruß

DeddyH 11. Sep 2007 13:52

Re: Wort oder Satz in Memo finden und ersetzen
 
StringReplace -> F1

DGL-luke 11. Sep 2007 13:54

Re: Wort oder Satz in Memo finden und ersetzen
 
StringReplace alleine wird nicht hinhauen.

Delphi-Referenz durchsuchenPos und Delphi-Referenz durchsuchenCopy wird man hier brauchen.

argonix 11. Sep 2007 14:27

Re: Wort oder Satz in Memo finden und ersetzen
 
Warum nicht so?
Delphi-Quellcode:
for i:=0 to Memo1.Lines.Count-1 do
Memo1.Lines[i]:=StringReplace(o, 'http://blablabla.de', 'http://bla2bla.de', [rfReplaceAll]);
Das sollte funktionieren.

Klaus01 11. Sep 2007 14:31

Re: Wort oder Satz in Memo finden und ersetzen
 
Zitat:

Zitat von argonix
Warum nicht so?
Delphi-Quellcode:
for i:=0 to Memo1.Lines.Count-1 do
Memo1.Lines[i]:=StringReplace(o, 'http://blablabla.de', 'http://bla2bla.de', [rfReplaceAll]);
Das sollte funktionieren.

Das funktioniert nur wenn der alte Link bekannt ist.
Und laut Fragestellung ist er nicht bekannt.

Grüße
Klaus

Nils_13 11. Sep 2007 14:32

Re: Wort oder Satz in Memo finden und ersetzen
 
Wenn du in einer Zeile zwei Mal den Suchbegriff stehen hast, dann haut Pos alleine nicht hin und du brauchst schon eine Rekursion. Das ist unnötig.

Deshalb: Pos + StringReplace.
Delphi-Quellcode:
for i := 0 to Memo1.Lines.Count-1 do
  if Pos(Suchbegriff, Memo1.Lines[i]) > 0 then
    StringReplace(Memo1.Lines[i], Suchbegriff, Ersetzbegriff, [rfReplaceAll]);
Mist zu spät....

Wenn der Link nicht bekannt ist, dann holt man ihn sich doch eh, dann funktioniert es wieder.

Klaus01 11. Sep 2007 14:39

Re: Wort oder Satz in Memo finden und ersetzen
 
Hallo,

Du könntest auch die Funktion explode verwenden.
Diese nimmt Dir den String auseinander und speichert die Teile
in ein StringArray. Als Seperator kannst Du dann " verwenden.
So könntest Du den Link ermitteln der ausgetauscht werden soll.

Austauschen kannst Du den Link dann im OriginalString mit StringReplace.

Grüße
Klaus

taktaky 11. Sep 2007 15:14

Re: Wort oder Satz in Memo finden und ersetzen
 
Zitat:

Zitat von Nils_13
Wenn du in einer Zeile zwei Mal den Suchbegriff stehen hast, dann haut Pos alleine nicht hin und du brauchst schon eine Rekursion. Das ist unnötig.

Deshalb: Pos + StringReplace.
Delphi-Quellcode:
for i := 0 to Memo1.Lines.Count-1 do
  if Pos(Suchbegriff, Memo1.Lines[i]) > 0 then
    StringReplace(Memo1.Lines[i], Suchbegriff, Ersetzbegriff, [rfReplaceAll]);
Mist zu spät....

Wenn der Link nicht bekannt ist, dann holt man ihn sich doch eh, dann funktioniert es wieder.

Hallo zusammen,

ich glaube Nils-Idee ist bis jetzt am besten :gruebel:

auf jeden Fall hier ist meine moemische Idee aber funktioniert :mrgreen:

Ich gleube, ich habe eine idee :gruebel:
ich habe den Text in Memo so verzerrt und vereinfacht und nun habe ich den Link in Falle :mrgreen:
http://members.lycos.co.uk/forforums...-ersetzen3.jpg

jetzt kann ich so versuchen
Delphi-Quellcode:
memo1.LoadFromFile('link.txt');// der Link wird von link.txt in memo1 gespeichert
Memo2.Lines[10]:=memo1.lines;
:mrgreen:

das Problem ist damit gelöst, möchte ich aber den Code kurzer machen ohne Umweg

ich habe b´versucht so :
Delphi-Quellcode:
Memo2.Lines[10]:=loadfromfile('link.txt'); //geht leider nicht, error
Memo2.line10.add(loadfromfile('link.txt')); // geht auch nicht
was ist Falsch?

Ich werde aber gerne Nils-Idee nehmen :mrgreen:
Delphi-Quellcode:
 _____        ___   __   _   _   _    _____ 
|  _  \     /   | |  \ | | | | / /  | ____| 
| | | |    / /| | |   \| | | |/ /   | |__   
| | | |   / / | | | |\   | | |\ \   |  __| 
| |_| |  / /  | | | | \  | | | \ \  | |___ 
|_____/ /_/   |_| |_|  \_| |_|  \_\ |_____|

Mackhack 11. Sep 2007 15:26

Re: Wort oder Satz in Memo finden und ersetzen
 
Hi,

du koenntest auch einen TReplaceDialog nehmen und auf die Form ziehen!

taktaky 11. Sep 2007 15:27

Re: Wort oder Satz in Memo finden und ersetzen
 
Es passiert aber nichts :cry:
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var i: integer;
blabla: string;
hallohallo: string;
begin
for i := 0 to Memo2.Lines.Count-1 do
  if Pos(blabla, Memo2.Lines[i]) > 0 then
    StringReplace(Memo2.Lines[i], blabla, hallohallo, [rfReplaceAll]);
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr.
Seite 1 von 3  1 23      

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