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 4 von 5   « Erste     234 5      
Nitron

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 12:33
Oder wäre "lkjgfgkdsfhgkshrbtz afkgjbhertb*" ein erlaubter string?[/quote]


soll er mir nicht anzeigen da vor afkgjbhertb* noch ein wort ist !
würde alleine stehen etwa so
afkgjbhertb* dann soll er mir das anzeigen !
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 12:39
na dann...

mit pos:
Delphi-Quellcode:
function SuchenInMemo( Memo : TMemo; NichtFindenStr : string; LastFindLine : integer = -1 ) : integer;
var
  LineIdx : integer;
  str: string;
  p: integer;
begin
  LineIdx := LastFindLine + 1;
  Result := 0;
  while
    ( LineIdx < Memo.Lines.Count ) and
    ( Result = 0 )
  do
    begin
      str:= Memo.Lines[LineIdx];
      p:= Pos( '*', str);// '*' finden;
      if
        (p > 0 ) and // '*' gefunden?
        (Pos( NichtFindenStr, str ) = 0 ) and // NichtFindStr nicht gefunden?
        (str[p+1] <> '*') and//'*' steht alleine?
        (pos(' ', str) > 1)// kein leerzeichen nach dem ersten zeichen
      then
        begin
          Result := LineIdx;
          SelectLine( Memo, LineIdx );
        end
      else
        Inc( LineIdx );
    end;
end;
mit delimitedtext (find ich schöner^^)
Delphi-Quellcode:
function SuchenInMemo( Memo : TMemo; NichtFindenStr : string; LastFindLine : integer = -1 ) : integer;
var
  LineIdx : integer;
  i: integer;
  strlst: TStringList;
  p: integer;
begin
  strlst:= TStringList.Create;
  strlst.delimiter:= '*';
  strlst.strictdelimiter:= true;
  LineIdx := LastFindLine + 1;
  Result := 0;
  while
    ( LineIdx < Memo.Lines.Count ) and
    ( Result = 0 )
  do begin
    if pos('*', Memo.Lines[LineIdx]) = 0 then
      inc(LineIdx);
      continue; //wenn kein '*' gefunden: nächster schleifendurchlauf;
    end;
    strlst.delimitedtext:= Memo.Lines[LineIdx]; // alle '*' finden;
                                               //jede zeile der strlst ist das was im memo vor einem '*' steht;
    case strlst.count of
      1: begin //ein '*' gefunden
        if pos(NichtFindenStr, strlst[0]) = 0 then begin //nichtfindstr suchen
          if pos(' ',strlst[0]) > 1 then begin //kein leerzeichen nach dem ersten zeichen
            Result := LineIdx;
            SelectLine( Memo, LineIdx );
          end;
        end;
      end;
      else begin
        if strlst[1] <> 'then begin // abragen ob '*' alleine stand
                                      // mehrere '**' sollte leerzeilen erzeugen *hoff*^^
          Result := LineIdx;
          SelectLine( Memo, LineIdx );
      end;
    end;
    Inc( LineIdx );
  end;
end;
Das sollte erstmal alles finden.
Für ausnahmen musst du dir wohl einen array von strings machen die nicht vor '*' stehen dürfen.
narf - not a real function
  Mit Zitat antworten Zitat
Nitron

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 12:48
dankeschön aber einige fehler gefunden er sagt mir bei

p: pos;

das was nicht stimmt und zwar : ,(, erwartet aber ,;, gefunden
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 12:49
ups^^, p: integer hätte das heissen sollen

Der code ist übrigens nicht getestet weil ich grad garkein Delphi da hab.

Benutzung also auf eigene Gefahr
narf - not a real function
  Mit Zitat antworten Zitat
Nitron

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 12:58
hier sagt er mir das ich ein simikolon vergessen habe aber das kann nicht sein

(str[p+1] <> '*')//'*' steht alleine?
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 13:00
(str[p+1] <> '*') AND//'*' steht alleine?

muss da hin
narf - not a real function
  Mit Zitat antworten Zitat
Nitron

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 13:06
okay lässt sich nicht ausführen wegen dem hier

Delphi-Quellcode:
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;

muss ich da die quellen ändern ?
die edit´s müssen weg oder?
da wir jetzt direkt ansprechen oder?
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 13:16
hap
ich hab als Suchstring jetzt permanent '*' angenommen, der wird also nicht mehr übergeben.
MyLastFindLine := SuchenInMemo( Memo1, Edit2.Text, MyLastFindLine ) müsste also reichen
narf - not a real function
  Mit Zitat antworten Zitat
Nitron

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 13:25
wollte mich mal bedanke für die hilfe !

jetzt ist aber das problem immer noch da das wenn was findet mit *
z.b hier ein bespiel:

void REPSLCT(func_return_t* rep_select)
findet

eine bedienung soll ja sein das nix davor stehen darf !
also wenn das steht
func_return_t* dann soll er mir das anzeigen aber nich wenn davor was steht

und manchmal bleibt er bei einem stehen !

zb ich click auf weiter suche und er zeigt mir das zb an
void REPSLCT(func_return_t* rep_select)
und geht nicht weiter !

quell code nochmal

Delphi-Quellcode:
procedure TFormDialog.Suche1Click(Sender: TObject);
begin



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


end;





procedure TFormDialog.WeiterSuchen1Click(Sender: TObject);
begin


  MyLastFindLine := SuchenInMemo( Memo1, Edit2.Text, MyLastFindLine )
end;
Mim Kopf durch die Wand ^^
  Mit Zitat antworten Zitat
HenKst

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

Re: Komplizierte suche in Memo ! Hilfe

  Alt 21. Nov 2008, 13:48
Zitat von Nitron:
wollte mich mal bedanke für die hilfe !

jetzt ist aber das problem immer noch da das wenn was findet mit *
z.b hier ein bespiel:

void REPSLCT(func_return_t* rep_select)
findet

eine bedienung soll ja sein das nix davor stehen darf !
also wenn das steht
func_return_t* dann soll er mir das anzeigen aber nich wenn davor was steht
wie gesagt, für solche ausnahmen musst du dir nen array bauen
in dem fall wäre das mit if (pos('/', str) > 0) and (pos('/', str) < pos('*', str)) vermutlich gelöst, aber es gibt bestimmt noch mehr solcher fälle

also bauen wir uns ne funktion

Delphi-Quellcode:
function AusnahmenFinden(arr: array of string; value: string): boolean;
var
  i: integer;
begin
  result:= false;
  for i:= 0 to high(arr) do begin
    if pos(arr[i], value) <> 0 then begin
      result:= true;
      exit;
    end;
  end;
end;
der übergibst du deinen ausnahmen array und die memozeile
und dann baust du sie in die if abfrage ein
Delphi-Quellcode:
      if
        (p > 0 ) and // '*' gefunden?
        (Pos( NichtFindenStr, str ) = 0 ) and // NichtFindStr nicht gefunden?
        (str[p+1] <> '*') and//'*' steht alleine?
        (pos(' ', str) > 1) and// kein leerzeichen nach dem ersten zeichen
        (not AusnahmenFinden(Ausnahmenarray, str))
      then
Zitat von Nitron:


und manchmal bleibt er bei einem stehen !

zb ich click auf weiter suche und er zeigt mir das zb an
void REPSLCT(func_return_t* rep_select)
und geht nicht weiter !
ist das vielleicht die letzte zeile in der sowas steht?
narf - not a real function
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 20:29 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