FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
no me entendiste, la tuya si insertaria pero la idea es usar una copia de la tuya algo modificada a la que llamariamos Replace o algo asi y poder usar tanto Insert como Replace por separado.
|
#2
|
||||
|
||||
Cita:
Saludos. |
#3
|
||||
|
||||
ok, tienes razon, no lo vi que buscabas el FinA jejeje. Entonces se me ocurre creae una lista doble donde poner las etiquetas iniciales y finales a reemplazar su contenido y que con un for(int i=1;i<=lista->count;i++) pues va buscando todas las etiquetas y las sustituye.
|
#4
|
||||
|
||||
Como la función trabaja con un buffer que salva en el archivo la modificación, un bucle en la función no te sirve. Ten en cuenta que actúa sobre la primera etiqueta que coincida.
Puedes, en lugar de guardar directamente en disco, crear un buffer secundario que vas llenando con los datos del archivoA modificado y guardarlo entero al finalizar. Ten en cuenta que si vas a insertar más tamaño que el archivoA original, deberás reservar más memoria que el tamaño del archivo. Yo no o hago porque solo leo, el guardar lo hago en disco directamente. Al funcionar con un buffer temporal, puedes usar un bucle solo debes controlar el puntero del BufferA y BufferB adecuadamente para que la siguiente búsqueda sea la de la siguiente etiqueta con el mismo nombre (es una suma de puntero del buffer + el último índice final encontrado). Saludos. Última edición por escafandra fecha: 04-07-2014 a las 18:52:52. |
#5
|
||||
|
||||
bueno yo decia poner la llamada a la funcion dentro del bucle por eso dcia lode abrir y cerrar archivos varias veces. Otra opcion podria ser crear una clase donde se podrian poner como metodos AbrirA, AbrirB, Reemplazar, CerrarA, y CerrarB y antes del for llamo a AbrirA y AbrirB y si todo fue bien entro en el bucle donde reemplazo todas y al salir del bucle llamo a CerrarA y CerrarB. Con eso evito abrir los archivos varias veces. Ademas el archivo de salida no seria ni A, ni B, seria uno nuevo ya que A seria una plantilla, B seria el contenido a insertar y C seria el archivo de salida. Creo que no seria complicado modificar tu código para que funcione así. Supongo que tendria que tener una variable la cual controle si ya he creado a C para que para la segunda pasada y demas pues use C en lugar de A. Esa es la idea que se me ocurrio.
|
#6
|
||||
|
||||
El problema de varias entradas en la función es que si tienes barias etiquetas del mismo nombre pero en otras partes del archivo, sólo actuará en la primera, por eso te decía lo de un buffer intermedio y hacerlo todo de un tirón.
La versión de Builder que uso es muy antigua. En el caso de que tus archivos sean xml quizás te interese un componente que trabaje con ellos y te facilite la tarea en alto nivel. Yo soy amante del bajo nivel y del hágalo usted mismo... Saludos. |
#7
|
||||
|
||||
Otra posibilidad para usar mi función en un bucle es modificar la función Search añadiendo un parámetro que indique la concurrencia que buscas (la 1ª, 2ª, 3ª...) con lo que esa función queda mucho mejor
Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Intercalar Forms | Jorge Hernández | Varios | 4 | 30-04-2014 18:58:12 |
intercalar digitos | luisito2011 | Varios | 6 | 04-12-2012 18:38:57 |
intercalar paginas con fastreport | mferrero | Impresión | 1 | 26-02-2008 13:36:54 |
Intercalar Variable en SQL... | foetus | SQL | 7 | 09-07-2007 02:21:28 |
Como puedo grabar texto en un Archivo de Texto sin Sobreescribir???? | AGAG4 | Varios | 12 | 08-11-2005 22:53:00 |
|