AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi teil suchen aber ganzen satz ersetzen [PLS Hilfe]
Thema durchsuchen
Ansicht
Themen-Optionen

teil suchen aber ganzen satz ersetzen [PLS Hilfe]

Ein Thema von 0NyX · begonnen am 13. Aug 2007 · letzter Beitrag vom 14. Aug 2007
Antwort Antwort
Benutzerbild von 0NyX
0NyX

Registriert seit: 13. Aug 2007
67 Beiträge
 
#1

teil suchen aber ganzen satz ersetzen [PLS Hilfe]

  Alt 13. Aug 2007, 12:39
Guten tag liebe DP User,

ich arbeite zur Zeit an einem eigl. kleinen tool für einen Freund.
Ich habe nun das meiste schon fertig, jedoch komme ich gerade nicht weiter.
Also bei dem "Tool" handelt es sich um einen kleinen Text-Editor.

Der Texteditor soll nun nach einer Stelle im text suchen (diese stelle sollte der nutzer selbst defienieren können) und dann soll aber der ganze Satz und nicht nur die eine gesuchte Stelle eretzt werden.
Leider habe ich keine Ahnung wie man so was macht
Über Hilfe würde ich mich echt freuen, vielen Dank im voraus!

Hier mein bisheriger Code:
Delphi-Quellcode:
unit text2;

interface

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

type
  TForm1 = class(TForm)
    MainMenu: TMainMenu;
    Datei1: TMenuItem;
    Aoeffnen: TMenuItem;
    Speichern1: TMenuItem;
    Schlieen1: TMenuItem;
    StatusBar: TStatusBar;
    RichEdit: TRichEdit;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    Neu1: TMenuItem;
    Ersetzen1: TMenuItem;
    Zeile7durchtest21: TMenuItem;
    RichEdit2: TRichEdit;
    BestimmtenSatzersetzen1: TMenuItem;
    Satzfindenundersetzen1: TMenuItem;
    Hier_wird_der_Text_angezeigt_welcher_zum_ersetzen_dient: TStaticText;
    search: TEdit;
    Suche: TLabel;
    procedure Schlieen1Click(Sender: TObject);
    procedure AoeffnenClick(Sender: TObject);
    procedure Speichern1Click(Sender: TObject);
    procedure Neu1Click(Sender: TObject);
    procedure Zeile7durchtest21Click(Sender: TObject);
    procedure BestimmtenSatzersetzen1Click(Sender: TObject);
    procedure neuestring1Click(Sender: TObject);
    procedure Satzfindenundersetzen1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Schlieen1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.AoeffnenClick(Sender: TObject);
begin
  If Opendialog.Execute then
  begin
    if FileExists(OpenDialog.Filename) then
    begin
      Richedit.Lines.LoadfromFile(OpenDialog.Filename);
    end;
  end;

end;

procedure TForm1.Speichern1Click(Sender: TObject);
begin
if SaveDialog.Execute then
      begin
      Richedit.Lines.SavetoFile(SaveDialog.Filename);
    end;
  end;


procedure TForm1.Neu1Click(Sender: TObject);
begin
Richedit.Lines.Clear;
end;

procedure TForm1.Zeile7durchtest21Click(Sender: TObject);
begin
  OpenDialog.Execute;
  Richedit2.Lines.LoadfromFile(OpenDialog.Filename);
  RichEdit.Lines.Strings[6]:= Richedit2.Lines.Text;
end;

procedure TForm1.BestimmtenSatzersetzen1Click(Sender: TObject);
begin
  OpenDialog.Execute;
  Richedit2.Lines.LoadfromFile(OpenDialog.Filename);
  RichEdit.Text := StringReplace(RichEdit.Text, 'Das Linzer Volksblatt berichtete Anfang Jänner 1894:', Richedit2.Lines.Text, [rfReplaceAll, rfIgnoreCase]);
end;

procedure TForm1.neuestring1Click(Sender: TObject);
begin

end;

procedure TForm1.Satzfindenundersetzen1Click(Sender: TObject);
begin

end;

end.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: teil suchen aber ganzen satz ersetzen

  Alt 13. Aug 2007, 12:47
Vorgehensweise:
1. mit Pos die Stelle suchen
2. das letzte und das nächste Satzschlusszeichen suchen (letzteres mit Posex; für das letzte kannst du eine eigene Routine schreiben)
3. den Satz ersetzen

Falls du etwas ganz anderes gemeint hast, solltest du die Aufgabe genauer beschreiben.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von 0NyX
0NyX

Registriert seit: 13. Aug 2007
67 Beiträge
 
#3

Re: teil suchen aber ganzen satz ersetzen

  Alt 13. Aug 2007, 13:04
Zitat von Apollonius:
Vorgehensweise:
1. mit Pos die Stelle suchen
2. das letzte und das nächste Satzschlusszeichen suchen (letzteres mit Posex; für das letzte kannst du eine eigene Routine schreiben)
3. den Satz ersetzen

Falls du etwas ganz anderes gemeint hast, solltest du die Aufgabe genauer beschreiben.
Vielen Dank für deine schnelle Antwort!
Ich glaube jedoch das es mit "Pos" nicht möglich ist, da der Nutzer selber den Text eingeben soll nach dem gesucht werden soll.

Bsp.:
Der Satz lautet:

"Das Wetter ist gut"

