Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Worterkennung im Editor

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
24.09.2007, 21:41 Uhr
opiWahn



Hallo,
ich mach gerade nen einfachen Editor mit C++ und wx und wüsste nun gern, wie man diese automatische Worterkennung machen kann, dass er die dann farblich hervorhebt.
Wie bei einem PHP oder HTML Editor halt auch.
Bitte hilfe, hab bisher nichts gefunden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.09.2007, 16:39 Uhr
stephanw
localhorst


Wie man Textabschnitte einfärbt, hängt von der verwendeten GUI-Bibliothek ab.

Worterkennung... Such eben im Eingabetext nach Deinen Schlüsselworten (für C++ z.B. "for", "if", "double" usw.).

Für einfache Sprachen wird das vielleicht schon reichen.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.09.2007, 18:00 Uhr
opiWahn



ach so.
sowas wie if wort = sososo rot färben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.09.2007, 18:37 Uhr
stephanw
localhorst


Schau doch erstmal, wie man mit der von Dir verwendeten GUI-Biliothek Textabschnitte einfärbt.

Angenommen, man muss für einen Bereich [von,bis] eine Farbe angeben, dann könnte das so funktionieren:


C++:
keyword = "for";

text = textfield->getText();

int i = -1;

while (true)
{
  i = text.find( keyword, i+1 ); // suche nach keyword ab Position i+1 und gib die neue Position zurück
  if (i != -1) // gefunden
  {
    textfield->setColor( BLUE, i, keyword.length() ); // farbe für Bereich ab i mit Länge des Schlüsselwortes
  }
  else
  {
    break;
  }
}



--
Reden ist Schweigen und Silber ist Gold.

Dieser Post wurde am 25.09.2007 um 18:39 Uhr von stephanw editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.09.2007, 22:16 Uhr
Blubber2063



Naja grundsätzlich halt Workterkennung, wobei du bey Keywords ja den Vorteil hast, das du hier nur nach Wörtern mit leerzeichen abgegrenz scannen musst, wobei zahlen hier noch mal eine Ausnahme bilden. Grundsätzlich solltest du dir vermutlich mal http://boost.org spirit anschauen solltest. Das ist ein Kombinator Parser bei dem du eigentlich nur noch die erwarteten Zeichenketten verodern musst. Und dann als semantische Aktion das einfärben vornehmen musst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.09.2007, 18:33 Uhr
opiWahn



Jo danke schonmal.
Aber wol soll ich den Code dann einbauen?
Ein wx Programm hat nämlich keine main Funktion.
(meine zumindest)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.09.2007, 16:31 Uhr
stephanw
localhorst


Falls Du den von mir gezeigten Code meinst, den kannst Du so gar nicht einbauen. Es war als Anregung gedacht, das auf Deine Umgebung (offenbar wxWidgets) zu übertragen.
Wenn Du Dein Programm selbst geschrieben und verstanden hast, weißt Du auch, wo Du sowas einbaust.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.09.2007, 17:59 Uhr
xXx
Devil


ehm endlosschleifen sind auch in nem pseudocode nicht dolle

C++:
keyword = "for";

text = textfield->getText();

for (i = text.find(keyword, 0); i != -1; i = text.find(keyword, i + 1)) // + 1 damit wir nicht das selbe ding bis in die Unendlichkeit finden ;)
    textfield->setColor( BLUE, i, keyword.length() ); // farbe für Bereich ab i mit Länge des keywords
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.09.2007, 18:05 Uhr
stephanw
localhorst


Ich sehe da keine Endlosschleife. Wenn es nicht gefunden wird, kommt "-1" raus. Dann wird die Schleife verlassen.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.09.2007, 18:13 Uhr
xXx
Devil


tjo trotzdem wird dir das der Compiler als eine solche verkaufen Das Problem ist while(true) ... gilt auch als äußerst unschön
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: