AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text im Memo-Feld ersetzen

Ein Thema von magoo2002de · begonnen am 17. Sep 2003 · letzter Beitrag vom 22. Sep 2003
Antwort Antwort
magoo2002de

Registriert seit: 26. Mär 2003
60 Beiträge
 
Delphi 2005 Personal
 
#1

Text im Memo-Feld ersetzen

  Alt 17. Sep 2003, 19:19
Hallo,
kann mir bitte einer erklären, wie ich folgende Sache am besten lösen kann:
Ich habe eine Memo-Feld, in dem ein beliebiger Text steht. Jetzt habe ich eine Datei in der Text im folgenden Format steht:

Code:
te1=Text1
te2=Text2
te3=Text3
Wie kann ich den Text im Memofeld nach den Zeichen vor dem Gleichheitszeichen (te1, te2, te3) durchsuchen und wenn der Text gefunden wurde durch den Text hinter dem Gleichheitszeichen (Text1, Text2, Text3) ersetzen?

Vielen Dank für eure Hilfe!
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#2

Re: Text im Memo-Feld ersetzen

  Alt 17. Sep 2003, 19:53
Also du sprichst wenn z.B. te1 in Text 1 geändert werden soll, gleich Line 0 an (teX ist Linie X-1) und änderst. Hierbei mal nach POS, Copy, Delete suchen.
Oder aber du suchst gleich nach ersetzen oder so was. Auc ein Blick in die OH kann nicht schaden
Alexander
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: Text im Memo-Feld ersetzen

  Alt 17. Sep 2003, 21:43
Hallo,

einfache Lösung:

Memo1.Text = StringReplace(Memo1.Text, 'te', 'Text', [rfReplaceAll, rfIgnoreCase]); Viele Grüße,

Delphianer
Lutz
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Text im Memo-Feld ersetzen

  Alt 17. Sep 2003, 22:42
Moin Magoo,

schau Dir auf jeden Fall auch mal die Eigenschaft Values von TStrings bzw. TStringList an. Für eine Datei mit dem Aufbau name=wert könnte das hilfreich sein.

Wenn Du nicht gerade zeilenübergreifend suchen musst, wäre es wahrscheinlich schneller das Memo mit alexanders Methode zu durchsuchen.
Die Eigenschaft Text sollte man möglichst nicht verwenden, da sie immer erst aus den Zeilen aufgebaut, bzw. wieder auf die Zeilen aufgeteilt wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
anku

Registriert seit: 13. Sep 2003
51 Beiträge
 
#5

Re: Text im Memo-Feld ersetzen

  Alt 18. Sep 2003, 01:11
vielleicht meinst du es so:

Delphi-Quellcode:

for i:=0 to Memo1.Lines.Count-1 do
Memo1.Lines[i]:= copy( Memo1.Lines[i], Pos( '=', Memo1.Lines[i])+1, Length( Memo1.Lines[i])-Pos( '=', Memo1.Lines[i])-1)+ copy( Memo1.Lines[i], Pos( '=', Memo1.Lines[i]), Length( Memo1.Lines[i])-Pos( '=', Memo1.Lines[i]));
das sieht nun erstmal wüst aus.. mit hilfe vom debugger und der delphi hilfe sollte es aber verständlich sein. ansonsten frag nach

mfg

Edit:

das sieht echt krass aus.. mal ein bissel aufdröseln, zum verständnis..
Delphi-Quellcode:
var StringNachDemGleich, StringAbDemGleich: String;
    i: Integer;
for i:=0 to Memo1.Lines.Count-1 do
begin
   StringNachDemGleich:= copy( Memo1.Lines[i], Pos( '=', Memo1.Lines[i])+1, Length( Memo1.Lines[i])-Pos( '=', Memo1.Lines[i])-1);
   StringAbDemGleich:= copy( Memo1.Lines[i], Pos( '=', Memo1.Lines[i]), Length( Memo1.Lines[i])-Pos( '=', Memo1.Lines[i]));
  Memo1.Lines[i]:= StringNachDemGleich+StringAbDemGleich;
end;
  Mit Zitat antworten Zitat
magoo2002de

Registriert seit: 26. Mär 2003
60 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Text im Memo-Feld ersetzen

  Alt 18. Sep 2003, 22:56
WOW, Vielen Dank für eure Hilfe.
Ich werde es gleich mal ausprobieren...
  Mit Zitat antworten Zitat
magoo2002de

Registriert seit: 26. Mär 2003
60 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Text im Memo-Feld ersetzen

  Alt 22. Sep 2003, 16:07
Also mit diesem copy und Pos und so komme ich einfach nicht klar...

Wie bekomme ich denn den Text vor dem Gleichheitszeichen heraus? Mit der Lösung von anku bekomme Text1 und =Text1 heraus. Ich möchte aber das te1 und Text1 heraus kommt.

Es wäre echt nett wenn mir das einer posten könnte.

@anku: Trotzdem vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#8

Re: Text im Memo-Feld ersetzen

  Alt 22. Sep 2003, 16:11
Versuche mal:

Delphi-Quellcode:
with Memo1.Lines do
  for I := 0 to Pred(Count) do
  begin
    ShowMessage('Teil 1: ' + Names[I]);
    ShowMessage('Teil 2: ' + Values[Names[I]]);
  end;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
magoo2002de

Registriert seit: 26. Mär 2003
60 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Text im Memo-Feld ersetzen

  Alt 22. Sep 2003, 17:34
@ sakura:
Super, so funktioniert es wunderbar. Genauso wollte ich es haben. Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#10

Re: Text im Memo-Feld ersetzen

  Alt 22. Sep 2003, 17:44
Wenn man weiß was Du willst Kein Problem, ich habe doch gerne geholfen Übrigens, diese Lösung solltest Du nur für recht "kleine" Listen mit z.B. weniger als 1000 Einträgen nutzen, damit es performant bleibt. Dann aber ist die genau richtig.

Hinweis: Der Teil vor dem "=" ist case-insensitive.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz