Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
15/11/09 14:07
LittleHacker
Buon gfirono a tutti...Sto creando un programma che mi permette di programmare in C/C++(è solo un piccolo Editor di Sorgenti, il compilatore è esterno) ma adeso ho un problema sto utilizzando la guida di Totem sulla SyntaxHighlight, ho preso qualche spunto qua e la ma ora vorrei sapere come posso utilizzare le Regex per colorare le parole chiavi cioè se ad esempio l'utente scrive '#include' il rpogramma deve colorarmi di blu(ad esempio) la stringa '#include' e quindi dovrei controllare se è stato scritto #include con le regex etc...come posso fare???:hail::k:
aaa
15/11/09 15:55
Il Totem
Beh, la regex per #include è... "#include" :rotfl:
Se, invece, vuoi indicare "#include", ma seguito da almeno uno spazio è "#include\s+".
Oppure, se vuoi indicare "#include" seguito da almeno uno spazio e posto all'inizio della linea è "^#include\s+".
O ancora, "#include" seguito da almeno uno spazio e preceduto da zero o più spazi, ma che inizino dall'inizio della riga è: "^\s*#include\s+".
aaa
15/11/09 15:56
LittleHacker
Postato originariamente da Il Totem:

Beh, la regex per #include è... "#include" :rotfl:
Se, invece, vuoi indicare "#include", ma seguito da almeno uno spazio è "#include\s+".
Oppure, se vuoi indicare "#include" seguito da almeno uno spazio e posto all'inizio della linea è "^#include\s+".
O ancora, "#include" seguito da almeno uno spazio e preceduto da zero o più spazi, ma che inizino dall'inizio della riga è: "^\s*#include\s+".


ok però poi come faccio a digli che se trova '#include <libreria>' me la deve colorare di un colore?:k::hail:
aaa
15/11/09 16:05
Il Totem
Funzione Matches: restituisce tutte le occorrenze della regex. C'è scritto nel capitolo sulle regex.
aaa
15/11/09 18:19
LittleHacker
Grazie mille Totem ho fatto...Questo è il codice:
Dim RegexBlue As New Regex("(#include|#define|etc.)")
        Dim MatchsBlue As MatchCollection = RegexBlue.Matches(Me.Text)
        For Each MBlue As Match In MatchsBlue
            If MBlue.Success Then
                Me.SelectionStart = MBlue.Index
                Me.SelectionLength = MBlue.Length
                Me.SelectionColor = Color.Green
                Me.DeselectAll()
            End If
        Next


Ma adesso ho un'altro problema ad esempio se io voglio scrivere un commento nel mio codice(in c++) faccio così:
'/* commento */' e lui mi colora '/*' e '*/', fin qui tutto ok ma si presenta il problema che lui mi colora solo ed unicamente le '/*' '*/' e non il loro interno e cioè il commento qui mi rimane una cosa così:
/*(colorato di azzurro) commento(colorato in nero) */(colorato in azzurro), invece io vorrei che fosse tutto colorato di azzurro...
Domanda:
Come posso colorare tutto(cioè anche il commento)?:hail::hail::k:
aaa
16/11/09 12:19
Il Totem
Se hai fatto una regex del tipo "(/\*|\*/)" mi sembra ovvio che ti colori solo i delimitatori. Se vuoi comprendere tutto il commento farai "/\*[\w\W]+?\*/" o qualcosa di simile...
aaa
16/11/09 21:28
LittleHacker
Postato originariamente da Il Totem:

Se hai fatto una regex del tipo "(/\*|\*/)" mi sembra ovvio che ti colori solo i delimitatori. Se vuoi comprendere tutto il commento farai "/\*[\w\W]+?\*/" o qualcosa di simile...


Ok...Grazie mille per tutto:k:;):love::k::asd:
aaa
17/11/09 18:46
LittleHacker
Altro problema...:-|
Ho provato a leggere la tua(Totem) e un'altra guida (sulle regex) ma non sono riuscito a tirar fuori un bel niente...Comqune veniamo al problema...Quando apro o scrivo sulla richtextbox da me creata il font ad esempio della scritta verifica cambia ma non tutto cioè lui non dovrebbe proprio cambiare ma lui cambia perchè dentro c'è la parola chiave 'if' ma se io voglio cambiare font all'if solo se dopo di se c'è la parentesi tonda? ho già provato, ho tirato fuori qualcosa con questo: 'if\(' ma quando finisco di scrivere la parentesi tonda me la ingrandisce come l'if, invece io vorrei che solo l'if si ingrandisca...poi ad esempio se io scrivo:
cout << "Ciao" << endl;

<< e << endl; me li colora di verde...come risolvo?
Poi un'altro problema:
se ad esempio io scrivo(una riga sotto):
cout << "ciao" << endl;

Poi una riga sopra:
cout << "en" << endl;

Tutto il codice sotto ed '<< endl;' me lo colora di rosso oppure alcune volte di verde..come risolvo?:hail::hail::hail::hail::hail::hail::hail::hail::k:

Edit:

Il primo problema(quello dell'if) l'ho risolto utilizzando prima dell'if l'escape(adesso non so come si chiama, Totem aiutami tu:D) \W cioè: '\Wif' :k:
Aiutatemi negli altri...:hail::hail::hail::k:

2° Edit:

Pure il secondo problema(quello della colorazione in verde del codice) l'ho risolto togliendo dal codice degli '#include' il:
Me.Lines.Length

che non so neppure io a cosa servive:om::rotfl:...:k:

3° ed utlimo Edit(:D):
Risolto pure qst cercando su internet utilizzando qst codice sono riuscito :heehee::
"(\""(.*?)(?=\"")"")"

:k::k::k:
E scusate il disturbo da parte mia:rotfl::k:
Ultima modifica effettuata da LittleHacker 17/11/09 20:40
aaa