Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





**** Los limites de CEdit ****

Iniciado por Antares, 17 de Octubre de 2002, 08:03:48 PM

« anterior - próximo »

Antares

                                Hola a tod@s:

Estoy haciendo un programilla para reemplazar texto en multiples archivos y tengo un problema con archivos mayores de 50K ya que no consigo mostrarlos en un cuadro de texto, uso Visual c++ y no encuentro por ningun lado cual es el limite de de tamaño que admite el control EditBox de la clase CEdit. La manera en la que lo intento es esta:

CFile Arch;
if(Arch.Open(m_fichero[m_nFicheroActual],CFile::modeRead))
{
               unsigned long Tam=(unsigned long)(Arch.GetLength());
   char *Texto=new char[Tam+1];
   
               Arch.Read(Texto,Tam);
   Texto[Tam]=0;
   Nombre=Arch.GetFileName();
   m_CtrlVistaTexto.SetWindowText(Texto);
   delete Texto;         
               Arch.Close();
}

Uso un formulario como ventana principal

Intente hacerlo con un RichEditBox porque lei que tenia mas capacidad pero sin escribir ni una linea me dice que es imposible crear un documento vacio.

Comentado esto enumero las cuestiones;

1º/ ¿Cual es el limite de texto del EditBox?

2º/ ¿Cual es el limite de texto del RitchEditBox?

3º/ ¿Como creo el RitchEditBox con un documeno "no vacio"?

4º/ ¿Que debo hacer para mostrar archivos como texto sin limite de tamaño?

Gracias de antemano y espero poder ayudar yo tambien algun dia.

Antares                                

nostromo

                                Hola, en respuesta a las preguntas

1º. Depende del sistema operativo: w95/98 son 32kb ,en w2000 2Gb
2º  Cualquiera, pero tienes que poner tu a mano el limite
3º  ni idea
4º  mi consejo es que lo hagas a mano, es decir ir monstrando la parte del fichero que se pueda ver en ese momento, por ejemplo cargandolo poco a poco en un buffer tuyo, y cuando salgas(visualmente hablando) del buffer actual, cargas el buffer con los siguientes datos y sigues. Con controles de Barras horizontales o verticales....

Un saludo                                

Antares

                                Muchas gracias por tus respuestas nostromo.

Ahora entiendo pq a un colega si le salia todo el texto pq tiene W2000

Si alguien sabe de algun tuto o url de como usar un RtchEditBox sin crearlo como vista principal o porq sale el error de "imposible crear un documento vacio" os lo agradeceria  :oops:

talueego.

Antares                                

MChiz

                                Hola!
No se si te referiras a lo que te voy a decir; espero que si.
En la funcion InitInstance, añade estas dos lineas:

AfxEnableControlContainer();
AfxInitRichEdit( );

Esto sale en las MSDN, en el help de CRichEditCtrl. Vease:

Important   If you are using a rich edit control in a dialog box (regardless whether your application is SDI, MDI, or dialog-based), you must call AfxInitRichEdit once before the dialog box is displayed. A typical place to call this function is in your program's InitInstance member function. You do not need to call it for each time you display the dialog box, only the first time. You do not have to call AfxInitRichEdit if you are working with CRichEditView.

Espero que sea esto!
Un saludo!                                

Antares

                                Pues si que era eso :)

Al final lo que he hecho ha sido usar el control RitchText de ActiveX y ahora estoy adaptando el codigo. Pero por curiosidad he probado lo del RichEditCtrl y ahora si me lo abre.

Aunque con mi parco ingles no se si hubiera deducido que tenia que añadir esas dos lineas a la InitInstance, me jode que ya estuviera ahi y no lo hubiera encontrado.

¿Como lo has buscado?

¿Hay algun tuto de como buscar en el MSDN? :P


Gracias                                

MChiz

                                jajajaja, si hay algun tutorial sobre eso me gustaria saberlo :b
En realidad yo no lo descubri; fue mi jefe, investigando. Yo tenia el mismo problema que tu y el me lo arreglo ;b
Me alegro que te haya ayudado!
Un saludete!                                

Antares

                                Te devuelvo el saludo (y no por que no lo quiera) :P

Ya comente que al final estaba usando el control Microchoft RichTextBox Control 6.0 y ahora que tenia casi todo el codigo adaptado me he dado cuenta de que si escribo letras ya no me deja usar el Return(Tecla Enter) sin embargo si al abrirlo le doy directamente al enter si añado lineas pero si escribo una sola letra ignora la tecla Enter. Es como si la propiedad want return no estuviese activada pero no encuentro dicha propiedad por ningun lado.

Tambien he pensado en interceptar el evento KeyDown pero no es fiable hacer esto pq no pasa siempre lo mismo y habra ocasiones en las que me meta dos retornos de carro cuando solo se le da una vez al enter.

¿Alguna idea?

Salud2

Antares                                

fiero

                                Hola,
Si ves que te da problemas el activeX usa el RichEditCtrl que imagino que será más facil de utilizar. Aunque tengas que volver a cambiar el código piensa que todo lo hecho no ha sido inutil, la cuestión es probar y probar, programar y programar, así se aprende... :)

saludos desde por aquí cerca...                                
www.videopanoramas.com Videopanoramas 3D player

Antares

                                Claro que no he perdido el tiempo. Ademas es mi primer control ActiveX que manejo con tanto exito :P por eso me gustaria saberlo y postee la cuestion para que exito fuese completo, asi que si alguien lo sabe... Adelante ;)

Con el RichEditCtrl ya lo he hecho siguiendo tu consejo, solo he modificado 6 lineas y funciona a la perfeccion(De momento claro) porq al final; he prescindido de la lista interna de rutas completas, ahora las monto a partir de los nombres de archivos y carpetas del TreeView  y estoy ajustando el codigo todavia.

Una vez mas gracias a todos, felicidades por el foro a los responsables de mismo y pronto me contestare a mi mismo la tercera pregunta del primer post "¿Cual es el limite de tamaño del RichEdit?

Y a ti fiero; billones de gracias por enseñarme este foro y por asistirme durante un año en la entrada a este inmenso y maravilloso oceano.

----fiero= 8)    
Antares= :loco:

Salud2                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.