![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Pues si me indicas en que parte tienes dificultades te podre ayudar mejor, básicamente se trata de leer un archivo de texto, linea a linea, verificar si la linea leida es uno de nuestros "tag" y procesar la información que continúa segun indique el "tag" hasta encontrar la señalización de fin (":<end>" en el ejemplo).
al leer la primera línea ya sabrias cuantos memos tienes que crear en forma dinámica, para saber si una linea es un "tag" puedes usar la siguiente comparación, asumiento q en la variable S esta la linea de texto leida del archivo: if RightStr(S,2)=':<' then // aquí ya sabes q es un tag. Para saber si se trata de un tag en particular examina el texto antes del signo '=' y para el valor (como por ejemplo el numero de memos) convierte con un strtoint el valor comprendido entre el = y el final de la cadena menos 1 (para quitar el '>'): tag=copy(S,3,Pos('=',S)-1); Con esto obtienes el tag en una cadena. tagvalue=strtoint(copy(S,Post('=',S)+1,Length(S)-1)); y con esto el valor si es necesario. Para crear el archivo, usa el rewrite, grabas primero el tag con el numero de memos y luego la información segun el formato del ejemplo. En realidad la lógica es sencilla, cuando tengas listo el programa te va a sorprender lo pequeño y simple q resultó. Nuevamente mi consejo es que en vez de usar ':<' uses algun tipo de secuencia de códigos de escape no vaya a ser q tu usuario justo se le ocurra escribir al comienzo de una linea ":<end" y el programa lo interprete como un tag. Aunque esto es algo exagerado, pero hay usuarios y usuarios!! Saludos. |
|
#2
|
||||
|
||||
|
Y si usas XML????
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Última edición por delphi.com.ar fecha: 27-04-2004 a las 17:10:29. |
|
#3
|
|||
|
|||
|
Cita:
Un saludo |
|
#4
|
||||
|
||||
|
no te recomiendo q uses xml puesto que si no usas algún método para cambiar el texto a guardar un usuario puede pegar o escribir texto q contenga etiquetas xml. Luego el programa podría recuperar inadecuadamente la información del archivo.
|
|
#5
|
|||
|
|||
|
varios memos en un solo archivo
pues a mi parecer se estan complicando bastante la vida todos, ya que para guardar todo lo que quieran de un memo o mil o los que quieran lo pueden pasar de la siguiente manera que cabe mencionar ya lo han dicho pero no lo han probado:
memoprincipal.text:=memoprincipal.text+memo1.text; memoprincipal.lines.add('*****'); // con esto separas o indicas que termino un memo memoprincipal.text:=memoprincipal.text+memo2.text; memoprincipal.lines.add('*****'); // con esto separas o indicas que termino un memo memoprincipal.text:=memoprincipal.text+memo3.text; memoprincipal.lines.add('*****'); // con esto separas o indicas que termino un memo memoprincipal.text:=memoprincipal.text+memo4.text; memoprincipal.lines.add('*****'); // con esto separas o indicas que termino un memo memoprincipal.text:=memoprincipal.text+memo5.text; memoprincipal.lines.add('*****'); // con esto separas o indicas que termino un memo . . . . memoprincipal.lines.savetofile('c:\prueba.txt'); y asì cuando lo quieras recuperar, pasalo a otro memo con: memo1.lines.loadfromfile('c:\prueba.txt'); lo recorres con un for y otra vez lo puedes pasar a los emmops que corresponden ojala te sirva |
|
#6
|
||||
|
||||
|
tanto el método de esocrates como el de the darkness fallarían en el caso que un usuario (malentencionadamente o no) incuya una línea que contenga el "marcador" en uno de los memos. Es el principal problema de usar este tipo de soluciones. La solución a esto es ir escaneando el memo, y utilizar secuencias de escape o algo similar para evitar esto.
digamos, que si encontras la línea *****, la guardas como \*****, y al leer haces lo inverso. Y si encontras la línea \***** (que también es posible), la guardas como \\*****, y asi sucesivamente. Tengo otra solución en mente, que involucraria un pequeño componente... si tengo tiempo de armarlo en los proximos días, publicaré aqui mismo el código. Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
![]() |
|
|
|