AGB  ·  Datenschutz  ·  Impressum  







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

Komplizierte suche in Memo ! Hilfe

Offene Frage von "Nitron"
Ein Thema von Nitron · begonnen am 18. Nov 2008 · letzter Beitrag vom 21. Nov 2008
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#11

Re: Komplizierte suche in Memo ! Hilfe

  Alt 18. Nov 2008, 13:48
huch
da fehlen die ) bei den pos

Kommt davon wenn man blind kopiert^^

Delphi-Quellcode:
for i:= 0 to memo1.lines.count-1 do begin
  if pos(edit1.text, memo1.lines[i]) <> 0 then begin
    if pos(edit2.text, memo1.lines[i]) <> 0 then begin
      find = false;
    end else begin
      find = true;
    end;
   end else begin
     find:= false;
  end;
end;
so müsste es aussehn
narf - not a real function
  Mit Zitat antworten Zitat
Nitron

Registriert seit: 4. Nov 2008
25 Beiträge
 
#12

Re: Komplizierte suche in Memo ! Hilfe

  Alt 18. Nov 2008, 13:57
hab ich auch gerade bemerkt danke aber er führt das jetzt nicht aus makiert mir das nicht mehr !
und ich weiß nicht was ich für irgendwas eingeben soll !

weil im text steht z.b u8* oder u9* in edit1 muss ich was eingeben für irgendwas*
und in edit2 far aber das funzt net !
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
Nitron

Registriert seit: 4. Nov 2008
25 Beiträge
 
#13

Re: Komplizierte suche in Memo ! Hilfe

  Alt 18. Nov 2008, 14:07
Zitat von alzaimar:
Hups, hab ich nicht geschaut:
Delphi-Quellcode:
For i:=0 to Memo1.lines.count - 1 do
  If Pos(DerEineSuchtext, Memo1.Lines[i]) = 0 Then // wenn der eine Suchtext in der Zeile nicht vorhanden ist
     Memo1.Lines[i] := StringReplace (Memo1.Lines[i], Suchtext, ErsetzungsText,...);

habe das jetzt so
Delphi-Quellcode:
begin
For i:=0 to Memo1.lines.count - 1 do
  If Pos(edit1.text, Memo1.Lines[i]) = 0 Then // wenn der eine Suchtext in der Zeile nicht vorhanden ist
     Memo1.Lines[i] := StringReplace (Memo1.Lines[i], edit2.text, edit3.text);
er sagt mir aber das ich ungenügende parameter habe !
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#14

Re: Komplizierte suche in Memo ! Hilfe

  Alt 18. Nov 2008, 14:13
da fehlt ein [rfReplaceall] oder etwas in der art am ende des stringreplace.
Aber das markiert dir immernoch nicht deine zeile

Momentan fällt mir da nichts ein ausser SelStart auf die summe Längen aller zeilen bis zur gefundenen zu setzen und SelLength auf die Länge der dieser Zeile...
Und das auch nur wenn ich SelStart richtig verstanden hab^^

Delphi-Quellcode:

procedure SelectLine (Memo: TMemo; index: integer);
var
  i: integer;
  start: integer;