Der Nutzer sucht nach "Wetter" und dann wird automatisch der ganze Satz "Das Wetter ist gut" ersetzt.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: teil suchen aber ganzen satz ersetzen

  Alt 13. Aug 2007, 13:09
Zitat von 0NyX:
Ich glaube jedoch das es mit "Pos" nicht möglich ist, da der Nutzer selber den Text eingeben soll nach dem gesucht werden soll.
Hi,
worin siehst Du dort denn genau das Problem? Pos bekommt zwei Argumente übergeben, den String s1 nach dem gesucht wird und den String s2, indem gesucht wird. Die Rückgabe von Pos zeigt Dir die Stelle, wo das Wort zum ersten mal vorkommt, ist dabei < 1, wenn s1 nicht in s2 vorkommt.
Die Namen s1 und s2 sind dabei beliebig gewählt, Du kannst hier statische Strings wie 'Hallo' einsetzen, oder auch Variablen wie EditEingabe.Text verwenden.

Gruß Der Unwissende

[add]
Da gerade erst gesehen, erstmal Herzlich Willkommen in der Delphi-Praxi
[/add]
  Mit Zitat antworten Zitat
Benutzerbild von 0NyX
0NyX

Registriert seit: 13. Aug 2007
67 Beiträge
 
#5

Re: teil suchen aber ganzen satz ersetzen

  Alt 13. Aug 2007, 13:26
Zitat von Der_Unwissende:
Zitat von 0NyX:
Ich glaube jedoch das es mit "Pos" nicht möglich ist, da der Nutzer selber den Text eingeben soll nach dem gesucht werden soll.
Hi,
worin siehst Du dort denn genau das Problem? Pos bekommt zwei Argumente übergeben, den String s1 nach dem gesucht wird und den String s2, indem gesucht wird. Die Rückgabe von Pos zeigt Dir die Stelle, wo das Wort zum ersten mal vorkommt, ist dabei < 1, wenn s1 nicht in s2 vorkommt.
Die Namen s1 und s2 sind dabei beliebig gewählt, Du kannst hier statische Strings wie 'Hallo' einsetzen, oder auch Variablen wie EditEingabe.Text verwenden.

Gruß Der Unwissende

[add]
Da gerade erst gesehen, erstmal Herzlich Willkommen in der Delphi-Praxi
[/add]
Vielen Dank für das Herzliche Willkommen

Da ich auch erst seit ca. 4 Tagen mit Delphi arbeite (vorher habe ich nur WebProgramierung gemacht PHP und JavaScript) habe ich nicht sooo die Ahnung von der Delphi Programmirung.
Ich habe mich grade mal etwas schlau gemacht aber leider nicht wirklich was brauchbares gefunden.
Danke euch aber für eure Hilfe.
Ich werde mir gleich noch mal die Grundlegenden dinge durlesen, vllt werde ich daraus was schlauer
  Mit Zitat antworten Zitat
Benutzerbild von 0NyX
0NyX

Registriert seit: 13. Aug 2007
67 Beiträge
 
#6

Re: teil suchen aber ganzen satz ersetzen

  Alt 14. Aug 2007, 10:03
So ich habe das nun so gemacht:

Delphi-Quellcode:
procedure TForm1.suchenClick(Sender: TObject);
begin

  OpenDialog.Execute;
  Richedit2.Lines.LoadfromFile(OpenDialog.Filename);
  RichEdit.Text := StringReplace(RichEdit.Text, search.Text, Richedit2.Lines.Text, [rfReplaceAll, rfIgnoreCase]);

end;
Nur leider ersetzt der bisher nur das, was ich auch in der suche eingebe (was ja auch logisch ist...), jedoch soll er den Kompletten Satz überschreiben.
Könnte mir jemand sagen wie ich dieses mache?

Vielen Dank im vorraus!
  Mit Zitat antworten Zitat
HLukas

Registriert seit: 27. Nov 2006
Ort: Frickenhausen
14 Beiträge
 
Delphi 6 Professional
 
#7

Re: teil suchen aber ganzen satz ersetzen [PLS Hilfe]

  Alt 14. Aug 2007, 10:23
Die Antwort/Vorgehensweise von Apollonius ist richtig, muß aber
ergänzt werden.
(a) Zeilenumbrüche und Wortumbrüche müssen berücksichtigt werden!
(b) Mehrmaliges Vorkommen des gesuchten Wortes muss berücksichtigt werden.
Lösung: Alle Sätze zeilenweise in eine Stringlist schreiben, dabei
die Wortumbruchzeichen (z.B. Bindestrich) entfernen.
Dann nach dem Verfahren von Apollonius die Sätze nacheinander durchsuchen.
Kommt ein Wort mehrmals vor, sind die Sätze dem Nutzer zur Auswahl anzuzeigen.
  Mit Zitat antworten Zitat
Benutzerbild von 0NyX
0NyX

Registriert seit: 13. Aug 2007
67 Beiträge
 
#8

Re: teil suchen aber ganzen satz ersetzen [PLS Hilfe]

  Alt 14. Aug 2007, 10:35
Hört sich ja alles sehr einfach an, nur ich habe grade keine Ahnung wie ich es machen sollte. :-[


zu A: Ich habe WordWarp auf false gestellt in dem RichEdit Feld, damit der nicht nach einer bestimmten Anzahl an Zeichen in eine neue Zeile springt.

Zu B: Wie kann man dieses machen :-[

(Ich bin absuluter neuling in der Delphi Programmirung... )

Danke aber für die schnelle Antwort!
  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 14:40 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