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 06-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
Question ayuda con arvhivos de textos y arreglos en delphi

Hola mundo.! tengo un problemilla.! tengo esta cadena : < hola> <mundo> y quiero guardar "hola" en una variable y "mundo" en otra.! eliminando los delimitantes <>.! por favor ayudenme.!
Responder Con Cita
  #2  
Antiguo 06-02-2011
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 twister y bienvenido a Club Delphi.

Código Delphi [-]
procedure QuitarMayorMenor(const Value: string; var s1,s2: string);
var
  i: Integer;
begin
  s1:= '';
  for i:= 1 to Length(Value) do
    if not(Value[i] in ['<', '>']) then
      s1:= s1 + Value[i];
  s2:= Copy(s1, Pos(' ', s1)+1, MaxInt);
  Delete(s1, Pos(' ', s1), MaxInt);
end;

Llamada de ejemplo:
Código Delphi [-]
...
var
  Cad1,Cad2: string;
begin
  QuitarMayorMenor(' ',Cad1,Cad2);
  ShowMessage(Cad1+#10#13+Cad2);
end;
...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 06-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
ayudamee :S

bueno gracias!! pero no me funciono!! en realidad leo de un archivo de trexto esta cadena HOLA MUNDO <var1> <var2> necesito sacar var1 y var2 para utilizarlas dentro del programa... el q tu me enviastes lo use pero no me arroja nada!!
Responder Con Cita
  #4  
Antiguo 06-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
...

mira esto es lo q utilizo para q me devuelva el valor,

procedure ExtraeCadena(cadena: string): string;
begin
result:=copy(cadena,pos('<',cadena)+1,pos('>',cadena)-pos('<',cadena)-1);
end;

pero solo lo hace para "var1" y no me trae "var2" puedes revisarlo a ver si se puede hacer de la misma forma para traer var2??
Responder Con Cita
  #5  
Antiguo 06-02-2011
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 de nuevo.

El procedimiento que te puse funciona correctamente para la petición que hiciste en el primer mensaje quitando los símbolos < y > y almacenando en dos variables las dos cadenas que están separadas por un espacio.

En el ejemplo de llamada apareció un ' ' y no '<hola> <mundo>' por un problema que provocan los símbolos '< >' dentro de las etiquetas [delphi] y [/delphi] . Si ponés el texto dentro de las comillas simples, funcionará.

Te pongo otro ejemplo con una tercera variable que supuestamente tendría almacenada la cadena leida del archivo de texto:
Código Delphi [-]
...
var
  Cad1,Cad2, Txt: string;
  ...
begin
  Txt:= 'menor_hola_mayor menor_mundo_mayor'; // reemplaza menor_ y _mayor por sus símbolos correspondientes
  QuitarMayorMenor(Txt , Cad1,  Cad2);
  ShowMessage(Cad1 + #10#13 + Cad2);
end;
...

El procedimiento sigue siendo el mismo.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-02-2011 a las 05:02:11.
Responder Con Cita
  #6  
Antiguo 06-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
o.o

no me funciona :S tal vez no entiedas lo q en realidad quiero hacer!! o.o
Responder Con Cita
  #7  
Antiguo 06-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
o.o

podrias agregarme al msn para explicar bien!!

Última edición por ecfisa fecha: 06-02-2011 a las 05:14:18. Razón: Quitar dirección de correo privado.
Responder Con Cita
  #8  
Antiguo 06-02-2011
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.

Hice la prueba y funciona correctamente de acuerdo a la condicion que expusiste: <cadena1> espacio <cadena2>.

Para comprobarlo, copia y pega lo siguiente:
Código:
procedure QuitarMayorMenor(const Value: string; var s1,s2: string);
var
  i: Integer;
begin
  s1:= '';
  for i:= 1 to Length(Value) do
    if not(Value[i] in ['<', '>']) then
      s1:= s1 + Value[i];
  s2:= Copy(s1, Pos(' ', s1)+1, MaxInt);
  Delete(s1, Pos(' ', s1), MaxInt);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  Cad1,Cad2, st: string;
begin
  st:= '<hola> <mundo>';
  QuitarMayorMenor(st ,Cad1, Cad2);
  ShowMessage(Cad1+#10#13+Cad2);
end;
Usé otras etiquetas, para que puedas copiar y pegar el ejemplo tal como es.


Nota: Si lees la guía de estilo , verás que dice: No solicites que te respondan por correo en privado.
(Por lo que borro el mismo de tu mensaje anterior)


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-02-2011 a las 05:22:54.
Responder Con Cita
  #9  
Antiguo 06-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
o.o

hola

ups sorry no sabia!! xD bueno dejame probar ese para ver gracias!!
Responder Con Cita
  #10  
Antiguo 06-02-2011
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
No hay problema twister, ya irás familiarizandote con el estilo y las etiquetas.

Cualquier problema que tengas, seguí presentándolo.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 06-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
o.o

ok esta bien!! bueno creo q no me explique y me enviaste unas soluciones a otro problema pero creo q si me dices como introducir cada palabra de la cadena q leo del archivo en un arreglo tambien solucionaria mi problema!! ejemplo

si tengo HOLA MUNDO <var1> <var2>

entonces necesito q HOLA ESTE EN LA PRIEMRA POSICION DEL ARREGLO

MUNDO en la segunda posicion

<var1> en la tercera posicion!!

<var2> en la cuarta posicion!!

sin importar espacios entre las palanbras.......

lo q en realidad necesito traer toda la linea del archivo para verificar su sintaxis y ver si esta bien escrita.... var1 y var2 son valores enteros q debo extraer para hacer operaciones en el programa...

y disculpa la molestia
Responder Con Cita
  #12  
Antiguo 06-02-2011
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
Cita:
Empezado por twister Ver Mensaje
pero creo q si me dices como introducir cada palabra de la cadena q leo del archivo en un arreglo tambien solucionaria mi problema!!
Hola twister, no es ninguna molestia.

A ver si de este modo te sirve:
Código Delphi [-]
function LineasAPalabras(const: NomArch: string; Delimitador: Char): TStrings;
var
  Txt: TextFile;
  TS: TStrings;
  st, Linea: string;
begin
  AssignFile(Txt, NomArch);
  Reset(Txt);
  st:= '';
  while not Eof(Txt) do
  begin
    Readln(Txt, Linea);
    st:= st + Linea;
  end;
  CloseFile(Txt);
  Result:= TStringList.Create;
  Result.Delimiter:= Delimitador;
  Result.DelimitedText:= st;
end;

Ejemplos de uso:
Código Delphi [-]
...
begin
  try
    TS:= TStringList.Create;
    TS:= LineasAPalabras('C:\TU_ARCHIVO.TXT',' '); // TS[0] = primer palabra, ...,  TS[TS.Count-1] = última palabra
    // Acceder a cada una de las palabras
    for i:= 0 to TS.Count - 1 do
      ShowMessage(TS[i]);  // aca haces lo que gustes
  finally
    TS.Free;
  end;
end;

Otro ejemplo:
Código Delphi [-]
     Memo1.Lines:= LineasAPalabras('C:\TU_ARCHIVO.TXT',' ');

La función requiere que le envíes el nombre del archivo (Ruta+Nombre) y el delimitador que usará para distinguir una palabra de otra.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-02-2011 a las 06:59:10.
Responder Con Cita
  #13  
Antiguo 06-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
o.o

copie todo tal cual!! y bueno ya habia usado varias funciones pero no me sirven! :S me dicen q hay error indentifier expected but ':' found despues de la const: se q es algo con los 2 puntos pero cualquier funcion q pongo me da error :S
Responder Con Cita
  #14  
Antiguo 06-02-2011
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
Te pido mil disculpas twister, el error de tipeado es mio !!!!

Quitá los dos puntos luego de const.

La línea tiene que quedar:
Código Delphi [-]
function LineasAPalabras(const NomArch: string; Delimitador: Char): TStrings;


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-02-2011 a las 08:06:16.
Responder Con Cita
  #15  
Antiguo 08-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
o.o

hola ecfisa como estas?

pudimos correr el codigo pero cuenta todas las palabras q hay en el arcihivo y en realidad no necesitamos eso!! solo necesito q guarde las palabras de la primera linea y despues para la segunda linea q empiece desde 0 otra vez el contador para guardar las palabras q hay en la segunda linea!!!

ejm:

si en la primera linea hay cuatro palabras el va a guardar esas palabras y necesitamos comparar cada una de las palabras con otras palabras q tengo.

y el codigo q tu nos mandastes cuentas las palabras y las guarda pero si en la primera linea hay 4 palabras esta bien las cuenta, pero al bajar a la segundo linea empieza a contar desde el 4 para adelante.

osea q si entre la primera y la sengunda linea hay 8 palabras el valor de [i] va a llegar hasta 8... ME EXPLICO???
Responder Con Cita
  #16  
Antiguo 08-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
Question ayuda con arvhivos de textos y arreglos en delphi

hola alguien sabe de alguna funcion en delphi que pueda leer una linea desde un archivo de texto y guardar cada palabra en una posicion de un ARREGLO?? ojo es un arreglo no necesito listas!! las lineas en el arvhico pueden ser N lineas y cada linea puede tener N palabras. agradeceria su ayuda...

Última edición por twister fecha: 08-02-2011 a las 02:57:31.
Responder Con Cita
  #17  
Antiguo 08-02-2011
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 twister.

Por favor no repitas mensajes.
Un mensaje tuyo con igual contenido estaba en el foro 'noticias' con el título ":(" que por otro lado, nada tiene que ver con tu consulta.
Muchas gracias.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 08-02-2011 a las 03:25:54.
Responder Con Cita
  #18  
Antiguo 08-02-2011
twister twister is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 12
Poder: 0
twister Va por buen camino
O.o

Es que no se como eliminarlo..!
Responder Con Cita
  #19  
Antiguo 08-02-2011
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 tiwster.

No, no podés eliminarlo una vez enviado, no te preocupes ya irás manejando el tema. Sólo te lo hago presente para que lo tengas en cuenta en el futuro.

Ahora a lo nuestro, no te sirvió el ejemplo con TStrings...

Bueno, aca te hice un ejemplo con un arreglo y te agregué comentarios en las líneas como mejor pude:
Código Delphi [-]

const
   MAXPALABRAS = 5000;

var
  v: array[1..MAXPALABRAS] of string;
 ix: Integer;

procedure TForm1.LineaAPalabras(NomArch: string);
var
  F: TextFile;
  p: Integer;
  s: string;
begin
  AssignFile(F, NomArch);  // asociár archivo a 'F'
  Reset(F);                // abrir para lectura
  ix:= 0;                  // inicializar indice arreglo
  while not Eof(F) do      // mientras no fin de archivo
  begin
    ReadLn(F, s);          // leer una línea
    s:= s + ' ';           // para obtener última palabra
    p:= Pos(' ', s);       // 1er palabra
    while p <> 0 do        // mientras haya palabras
    begin
      Inc(ix);                   // incrementar posición en arreglo
      v[ix]:= Copy(s, 1, p);    // guardar en arreglo
      s:= Copy(s, p+1, MaxInt); // quitar guardado
      p:= Pos(' ', s);          // proxima palabra
    end; // p<>0
  end;   // not Eof(F)
  CloseFile(F);           // cerrar archivo
end;

Ejemplo de llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i:Integer;
begin
  LineaAPalabras('PRUEBA.TXT');
  Memo1.ScrollBars:= ssVertical;
  Memo1.Clear;
  for i:= 1 to ix do
    Memo1.Lines.Add(v[i]);
end;

No lo creo, pero por si tenés algún problema, te adjunto el ejemplo funcionando.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-08-2011 a las 10:02:56.
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
Probleas con los arreglos edgwin OOP 1 27-08-2010 23:32:52
delphi y arreglos dinamicos vroa74 Varios 3 24-02-2007 12:21:41
Ayuda con arreglos !! Siegfried Varios 2 27-09-2006 20:43:53
AYUDA con arreglos pecosita C++ Builder 1 18-09-2006 22:00:50
Arreglos Lobo Varios 3 19-09-2003 00:09:19


La franja horaria es GMT +2. Ahora son las 04:07:56.


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