Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-05-2013
manujimenez manujimenez is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 11
Poder: 0
manujimenez Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 09-05-2013
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
en el uses tienes que declara la unidad StrUtils
Responder Con Cita
  #3  
Antiguo 09-05-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por manujimenez Ver Mensaje
..
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Y recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #4  
Antiguo 09-05-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por manujimenez Ver Mensaje
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.
[DCC Warning] CambiaTexto.pas(35): W1019 For loop control variable must be simple local variable

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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 09-05-2013
manujimenez manujimenez is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 11
Poder: 0
manujimenez Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 16-05-2013
manujimenez manujimenez is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 11
Poder: 0
manujimenez Va por buen camino
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

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
I: integer;
ss : TStringList;

begin

ss := TStringList.Create;
ss.LoadFromFile('c:\xxx\archivo.txt');

for I := 0 to (ss.count -1) do
ss.Text := StringReplace(ss.text,'22.150','28.250''',[rfReplaceAll]);

ss.SaveToFile('c:\xxx\archivo2.txt');
end;

end.

Última edición por Neftali [Germán.Estévez] fecha: 16-05-2013 a las 11:09:10. Razón: Añadir TGA's
Responder Con Cita
  #7  
Antiguo 16-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola manujimenez.

Por favor cuando incluyas código en tus mensajes usa los TAG's. La imágen muestra como hacerlo:



Tu consulta:
Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
  ss : TStrings;
begin
  ss := TStringList.Create;
  try
    ss.LoadFromFile('c:\archivo.txt');
    ss.Text := StringReplace(ss.Text, '22.150', '28.250', [rfReplaceAll]);
    ss.SaveToFile('c:\archivo2.txt')
  finally
    ss.Free
  end
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 16-05-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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:

Código Delphi [-]
  ss[i] := StringReplace(ss[i],'22.150','28.250',[rfReplaceAll]);

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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 16-05-2013
manujimenez manujimenez is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 11
Poder: 0
manujimenez Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fichero de Texto: Log.txt jsc Varios 2 16-09-2011 18:48:40
Cortar Fichero de texto. johurgi Varios 3 03-04-2008 15:41:29
Fichero de Texto Enorme muli Varios 8 19-02-2008 02:23:35
verificar fichero de texto arley_molina Varios 2 12-06-2006 20:52:40
leer fichero de texto davidgaldo Varios 1 08-11-2005 15:05:12


La franja horaria es GMT +2. Ahora son las 16:56:24.


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
Copyright 1996-2007 Club Delphi