Ver Mensaje Individual
  #3  
Antiguo 03-04-2008
octalh octalh is offline
Miembro
 
Registrado: feb 2008
Posts: 18
Reputación: 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