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 10-03-2010
broly7 broly7 is offline
Miembro
 
Registrado: jun 2008
Posts: 43
Poder: 0
broly7 Va por buen camino
Wink Buscar cadena de texto y reemplazarla

Hola muy buenas.

Verán tengo el siguiente problema: Quiero abrir un archivo .txt y buscar una línea en la que ponga "set account 'Broly7'" y borrar el contenido entre comas.
El caso es que abro el archivo Assignfile...Reset...pero no se que función usar para que busque ese texto y después trabajar con el. Tengo algo así:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject); 
var F: textfile; 
begin 
if fileexists('config.wtf') then 
begin MessageDlg('Config.wtf found. Next', mtinformation, [mbOK],0); 
AssignFile( F, 'config.wtf'); 
Reset( F );  

[Aqui nose como posicionarme en la línea "set account"]  

Closefile( F ); 
end 
else 
MessageDlg('Config.wtf not found!', mtwarning, [mbOK],0); end;


Me ayudariais mucho. Gracias.
Responder Con Cita
  #2  
Antiguo 10-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola broly7, puedes utilizar la función StringReplace y recuperar tu archivo en un memo y si no lo quieres mostrar puedes utilizar también un StringList.

Código Delphi [-]
//ejemplo con un memo
  Memo1.Lines.LoadFromFile('tuArchivo');
  Memo1.Text := StringReplace(Memo1.Text,'set account ''Broly7''', '', [rfReplaceAll]); //para que reemplace en todo el texto 
  Memo1.Lines.SaveToFile('tuArchivo');//Para grabar nuevamente en tu archivo

No entiendo bien esta parte, dices borrar el contenido entre comas y no hay ninguna coma sino comillas, ¿tu quieres encontrar el texto "set account 'Broly7'" y borrar Broly7?. El ejemplo anterior reemplaza todo ese texto por vacío.

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.
Responder Con Cita
  #3  
Antiguo 10-03-2010
broly7 broly7 is offline
Miembro
 
Registrado: jun 2008
Posts: 43
Poder: 0
broly7 Va por buen camino
Thumbs up

Cita:
Empezado por Caro Ver Mensaje
Hola broly7, puedes utilizar la función StringReplace y recuperar tu archivo en un memo y si no lo quieres mostrar puedes utilizar también un StringList.

Código Delphi [-]//ejemplo con un memo Memo1.Lines.LoadFromFile('tuArchivo'); Memo1.Text := StringReplace(Memo1.Text,'set account ''Broly7''', '', [rfReplaceAll]); //para que reemplace en todo el texto Memo1.Lines.SaveToFile('tuArchivo');//Para grabar nuevamente en tu archivo


No entiendo bien esta parte, dices borrar el contenido entre comas y no hay ninguna coma sino comillas, ¿tu quieres encontrar el texto "set account 'Broly7'" y borrar Broly7?. El ejemplo anterior reemplaza todo ese texto por vacío.

Saluditos
Si si como tu bien dices sería posicionarse entre las dos comillas "Broly7" y reemplazarlo por lo que sea pero con tu ejemplo creo que me puede servir. Porque yo ya tenia la idea de hacerlo mediante el memo pero no que´ria, yo creía que se podía hacer con la función assignfile.

Gracias.
Responder Con Cita
  #4  
Antiguo 10-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Hay una función que se llama Pos.
Ésta función recibe 2 argumentos:
1) Substring a buscar (en tu caso "Broly").
2) String donde lo vas a buscar.
Te devuelve un entero, que es la posición donde empieza el texto que buscas, sino te devuelve 0.
Saludos!
Responder Con Cita
  #5  
Antiguo 10-03-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 17
afunez2007 Va por buen camino
Lightbulb

Yo lo hago asi:

Código Delphi [-]
Uses StrUtils;

Memo1.text:=AnsiReplaceStr(Memo1.text, 'set account 'Broly7'', '');

Ojala te sirva

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
Responder Con Cita
  #6  
Antiguo 10-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Como lo dice afunez2007 va a dar error por el tema de las comillas, deberías poner el substring asi:
'set account ''Broly7'''
Sí, ves bien. Son 2 comillas simples antes de Broly7 y 3 comillas simples luego de Broly7.
Eso 2 comillas simples unidas son tomadas por el compilador como una comilla simple dentro del string. Las 3 comillas simples unidas significa 2 comillas para agregar una simple al string, y 1 comilla final para terminar el string.
Saludos!
Responder Con Cita
  #7  
Antiguo 10-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Como bien te dice afunez2007, también puedes utilizar la función AnsiReplaceStr, añadiendo un poquito, para que StringReplace funcione como la función AnsiReplaceStr, debes añadir la opción rfIgnoreCase (Memo1.Text := StringReplace(.., '', [rfReplaceAll, rfIgnoreCase]), las formas remplazan el segundo por tercer parámetro en todo el texto sin hacer diferencia entre mayusculas y minusculas.

En mi primer mensaje yo puse lo de las comillas para que las reconociera.

Cita:
Empezado por broly7 Ver Mensaje
yo creía que se podía hacer con la función assignfile.
También se puede hacer de esa forma, pero son mas líneas de codigo.

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.
Responder Con Cita
  #8  
Antiguo 10-03-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 17
afunez2007 Va por buen camino
Lightbulb

Cita:
Empezado por afunez2007 Ver Mensaje
Yo lo hago asi:

Código Delphi [-]Uses StrUtils; Memo1.text:=AnsiReplaceStr(Memo1.text, 'set account 'Broly7'', '');


Ojala te sirva

Saludos
Perdon no me di cuenta, lo he corregido y de esta forma funciona correctamente:

Código Delphi [-]
Memo1.text:=AnsiReplaceStr(Memo1.text, 'set account '+QuotedStr('Broly7'), '');

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!

Última edición por afunez2007 fecha: 10-03-2010 a las 18:57:45.
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
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Buscar desde Delphi una cadena en PDF Jose Manuel Varios 0 17-06-2004 19:31:16
Buscar número en cadena torito Varios 4 19-04-2004 19:05:25
buscar dato de una cadena noe SQL 5 10-02-2004 18:58:20
Buscar cadena dentro de otra cadena doverzhoff Varios 4 27-01-2004 05:27:15


La franja horaria es GMT +2. Ahora son las 03:25:14.


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