Remplazar texto en fichero
He visto este código aquí en club delphi he intentado utilizarlo y me tira estos errores:
[DCC Warning] CambiaTexto.pas(35): W1019 For loop control variable must be simple local variable [DCC Error] CambiaTexto.pas(37): E2003 Undeclared identifier: 'StuffString' [DCC Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'CambiaTexto.pas' Alguien me puede explicar un poco, incluyo toda la unit. Disculpar las molestias soy muy novato. unit CambiaTexto; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; ss : TStringList; I: integer; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin ss := TStringList.Create; ss.LoadFromFile('c:\xxx\archivo.txt'); //ss.Text := StringReplace(ss.text,'22.150 ','22.250 ',[rfReplaceAll]); for I := 0 to (ss.count -1) do if sametext(copy(ss.strings[i], 117, length('21.250')), '21.250') then ss.strings[i] := StuffString('21.250', 117, length('21.250'), '22.250'); ss.SaveToFile('c:\xxx\archivo.txt'); end; end. |
en el uses tienes que declara la unidad StrUtils
|
Cita:
Y recuerda poner los tags al código fuente, ejemplo: Gracias :) |
Cita:
En este caso es un AVISO (Warning); Te dice que para un for loop (FOR) es mejor que utilices una variable local en lugar de una global. Es decir, que declares la i:Integer, en la parte TForm2.Button1Click, en lugar de hacerlo en la sección var del formulario. [DCC Error] CambiaTexto.pas(37): E2003 Undeclared identifier: 'StuffString' En este caso es un ERROR. Te está diciendo que no sabe lo que es esto: 'StuffString' Si miras tu código, verás que es una función que estás utilizando. Colocas el cursor encima, pulsas F1, y aparece la pantalla de ayuda que te dice que esta función está en la unit StrUtils. Por tanto te vas al uses y la añades, Total, lo que te ha dicho aposi, sólo que espero que ahora entiendas porqué debes hacerlo. |
Ok, ya me funciona el problema era en la unit StrUtils la he añadido y listo ya me compila.
Muchas gracias ahora haber si consigo adaptarlo a lo mio. Muchas gracias de nuevo. |
Remplazar texto en fichero 2
Disculpar de nuevo, me complila pero no consigo hacer. Tengo un fichero archivo.txt con varias cifras entre las que se hayan 22.150 y quiero sustituirlas por 28.250 (o lo que sea cualquier cosa...) y guardarlo como archivo2.txt.
Este código me compila y me genera el fichero archivo2.txt pero no me guarda el cambio. Gracias de antemano y disculpar las molestias. M
|
Hola manujimenez.
Por favor cuando incluyas código en tus mensajes usa los TAG's. La imágen muestra como hacerlo: Tu consulta:
Saludos. :) |
Antes de nada comentar que cuando utilices código, es mejor que añadas TAG's.
Por lo demás,no vas mal encaminado, aunque hay alguna cosa que no te acaba de quedar clara. (1) Si usas ss.Text, estás accediendo a todo el texto del TStringList, por tanto no hace falta que utilices un for. (2) Si quieres usar for y hacer el recorrido por todas las líneas, debes hacerlo con:
De esta forma haces el recorrido línea a línea. Por último te falta liberar el elemento que has creado (ss). AÑADO: Veo que ecfisa ha sido más rápido. |
Si ya me funciona
Bueno, muchas gracias una vez más.
Efectivamente he añadido esta línea de código y ya funciona perfectamente. Muchas muchas gracias |
La franja horaria es GMT +2. Ahora son las 08:22:49. |
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