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
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
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
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!
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
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!
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
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...
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