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 03-04-2008
octalh octalh is offline
Miembro
 
Registrado: feb 2008
Posts: 18
Poder: 0
octalh Va por buen camino
leer texto pero del final al inicio

Hola, alguien sabe una forma de leer texto pero alreves??, ocea de el final hacia el origen. o en su defecto alguna forma de guardar texto pero alreves, para que el final me quede al inicio y el inicio al final.

gracias
Responder Con Cita
  #2  
Antiguo 03-04-2008
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.275
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
Lee la Guía de estilo.

Por favor, dedícale un poco más de tiempo a formular la pregunta correctamentre y a dar más detalles de cual es tu problema. No cobramos por palabras, así que no te preocupes puedes utilizas TODAS las que necesites sin problemas...
__________________
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
  #3  
Antiguo 03-04-2008
octalh octalh is offline
Miembro
 
Registrado: feb 2008
Posts: 18
Poder: 0
octalh Va por buen camino
ok disculpen si no me explique correctamente

la razon por la que quiero hacer esto es la siguiente

tengo una funcion que "corta" cadenas de texto usando Pos y PosEx

Cita:
function CopyEntre(Cadena:string; Desde,Hasta:string):string;
{

Ejemplo:
Cadena:='213123123[bloke]Devuelve esto[/bloke]23423423245';
Trozo:=CopyEntre(Cadena,'[bloke]','[/bloke]';
Trozo valdría: 'Devuelve esto'
}
var
Inicio,Final: integer;
begin
Result:='';
Inicio:=Pos(Desde,Cadena)+Length(Desde);
Final :=PosEx(Hasta,Cadena,Inicio);
If (Inicio>0) and (Final>Inicio) then Result:=Copy( Cadena, Inicio, Final-Inicio );
end;
tengo una variable tipo String que contiene una cadena de texto
ejemplo:

texto := 'ABCDE-HOLA+FGHIJ';
texto2 := CopyEntre(texto,'-','+')

La funcion "CopyEntre" corta todo lo que este entre - y + y me devuelve texto2 en este caso "HOLA", hasta aqui todo bien sin problemas

el problema es que esa string esta cambiando constantemente y despues tengo algo como esto

texto := 'ABCDE-HOLA+FGHIJ-ADIOS+KLMN';
texto2 := CopyEntre(texto,'-','+')

ahora quiero que la funcion "CopyEntre" me devuelva "ADIOS", pero en su lugar me sigue devolviendo "HOLA"

esto es porque la funcion que "corta" realiza la busqueda de cadenas de izquierda a derecha, ocea del inicio al final, por eso preguntaba como hacer este procedimiento pero de el final al inicio para obtener siempre el ultimo valor que se encuentre entre - y +
no se si exista una forma por ejemplo de guardar la posicion del ultimo caracter "+" y continuar desde ahi la prox busqueda y de esa forma saltar la primer frase

gracias.

Última edición por octalh fecha: 03-04-2008 a las 11:07:31.
Responder Con Cita
  #4  
Antiguo 03-04-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Dos opciones :

- Guardas en una variable global la última posición donde encontró el "separador"
- Pasas la posición donde quieres que comience el análisis como parámetro
Código Delphi [-]
function CopyEntre(s : string, sep1 : string; sep2 : string; var posicion : integer)
begin
...
   for i := posición to length(s) do
   begin
      {si encuentro sep2}
         {posición := i;}
         {salir y devolver resultado}
   end;
...
end;

pos := 1;
texto := 'ABCDE-HOLA+FGHIJ-ADIOS+KLMN';
texto2 := CopyEntre(texto,'-','+',pos);
{devuelve "HOLA"}
{pos habrá cambiado a 11}
texto2 := CopyEntre(texto,'-','+',pos);
{devuelve "ADIOS"}

Última edición por duilioisola fecha: 03-04-2008 a las 12:57:18.
Responder Con Cita
  #5  
Antiguo 03-04-2008
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 , también puedes hacerlo de esta forma, para que recorra toda la cadena y te devuelva todas las que encuentra entre - y +.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 texto, textoTmp, cadena : String;
 Inicio, Final : Integer;
begin
 texto := 'ABCDE-HOLA+FGHIJ-ADIOS+KLMN';
 textoTmp := texto;
 
 while Pos('-',textoTmp)>0 do
  begin
    Inicio := Pos('-',textoTmp);
    Final := Pos('+',textoTmp);
 
    cadena:=Copy( textoTmp, Inicio+1, Final-Inicio-1);
 
    textoTmp[Inicio] := '0';
    textoTmp[Final] := '0';

    showmessage(cadena);
  end;
end;

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
  #6  
Antiguo 03-04-2008
octalh octalh is offline
Miembro
 
Registrado: feb 2008
Posts: 18
Poder: 0
octalh Va por buen camino
Gracias a los dos por responder, me convence la forma de hacerlo guardando la posicion del ultimo separador y continuar desde ahi la prox busqueda.

Ya que no puedo hacer eso manual porque la string cambia constantemente y yo no puedo saber la cantidad de caracteres dentro de ella

esa forma de guardar el ultimo separador como variable global me parece muy buena pero no entendi muy bien el ejemplo, no se si el ejempo es de la primera o la segunda optativa que me has dado.

podrias ayudarme con algo de codigo para poder entender como podria hacer eso?

gracias
Responder Con Cita
  #7  
Antiguo 04-04-2008
octalh octalh is offline
Miembro
 
Registrado: feb 2008
Posts: 18
Poder: 0
octalh Va por buen camino
Pues al final lo solucione, solo que no de esa forma

resulta que si se pueden voltear las strings y funciono muy bien

dejo el codigo por si alguien lo necesita

Código:
Function String_Reverse(S : String): String; 
Var 
   i : Integer; 
Begin 
   Result := ''; 
   For i := Length(S) DownTo 1 Do 
   Begin 
     Result := Result + Copy(S,i,1) ; 
     T := result; 
   End; 
End;
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
Desde la fecha inicio hasta la fecha final que me grabe los meses contenidos Renis SQL 4 01-10-2007 17:21:44
Leer cada linea de un memo y como determinar si llego al final douglas OOP 15 28-09-2007 14:20:35
Leer varios archivos de texto y extraer solo 2 lineas de ese texto mp3968 Internet 1 17-05-2007 20:24:09
Cambiar texto botón inicio D@byt API de Windows 1 01-06-2005 13:17:57
PHP Guardar en archivo de texto (insertando al final) dmassive PHP 1 29-03-2004 18:43:44


La franja horaria es GMT +2. Ahora son las 09:13:58.


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