FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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:
2 1/12/200802901A000100078171 1/12/2008 3518.0533061239322919217517864111000000000000 598.21 21.250 71.22000000000000 71.22009 2 1/12/200802901A000300006520 1/12/2008 1447.8933061518885519217446929111000000000000 246.20 21.250 29.31000000000000 29.31009 2 1/12/200802901A000300006521 1/12/2008 1471.2832024291855010420077637111000000000000 250.18 22.500 29.78000000000000 29.78001 2 2/12/200802901A000100078178 2/12/2008 2063.7433061915921310610068665111000000000000 350.92 22.500 41.77000000000000 41.77001 2 2/12/200802901B000300003292 2/12/2008 1909.7033063058073710440014814311000000000000 177.45 22.500 42.25000000000000 42.25001 Espero me puedan dar una mano con esta cuestión, y sepan disculpar si este tema fue tratado con anterioridad. Saludos a todos. |
#2
|
|||
|
|||
Hola, creo que puedes hacerlo de manera sencilla usando la propiedad .text de un TStringList (lo hago de cabeza, deberas probarlo)
saludos. |
#3
|
||||
|
||||
Sino te gusta la idea del compañero [coso] puedes probar la función copy,
Saludos |
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
Cita:
Mejor utiliza una compinación de copy y StuffString Saludos. |
#6
|
||||
|
||||
Cita:
Mas o menos tu codigo quedaría así:
Así sería mas o menos, hay varias formas de hacerlo, esa es una. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#7
|
||||
|
||||
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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#8
|
||||
|
||||
Caro, tu código contiene un bug, en la línea
Cita:
Estás ofuscando código? Saludos. |
#9
|
|||
|
|||
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 1.2502.500 2 1/12/200802901A000300006521 1/12/2008 1471.2832024291855010420077637111000000000000 250.18 22.500 29.78000000000000 29.78001 2 2/12/200802901A000100078178 2/12/2008 2063.7433061915921310610068665111000000000000 350.92 22.500 41.77000000000000 41.77001 2 2/12/200802901B000300003292 2/12/2008 1909.7033063058073710440014814311000000000000 177.45 22.500 42.25000000000000 42.25001 1.2502.500 2 3/12/200802901A000300006542 3/12/2008 1319.5432720146028510740029451111000000000000 174.89 22.500 27.92000000000000 27.92001 1.2502.500 1.2502.500 2 4/12/200802901A000300006561 4/12/2008 1203.0832714455479010510192048111000000000000 111.79 22.500 26.62000000000000 26.62001 2 4/12/200802901A000300006563 4/12/2008 2216.4432029524693710410263259111000000000000 205.95 22.500 49.03000000000000 49.03001 2 4/12/200802901A000300006567 4/12/2008 1371.3032720146028510740029451111000000000000 127.42 22.500 30.34000000000000 30.34001 2 4/12/200802901B000300003307 4/12/2008 1313.0632024404084610440022138411000000000000 122.01 22.500 29.05000000000000 29.05001 2 5/12/200802901A000300006579 5/12/2008 2582.6733071079415010111372427111000000000000 239.98 22.500 57.13000000000000 57.13001 Desde ya, agradezco tu respuesta. Saludos. |
#10
|
||||
|
||||
Podrías ayudarme a entender en que consisten escencialmente las diferencias, pues auque las veo, no las puedo relacionar.
|
#11
|
|||
|
|||
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
|
#12
|
|||
|
|||
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. |
#13
|
|||
|
|||
Así es, lo he resuelto de esa manera.
[coso], [felipe88], D&W y Caro muchas gracias a todos por sus respuestas. Saludos a todos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Reemplazar texto | Caro | Varios | 5 | 19-01-2009 22:55:29 |
Reemplazar texto en un textfile.. | rulo_m | Varios | 4 | 10-06-2008 02:12:41 |
Reemplazar texto en un .dfm | elcigarra | OOP | 9 | 19-12-2007 08:47:17 |
Reemplazar texto de encabezamiento y pie | toni.vi | Servers | 2 | 16-10-2007 10:36:50 |
Reemplazar texto en fichero HTML | Sr_Sombrero | Varios | 1 | 17-04-2007 19:01:50 |
|