AGB  ·  Datenschutz  ·  Impressum  







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

Suchen und ersetzen

Ein Thema von Olle88 · begonnen am 16. Feb 2011 · letzter Beitrag vom 17. Feb 2011
Antwort Antwort
Olle88

Registriert seit: 16. Feb 2011
1 Beiträge
 
#1

Suchen und ersetzen

  Alt 16. Feb 2011, 20:39
Hi,

ich versuche gerade nach einer gefühlten Ewigkeit wieder was mit Delphi zu programmieren und merke, dass ich mit vielen Sachen nicht mehr klar komme und weder die Hilfe noch google mir helfen will

In meinem Prog möchte ich einen Text nach bestimmten evtl. mehrzeiligen Zeichenfolgen durchsuchen und diese dann durch andere Zeichenfolgen ersetzen, wobei der alte Text erhalten bleiben soll und zusätzlich der neue Text angezeigt wird.

Dazu hab ich mir zunächst gedacht, ich kopier den Text in Memobox1, gebe das zu suchende in Memobox2 und das wodurch ersetzt werden soll in Memobox3.
Dann speicher ich den Inhalt von Memobox1 in ner Variable (da weiß ich schon nicht was fürn typ die Variable sein muss, kann die ein einfacher string sein?) und durchsuch die dann nach dem Inhalt von Memobox2.
Zum durchsuchen ist mir bisher aber auch nur ne schleife eingefallen, die bei jedem Zeichen prüft, ob das Zeichen und die folgenden mit dem Inhalt der Memobox2 übereinstimmt. Dabei frag ich mich, ob das denn überhaupt mit den Zeilenumbrüchen funktionieren würde, oder obs da schon scheitert.
Am Ende wirds dann in Memobox3 ausgegeben.
Das ganze kommt mir aber sehr umständlich vor, da gibts doch sicher was eleganteres, oder?

Danke schonmal für eure Hilfe!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Suchen und ersetzen

  Alt 16. Feb 2011, 21:57
Ein einfacher String macht sich zum Erstetzen wohl am Besten.

Ansonsten Delphi-Referenz durchsuchenPos, bzw. Delphi-Referenz durchsuchenPosEx (suchen), Delphi-Referenz durchsuchenDelete (Altes löschen) und Delphi-Referenz durchsuchenInsert (Neues einfügen),
oder einfach nur Delphi-Referenz durchsuchenStringReplace.

Oder sogar direkt im Memo (das ist aber eher langsam), über Pos/PosEx, Delphi-Referenz durchsuchenTMemo.SelStart, Delphi-Referenz durchsuchenTMemo.SelLength und Delphi-Referenz durchsuchenTMemo.SelText.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (16. Feb 2011 um 22:00 Uhr)
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#3

AW: Suchen und ersetzen

  Alt 17. Feb 2011, 00:02
Du kannst es aber auch mit der Funktion StringReplace machen. Hier ein Ansatz..darauf kannst du aufbauen:

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Original: TMemo;
    Neu: TMemo;
    Suchen: TEdit;
    Ersetzen: TEdit;
    Start: TButton;
    Start2: TButton;
    procedure StartClick(Sender: TObject);
    procedure Start2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

//Suchen & Ersetzen - Line-By-Line
procedure TForm2.StartClick(Sender: TObject);
var
  CopyText: TStringList;
  i: Integer;
begin
  CopyText:=TStringList.Create;
  try
    CopyText.Text:=Original.Text;
    for i:=0 to CopyText.Count-1 do
    if Pos(Suchen.Text,CopyText.Strings[i])>0 then
      CopyText.Strings[i]:=StringReplace(CopyText.Strings[i], Suchen.Text, Ersetzen.Text,[rfReplaceAll, rfIgnoreCase]);
    Neu.Text:=CopyText.Text;
  finally
    CopyText.Free;
  end;
end;

//Suchen & Ersetzen - Gesamt Text
procedure TForm2.Start2Click(Sender: TObject);
var
  CopyText: TStringList;
begin
  CopyText:=TStringList.Create;
  try
    CopyText.Text:=Original.Text;
    CopyText.Text:=StringReplace(CopyText.Text, Suchen.Text, Ersetzen.Text,[rfReplaceAll, rfIgnoreCase]);
    Neu.Text:=CopyText.Text;
  finally
    CopyText.Free;
  end;
end;

end.

Geändert von -187- (17. Feb 2011 um 00:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Suchen und ersetzen

  Alt 17. Feb 2011, 00:06
Ist der Helm kaputt oder warum nur in Code-Tags gesetzt?
EDIT: ahhh Selbstheilung
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Suchen und ersetzen

  Alt 17. Feb 2011, 00:17
Mein letzter Edit war 5 nach 12 Dein Post kam 6 nach
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Suchen und ersetzen

  Alt 17. Feb 2011, 00:19
Mein letzter Edit war 5 nach 12 Dein Post kam 6 nach
jepp als ich es getippt und abgeschickt hatte, war es schon korrigiert, darum mein EDIT hinterher
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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:09 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