Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
leer palabras de ficheros de texto

necesito leer palabra a palabra un fichero de texto. que metodo debo usar?
con read que se lee? en java he usado el StringTokenizer para separar las palabras al leer una fila con el readLine del BufferedReader asociado al FileReader.
muchas gracias
Responder Con Cita
  #2  
Antiguo 20-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
implementa estas dos funciones y la variable siguiente:

Código Delphi [-]
var
  vContenido: string;

implementation

procedure LoadFileTxt(fname: string);
var
  vTxtFile: TextFile;
  vLine: string;
begin
  vContenido := '';
  AssignFile(vTxtFile, fname);
  Reset(vTxtFile);
  while not Eof(vTxtFile) do
    begin
      Read(vTxtFile, vLine);
      vContenido := vContenido + vLine + ' ';
    end;
  CloseFile(vTxtFile);
end;

function GetPalabra(index: Integer): string;
var
  vSubStr, vWord: string;
  WordCount: Integer;
begin
  WordCount := 0;
  vSubStr := TRIM(vContenido) + ' ';
  while WordCount < index do
    begin
      if vSubStr = ' ' then
        begin
          vWord := '';
          break;
        end;
      vWord := Copy(vSubStr, 1, Pos(' ', vSubStr));
      vSubStr := TRIM( Copy(vSubStr, Length(vWord), Length(vSubStr))) + ' ';
      Inc(WordCount);
    end;
  Result := vWord;
end;

un ejemplo de uso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadFileTxt('C:\aeff.txt');
  Caption := GetPalabra(3);
end;

espero que te sirva,

saludos

aeff
Responder Con Cita
  #3  
Antiguo 20-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
pueden haber métodos mas eficientes, pero ese es el que mas rápido se me ocurrio
Responder Con Cita
  #4  
Antiguo 21-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
gracias

gracias,
y que metodo se utiliza para saber si hemos llegado al final del fichero? es que tengo q recorrerlo entero leyendo palabra a palabra.
Responder Con Cita
  #5  
Antiguo 21-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
perdona... ya lo he encontrado en tu codigo. muchas gracias otra vez
Responder Con Cita
  #6  
Antiguo 21-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
me parece que lo que me has enviado no me sirve en este caso.
como puedo dividir un texto en sus palabras sin saber la longitud de cada una de ellas? (similar al stringTokenizer en java)
siento incordiar tanto.
Responder Con Cita
  #7  
Antiguo 21-10-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Puedes utilizar la clase TStringList.

Código Delphi [-]
  sl := TStringList.Create;

  sl.LoadFromFile('c:\archivo.txt');
  sl.Delimiter := ' ';
  sl.DelimitedText := sl.Text;
  
  for i := 0 to sl.Count - 1 do
    Memo1.Lines.Add(sl[i]);

  sl.Free;
__________________
Saludos.
Responder Con Cita
  #8  
Antiguo 21-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
gracias. con lo de antes y lo de ahora podre hacer todo. muchas gracias a los dos. muchas gracias
Responder Con Cita
  #9  
Antiguo 21-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
oye basti, ya se que alba13 encontró lo que quería, pero ¿que quizo decir con esto?

Cita:
como puedo dividir un texto en sus palabras sin saber la longitud de cada una de ellas? (similar al stringTokenizer en java)
no entiendo!
Responder Con Cita
  #10  
Antiguo 21-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
tengo un subprograma que dado un fichero de texto, en mi caso el quijote.txt busca una palabra que introduce el usuario en dicho fichero. yo hasta que aeff me ha ayudado solo sabia leer por filas, y lo que queria era separar el fichero en palabras, no en filas para ir comparando una a una las palabras.
¿ahora si?
por cierto, lo he solucionado perfectamente. me funciona bien toda la aplicacion de delphi, muchas gracias a todos por vuestro tiempo, a ver que tal me sale el proyecto.
un saludo
Responder Con Cita
  #11  
Antiguo 21-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
ahhhhhhhh! lo que querías era separar el fichero.txt palabra a palabra, ok ok, si lo hubieras especificado desde el principio, cuando revisé tu post entonces hubiera programado para ello, de todas formas ya lograste lo que querias y eso es lo que vale,

SUERTE EN TU PROYECTO!

saludos
aeff
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
Leer varios archivos de texto y extraer solo 2 lineas de ese texto mp3968 Internet 1 17-05-2007 20:24:09
Leer ficheros Mac en Delphi thagson Varios 6 23-08-2006 14:12:08
voz a texto, sacar palabras de audio sakuragi Varios 2 28-07-2006 19:35:31
Leer palabras de una cadena Tecnic2 OOP 2 08-07-2005 17:04:36
Cambiar texto o palabras de un archivo dfm HombreSigma OOP 3 29-07-2003 23:50:54


La franja horaria es GMT +2. Ahora son las 22:18:39.


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