begin
  start:= 0;
  for i:= 0 to index -1 do begin
    start:= start + length(Memo.Lines[i];
  end;
  Memo.SelStart:= start;
  Memo.SelLength:= length(Memo.lines[index]);
end;

procedure FindLine (memo: TMemo; suchtext1, suchtext2: string);
var
  i: integer;
begin
for i:= 0 to memo.lines.count-1 do begin
  if pos(suchtext1, memo.lines[i]) <> 0 then begin
    if pos(suchtext2, memo.lines[i]) <> 0 then begin
      find = false;
    end else begin
      find = true;
      SelectLine(memo, i);
      break;
    end;
   end else begin
     find:= false;
  end;
end;
Das sollte dir eine gesuchte Zeile markieren
Ist aber nicht getestet^^
narf - not a real function
  Mit Zitat antworten Zitat
Nitron

Registriert seit: 4. Nov 2008
25 Beiträge
 
#15

Re: Komplizierte suche in Memo ! Hilfe

  Alt 18. Nov 2008, 15:21
kann das vielleicht einer amchen und hochladen ?

ich sitze hier schon 9stunden dran und habe es immer noch nicht !
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
Nitron

Registriert seit: 4. Nov 2008
25 Beiträge
 
#16

Re: Komplizierte suche in Memo ! Hilfe

  Alt 18. Nov 2008, 15:40
Delphi-Quellcode:
unit Dialog_u; { Projekt DIALOG * Herwig Reidlinger }

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Menus, StdCtrls;

type
  TFormDialog = class(TForm)
    Memo1: TMemo;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    MainMenu: TMainMenu;
    Menu_Datei: TMenuItem;
    MenuLaden: TMenuItem;
    MenuSpeichern: TMenuItem;
    N1: TMenuItem;
    MenuBeenden: TMenuItem;
    Suche1: TMenuItem;
    WeiterSuchen1: TMenuItem;
    Edit1: TEdit;
    Edit2: TEdit;
    N2: TMenuItem;
    selectline1: TMenuItem;
    CheckBox1: TCheckBox;
    procedure MenuLadenClick(Sender: TObject);
    procedure MenuSpeichernClick(Sender: TObject);
    procedure MenuBeendenClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Suche1Click(Sender: TObject);
    procedure WeiterSuchen1Click(Sender: TObject);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FormDialog: TFormDialog;
  x: Integer;
  find: Boolean = False;

implementation

{$R *.DFM}

procedure TFormDialog.MenuLadenClick(Sender: TObject);
begin
  if OpenDialog.Execute then
     TRY
        Memo1.Lines.Loadfromfile(OpenDialog.Filename);
     EXCEPT
        ShowMessage ('Fehler beim Laden der Datei!');
     END;
end;

procedure TFormDialog.MenuSpeichernClick(Sender: TObject);
begin
  if SaveDialog.Execute then
     TRY
        Memo1.Lines.SavetoFile(SaveDialog.Filename);
     EXCEPT
        ShowMessage ('Fehler beim Speichern der Datei!');
     END;
end;

procedure TFormDialog.MenuBeendenClick(Sender: TObject);
begin
   FormDialog.Close;
end;

procedure TFormDialog.FormResize(Sender: TObject);
begin
   Memo1.width := FormDialog.clientwidth;
   Memo1.height := FormDialog.clientheight;
end;


procedure TFormDialog.Suche1Click(Sender: TObject);

begin
//
end;





procedure TFormDialog.WeiterSuchen1Click(Sender: TObject);
begin
//
end;

end.



muss jetzt nur noch die schleife rein kann mir da einer helfen ?
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#17

Re: Komplizierte suche in Memo ! Hilfe

  Alt 19. Nov 2008, 12:59
Hast du meinen code überhaupt mal getestet?

Ich hab grad ein mini Program damit geschrieben und das funktioniert soweit.
Sind zwar ein paar fehler drin, zum beispiel ist die selection ein paar character daneben weil am ende jeder zeile noch ein $0D0A steht das bei length() ignoriert wird, aber in seltext steht was drin und es wird auch die richtige Zeile gefunden.

SelStart und SelLength zu setzen scheint aber nicht auszureichen um eine selection auf dem bildschirm anzuzeigen.
Das scheint Teil der windowsapi zu sein-.-
Da schau ich nochmal nach aber vielleicht findest du ja selbst was.

€dit
ein einfach SetFocus scheint zu reichen um die selection zu markieren^^
Delphi-Quellcode:
procedure SelectLine (Memo: TMemo; index: integer);
var
  i: integer;
  start, fin: integer;

begin
  start:= 0;
  fin:= length(Memo.lines[index]);
  for i:= 0 to index -1 do begin
    start:= start + length(Memo.Lines[i]) + 2;
  end;
  memo.SetFocus;
  Memo.SelStart:= start;
  Memo.SelLength:= fin;
  ShowMessage(memo.SelText);
end;
GreeZ HenKst
narf - not a real function
  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
 
#18

Re: Komplizierte suche in Memo ! Hilfe

  Alt 19. Nov 2008, 14:14
Also entweder bin ich oder ihr habt jetzt den Nitron gemacht.

Ich dachte, der möchte in einem Memo-Feld etwas suchen ... da frage ich mich, warum ihr dem sagt, er soll mit StringReplace was machen, und vor allem das Ergebnis von StringReplace wieder in das Memo schreiben

Also die Funktion klaue ich einfachmal
Delphi-Quellcode:
procedure SelectLine (Memo: TMemo; index: integer);
var
  i: integer;
  start, fin: integer;

begin
  start:= 0;
  fin:= length(Memo.lines[index]);
  for i:= 0 to index -1 do begin
    start:= start + length(Memo.Lines[i]) + 2;
  end;
  memo.SetFocus;
  Memo.SelStart:= start;
  Memo.SelLength:= fin;
  // ShowMessage(memo.SelText);
end;
Delphi-Quellcode:
function SuchenInMemo( Memo : TMemo; FindenStr, NichtFindenStr : string; LastFindLine : integer = -1 ) : integer;
var
  LineIdx : integer;
begin
  LineIdx := LastFindLine + 1;
  Result := 0;
  while
    ( LineIdx < Memo.Lines.Count ) and
    ( Result = 0 )
  do
    begin
      if
        ( Pos( FindenStr, Memo.Lines[ LineIdx ] ) > 0 ) and
        ( Pos( NichtFindenStr, Memo.Lines[ LineIdx ] ) = 0 )
      then
        begin
          Result := LineIdx;
          SelectLine( Memo, LineIdx );
        end
      else
        Inc( LineIdx );
    end;
end;
Im Programm rufst du das so auf:
Delphi-Quellcode:
// Globale Variable oder Klassen-Variable deklarieren
var
  MyLastFindLine : integer;

// beim Klick auf den Suchen-Button diesen Code

  MyLastFindLine := SuchenInMemo( Memo1, Edit1.Text, Edit2.Text );

// Beim Klick auf Weitersuchen diesen Code

  MyLastFindLine := SuchenInMemo( Memo1, Edit1.Text, Edit2.Text, MyLastFindLine );
cu

Oliver

[edit]der fehler ist nun behoben[/edit]
[edit2]jetzt tut die function genau das was sie soll [/edit2]
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
Nitron

Registriert seit: 4. Nov 2008
25 Beiträge
 
#19

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 09:13
ok ich war die woche nicht da muss mich jetzt wieder dran setzen danke ich werde posten wenn ich schwierigkeit habe !
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
Nitron

Registriert seit: 4. Nov 2008
25 Beiträge
 
#20

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 09:25
er kann es net compilieren er sagt mir das Count ein undefinierte Bezeichnung ist !
was soll ich da machen ?

und muss dich die function einbinden ?? irgendwo oder macht das delphie automatisch ?
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 12:52 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