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 3 von 5     123 45      
Benutzerbild von Sir Rufo
Sir Rufo

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 09:39
Zitat von Nitron:
er kann es net compilieren er sagt mir das Count ein undefinierte Bezeichnung ist !
was soll ich da machen ?
... ist geändert ... jetzt geht es ...

Zitat von Nitron:
und muss dich die function einbinden ?? irgendwo oder macht das delphie automatisch ?
äh, ja ... aufrufen halt, dann wenn die aufgerufen werden soll ... als wenn ein button gedrückt wird ...
wenn die in der gleichen Unit wie die Form stehen, dann sind die sofort da, wenn die in eine eigene Unit gespeichert werden, dann diese Unit einbinden. Hängt also von Dir ab, wo du das hinschreibst.

Aber pack es doch einfach in die Unit von deiner Form

cu

Oliver
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
 
#22

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 10:14
ok das danke es funzt aber das problem ist jetzt das es sehr lange braucht ^^
bzw denke ich mal wenn er nichts findet dann hänngt sich das auf....
bei einer kleineren datei funzt es aber bei einer gräßeren schmiert er ab...
glaub ich eine schleife die nicht endet^^

aber mein problem ist immer noch das mit dem * es mus vor dem * was stehen alphanummerisch und eine leertaste sein
und er soll mir die zeile zeigen wo ein * ist was drin steht und eine leertaste davor z.b

far blablal u8* soll er mir nicht anzeigen
aber diesen satz soll er mir anzeigen blablabl u8* <--weil kein far drinner ist !

ich weiß nicht was man da machen kann !
wäre nett wenn ihr mir noch helfen könnt =)

mfg nitron
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
Nitron

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 10:16
muss auch nicht unbedingt mit edit arbeiten bzw mit edit feldern !



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;
    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;

  // Globale Variable oder Klassen-Variable deklarieren

  MyLastFindLine : integer;

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 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;

function SuchenInMemo( Memo : TMemo; FindenStr, NichtFindenStr : string; LastFindLine : integer = 0 ) : 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
      then
        if Pos( NichtFindenStr, Memo.Lines[ LineIdx ] ) = 0
        then
          begin
            Result := LineIdx;
            SelectLine( Memo, LineIdx );
          end;
          end;
    end;



procedure TFormDialog.Suche1Click(Sender: TObject);
begin



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


end;





procedure TFormDialog.WeiterSuchen1Click(Sender: TObject);
begin


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

end.



hier noch mal mein quellcode !
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 11:17
*auchcodeklau*
Delphi-Quellcode:
      if
        ( Pos( FindenStr, Memo.Lines[ LineIdx ] ) > 0 ) and
        ( Pos( NichtFindenStr, Memo.Lines[ LineIdx ] ) = 0 )
      then
das ist doch (fast) genau was diese Abfrage macht.
Nur sucht sie im gesamten String und nicht nur vorher.
Wenns unbedingt vorher sein soll musst du halt per copy bis pos(suchstring1) ausschneiden.

Du suchst nach "u8*"
nicht vorkommen soll "far"

Code:
Fall 1:
String= "far blablal u8*"
(Pos( "u8*", string) <> 0) = true
and
(Pos( "far", string) = 0 ) = false

durchlauf beendet;
Fall 2:
Code:
String= "blablal u8*"
(Pos( "u8*", string) <> 0) = true
string:= copy(string, 1, Pos( "u8*", string));
and
(Pos( "far", string) = 0 ) = true

markierung beginnt;
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
 
#25

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 11:30
Zitat von Nitron:
muss auch nicht unbedingt mit edit arbeiten bzw mit edit feldern !
dann nimm doch nicht die edit-felder und übergib die parameter direkt

hab mal deinen code geupdated

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;
    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;

  // Globale Variable oder Klassen-Variable deklarieren

  MyLastFindLine : integer;

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 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;

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;


procedure TFormDialog.Suche1Click(Sender: TObject);
begin


  // Wenn Du die Edit-Felder nicht willst, dann schreib es doch einfach da rein

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

  MyLastFindLine := SuchenInMemo( Memo1, '*', 'far' );

end;





procedure TFormDialog.WeiterSuchen1Click(Sender: TObject);
begin

  // Wenn Du die Edit-Felder nicht willst, dann schreib es doch einfach da rein

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

  MyLastFindLine := SuchenInMemo( Memo1, '*', 'far', MyLastFindLine )
end;

end.
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
 
#26

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 11:38
ja aber das problem ist das da auch stehen kann u9* nicht unbedingt u8

es kann alles mögliche sein vor dem * und es muss eine leertaste davor sein

so : irgendwas|leer|irgendwas*
so irgendwas irgendwas*

wenn z.b das * alleine steht oder so ****** ohne das was direkt davor steht will ich das nicht angezeigt haben !

habt ihr mich verstanden ? ^^
das ist sehr wichtig das dass so ist !
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 11:55
-.-
Also du willst quasi eine wildcard suche.
Das ist aber nicht ganz einfach weil eine wildcard nunmal für alles stehn kann.
Ein paar Einschränkungen wären ganz praktisch.

Wenn zum beispiel nur "u0".."u9" vor dem "*" stehn dürfte wär das relativ einfach zu lösen.
Aber "alles mögliche" ist verdammt viel.
narf - not a real function
  Mit Zitat antworten Zitat
Nitron

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 11:56
gibt es dafür kein befehl bzw code für alles mögliche?
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 12:04
Da brauchst du ja eigentlich keinen code für.
Du musst ja nur den "*" suchen und schaun ob er alleine steht oder das nächste zeichen auch ein "*" ist.
Dann findest du alles was "*" endet.
Du könntest auch Delimited text mit "*" als delimter aufrufen.
Dann hättest du eine stringlist in der in jeder zeile ein string steht der mit "*" endete.

Das Problem ist halt das da tatsächlich alles mögliche stehen kann.
Ich kann mir nicht vorstellen das das wirklich ist was du willst.

Oder wäre "lkjgfgkdsfhgkshrbtz afkgjbhertb*" ein erlaubter string?
narf - not a real function
  Mit Zitat antworten Zitat
Nitron

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 12:09
also beispiele was erlaubt ist ! (LABEL ist ein Bespiel)

Label * ->soll er mir anzeigen weil es hier kein FAR gibt !
also mache ich selber eine korektur im Programm
Far Label *
OK! Das soll er mir nicht mehr anzeigen da jetzt Far da ist !

Das gleiche gilt bei x* soll er mir anzeigen ich verbessere das selber
far x*
okay jetz springt er weiter

steht da jetzt dfghjkl* soll er mir das anzeigen weil far fehlt ich mache wieder eine korektur
far dfghjkl*

steht da
d * soll er mir das auch anzeigen ich mach korrektur
far d *

steh da aber jetzt

pa_p* soll er mir das auch anzeigen ich mach korrektur
far pa_p*

steht da aber jetzt /* dann soll er mir das net anzeigen oder }/* oder so.......
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 06:53 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