AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Suche in einer Memo die Gruppe, in der mein Cursor ist
Thema durchsuchen
Ansicht
Themen-Optionen

Suche in einer Memo die Gruppe, in der mein Cursor ist

Ein Thema von torud · begonnen am 4. Apr 2006 · letzter Beitrag vom 4. Apr 2006
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Suche in einer Memo die Gruppe, in der mein Cursor ist

  Alt 4. Apr 2006, 13:19
Hallo Wissende,

ich habe eine Stringliste, in der sich CSS-Code befindet. Dieser Code wiederum befindet sich in einer Memo-Komponente. Nun möchte ich gern wissen, wo sich mein Cursor befindet.

Folgender CSS-Code als Beispiel:

body {
font-family:verdana;
font-size:12px;
}
td {
font-family:arial;
font-size:10px;
}
.black {
color:white;
font-size:10px;
background-color;black:
border: 1px #ffcc66 solid;
}

Wenn ich nun mit meinem Cursor in der Memo-Komponente bei irgendwo bei font-size:10px; stehe hätte ich gern von einer function das element .black zurück - nicht td. Ich weiss nun leider nicht, wie ich die Verbindung zwischen Cursorposition im Memo und der Strinliste herstellen kann, bzw. wie ich rückwärts oder vorwärts weitersuchen muss, wenn ich in der aktuellen Zeile nichts finden konnte, denn wie hier im Beispiel muss ja der Elementname nicht zwangsläufig in der selben Zeile stehen. Fakt ist aber, dass der Name vor der nächsten geschweiften Klammer { steht, wenn der Code korrekt ist.

Leider haben meine bisherigen Versuche einfach nicht geklappt.

Wer kann helfen? Scheinbar gibt es Probleme mit den Zeilenumbrüchen und den Leerzeichen in der Stringlist...!?
Danke
Tom
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#2

Re: Suche in einer Stringlist die Gruppe, in der mein Cursor

  Alt 4. Apr 2006, 13:52
Es gibt zwei Möglichkeiten, die mir einfallen: a) Hier im Forum suchenparsen und b) gucken, wo sich n '{' vor der Aktuellen Position befindet:
Pseudocode:
Delphi-Quellcode:
  for i := Momo1.SelPos downto 0 do
  begin
    if Memo1.Text[i] = '{then
    begin
      NameErmitteln;
    end;
  end;
Was das allerdings mit ner StingList zu tun hat, weiß ich nicht. Wenn ich dich also missverstanden hab, musst du dein Problem geneuer/verständlicher schildern...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Suche in einer Stringlist die Gruppe, in der mein Cursor

  Alt 4. Apr 2006, 14:23
Hallo r2c2,

ich denke wirklich, dass ich mich falsch ausgedrückt habe. Das mit der Stringliste kann man getrost weglassen. Ich habe Deinen Code mal erweitert, da ich den Namen gleich in der Schleife ermitteln will. Aber leider klappt es nicht.

Delphi-Quellcode:
    for i := MainForm.SynEdit1.CaretX downto 0 do
      begin
        if MainForm.SynEdit1.Text[i] = '{then
        begin
          akt:=i;
          for k := akt downto 0 do
            begin
              if MainForm.SynEdit1.Text[k] = '}then
                name:=Trim(MidStr(MainForm.SynEdit1.Text,k+1,akt));
                ShowMessage(name);
                break;
            end;
        end;
      end;
Da scheint noch was im argen zu sein. Statt der Memo benutze ich die SynEdit-Komponente. Da diese kein SelPos bietet, habe ich es mal mit CaretX probiert. Irgendwo muckerts aber noch. Meine Messagebox bleibt noch leer...
Danke
Tom
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#4

Re: Suche in einer Stringlist die Gruppe, in der mein Cursor

  Alt 4. Apr 2006, 14:53
CaretX kann man nicht nehmen, da das nur in *einer* Zeile die Position angibt und nicht die insgesammte; SelPos - wenns das wirklich bei den SynEdit nicht gibt(schon lang nicht mehr damit gearbeitet) - müsstest du dir also nachbauen, weiß aber momentan auch nicht wie...

Guck nochmal, obs wirklich kein SelPos gibt. Sollte mich wundern. *sich nochmal erinnert* Könnte es vielleicht sein, dass SelPos bei den SynEdits SelStart oder so heißt?

Ansonsten könntest du natürlich auch noch parsen. Das hätte auch den Vorteil, dass du keine Probleme mit Kommentaren hast... Is allerdings relativ aufwendig...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Suche in einer Memo die Gruppe, in der mein Cursor ist

  Alt 4. Apr 2006, 15:01
Also SelStart gibts. Könntest Du mir noch nen Tipp zum Thema parsen geben? Ich knabbere schon ewig an diesem Thema, hatte aber noch nie wirklich den entscheidenden Durchbruch hierbei erlebt, da mir die Kommentare, Fehler im CSS-Code, Leerzeichen im CSS-Code und Zeilenumbrüche immer wieder nen Strich durch die Rechnung machten...
Danke
Tom
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#6

Re: Suche in einer Memo die Gruppe, in der mein Cursor ist

  Alt 4. Apr 2006, 15:13
N Tipp zum Thema parsen? Hm... is n relativ komplexes Thema. Guck dir mal an, was die Suche bringt. Ansonsten(d.h. wenn du keine Lust hast an die - _pi*Daumen=_ - ca. 300-500 Codezeilen (minimum) zu schreiben) kannst du dich auch auf die Suche nach m fertigen CSS-Parser machen.

Stichwörter, die dir helfen könnten:
- Parser
- Lexer
- Tokenizer
- lexikalische Analyse
- ...

mfg

Christian

P.S.: Wenns SelStart gibt, kannst du auch SelStart nehmen und einen gefundenen String auf Sonderzeichen und Kommentare prüfen. Das sollte weitaus schneller gehen...
Kaum macht man's richtig, schon klappts!
  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 13:05 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