Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Revisar codigo (bug)

Estas en el tema de Revisar codigo (bug) en el foro de C/C++ en Foros del Web. Hola a todos, estuve desarrollando con C++ Builder una pequeña aplicación para destacar palabras o "colorear la sintaxis". Casi he completado la aplicación, pero hay ...
  #1 (permalink)  
Antiguo 12/08/2007, 07:06
 
Fecha de Ingreso: febrero-2007
Mensajes: 12
Antigüedad: 17 años, 10 meses
Puntos: 0
Busqueda Revisar codigo (bug)

Hola a todos, estuve desarrollando con C++ Builder una pequeña aplicación para destacar palabras o "colorear la sintaxis". Casi he completado la aplicación, pero hay un "bug" en el código que me tiene trabado.
Aquí paso el código:

Código:
SendMessage(RichEdit1->Handle, EM_HIDESELECTION, 1,0);
int aStart=RichEdit1->SelStart;
int foundAt = (-1);
RichEdit1->SelStart=aStart+(RichEdit1->Lines->Strings[RichEdit1->CaretPos.y].Length()-RichEdit1->CaretPos.x);
RichEdit1->SelStart=RichEdit1->SelStart-RichEdit1->Lines->Strings[RichEdit1->CaretPos.y].Length();
RichEdit1->SelLength=RichEdit1->SelStart-RichEdit1->Lines->Strings[RichEdit1->CaretPos.y].Length();
RichEdit1->SelAttributes->Color=clBlack;
RichEdit1->SelLength=0;
AnsiString AWord="int";
foundAt = RichEdit1->FindTextA(AWord,foundAt+1,RichEdit1->Text.Length()-foundAt,TSearchTypes() << stWholeWord);
while (foundAt!=(-1) && RichEdit1->SelStart < aStart+RichEdit1->SelStart-RichEdit1->Lines->Strings[RichEdit1->CaretPos.y].Length()){
		RichEdit1->SelStart = foundAt;
		RichEdit1->SelLength = AWord.Length();
		RichEdit1->SelAttributes->Color = clRed;
		foundAt = RichEdit1->FindTextA(AWord,foundAt+1,RichEdit1->Text.Length(),TSearchTypes() << stWholeWord);
}
RichEdit1->SelStart=aStart;
RichEdit1->SetFocus();
SendMessage(RichEdit1->Handle, EM_HIDESELECTION, 0,0);
El código es extenso, pero no encontré como simplificarlo. Si alguien de ustedes me pudiera ayudar en eso, se lo agradecería. Pero ese no es el problema: Aquí está la duda:
Lo que hace este programa es destacar la palabra "int", al tipearla cambia su color a rojo. Hasta acá todo bien, pero cuando escribo int dos veces seguidas, y sigo escribiendo, las letras que escribo se tornan rojas.
No se si me expliqué bien, pero si no entienden, pruébenlos ustedes mismos.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:29.