Recorrer y Reemplazar Texto en txt
Estimados amigos de ClubDelphi, en esta oportunidad les solicito vuestra generosa y siempre desinteresada ayuda, por un problema que necesito resolver. He buscado en los diferentes hilos pero no he podido encontrar respuesta a mi cuestión, la cual paso a plantearles.
Tengo un archivo .txt que selecciono mediante un OpenDialog, y obtengo su respectiva ruta. A grandes rasgos, la estructura del archivo es la siguiente: Código:
Espero me puedan dar una mano con esta cuestión, y sepan disculpar si este tema fue tratado con anterioridad. Saludos a todos. |
Hola, creo que puedes hacerlo de manera sencilla usando la propiedad .text de un TStringList (lo hago de cabeza, deberas probarlo)
saludos. |
Sino te gusta la idea del compañero [coso] puedes probar la función copy,
Saludos :) |
Desde ya, muchas gracias por sus respuestas.
[coso] he probado lo que me pasaste y funciona de maravillas. Pero todavía me queda una duda: al realizarlo de la manera que planteas no estoy reemplazando todos las cadenas que comiencen con '22.150' en el total del texto? Porque de ser así, esto no cumpliría con lo que necesita que es, precisamente, reemplazar el texto antes mencionado pero dandole una posición (del 118 al 123) linea por linea. Me parece que en este caso, sería mejor usar la función copy, la cual puede asignarle la posición a cambiar. Pero la pregunta es: como hago para recorrer linea por linea? En fin, espero haber sido claro con mi explicación, caso contrario no duden en consultarme. Nuevamente, muchas gracias por sus respuestas. |
Cita:
Mejor utiliza una compinación de copy y StuffString Saludos. |
Cita:
Mas o menos tu codigo quedaría así:
Así sería mas o menos, hay varias formas de hacerlo, esa es una. Saluditos |
Hola de nuevo, no conocía la función StuffString, en vez de separar la cadena o utilizar Delete e Insert, mejor que utilices StuffString con la función PosEx.
Saluditos |
Caro, tu código contiene un bug, en la línea
Cita:
Estás ofuscando código? ;) Saludos. |
D&W he probado tu sugerencia pero me produce un resultado diferente al que daba de entrada, que te muestro a continuación:
Código:
1.2502.500 Desde ya, agradezco tu respuesta. Saludos. |
Podrías ayudarme a entender en que consisten escencialmente las diferencias, pues auque las veo, no las puedo relacionar.
|
si, te reemplaza todo. Si quieres solo de esas lineas, en vez de ss.text, usa ss[numero_de_linea] := stringreplace( ss[numero_de_linea],...) etc... ahora ya lo tienes en bandeja. Algo asi como
|
La diferencia que vi se encuentra en la siguiente línea:
Código:
ss.strings[i] := StuffString('1.250', 118, length('1.250'), '2.250'); Código:
1.2502.500 Agradezco nuevamente tu tiempo en darme una respuesta a mi problema. Saludos. |
Así es, lo he resuelto de esa manera.
[coso], [felipe88], D&W y Caro muchas gracias a todos por sus respuestas. Saludos a todos.;) |
La franja horaria es GMT +2. Ahora son las 17:27:58. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi