Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   funcion similar a PoS ? (https://www.clubdelphi.com/foros/showthread.php?t=48418)

waly2k1 24-09-2007 22:20:10

funcion similar a PoS ?
 
Muchachos he aquí una duda:

Busco una funcion similar a PoS, pero desde atras hacia adelante. Estoy modificando una aplicación de VB y hay funciones que no encuentro.

Y si no es mucho pedir... un ejemplo de apertura y lectura de un txt linea a
linea. Lo hacía con FileSystemObject, pero no veo en Delphi ejemplos del mismo.

Saludos y muchas gracias

jhonny 24-09-2007 22:35:06

La verdad es que no conozco o no recuerdo una función que haga eso que dices, pero podrias implemnetar la siguiente:

Código Delphi [-]
function PosR(SubCadena, Cadena :String):Integer;
begin
  Result := Pos(SubCadena, ReverseString(Cadena));
end;

Nota: ReverseString es una función que pertenece a la unidad StrUtils.

waly2k1 24-09-2007 22:39:53

Gracias Jhonny
 
Pero la funcion ReverseString me invierte la cadena, a no ser que la reinvierta nuevamente.

Te paso un texto así ves lo que intento hacer
CPU ATHLON 4400 X2 AM2 DUALCORE 129.79U$S

Acá lo que intento es ir al final de la cadena y tomar el string 129.79U$S
lo hago así porque es de longitud variable

Bueno al menos la logica está, si no veo nada similar uso tu ejemplo que tiene que funcionar. Muchas gracias!!!

jhonny 24-09-2007 22:49:14

ReverseString te devulve una cadena invertida, mas no te invierte la cadena como tal, un ejemplo:

Código Delphi [-]
Var
  MiCadena :String;
begin
  MiCadena := 'Ejemplo';
  ShowMessage(ReverseString(MiCadena));
  ShowMessage(MiCadena);  
end;
En el ejemplo anterior, puedes ver como despues de usar la funcion ReverseString, la variable MiCadena sigue teniendo el mismo valor.

waly2k1 24-09-2007 22:56:06

Ok Ok
 
ok ok me expresé mal.
si tengo la cadena 'CPU ATHLON 4400 X2 AM2 DUALCORE 129.79U$S'
la funcion PosR( ' ', Cadena ) me da el valor 10
a no ser que use RighStr(cadena, PosR( ' ', Cadena ) ) obtengo el valor
Juás salió!!!

pero como lo pensaba no me sirve, porque no tengo la posicion del ' ' antes del precio. No digo que me invierta la cadena original a no ser que pase el parametro como referencia y cambie el valor de dicho parametro en la funcion.


Bueno ya está, pruebo un poco y listo amigo
Muchas gracias como siempre.

maeyanes 24-09-2007 22:59:04

Para obtener la última subcadena puedes hacer algo como:

Código Delphi [-]
function GetLasToken(Str: string): string;
var
  TempStr: string;
  P: Integer;

begin
  TempStr := Str;
  P := Pos(' ', TempStr);
  while P > 0 do
  begin
    Delete(TempStr, 1, P);
    P := Pos(' ', TempStr)
  end;
  Result := TempStr
end;


Saludos...

waly2k1 24-09-2007 23:07:58

Bien, muchas gracias!!!
 
Bueno muchachos gracias por los ejemplos
usando un poco de logica siempre se consigue hacer lo que se desea, pero
creo debe haber una función definida que haga esto. Igualmente ya está solucionado con los ejemplos brindados.

Pero y el manejo del archivo de texto, hum... juás ya que estamos abusemos un poco de sus generosidades.

Muchas gracias!!!

Tiaguito_Power 27-02-2008 14:44:28

TextFile!
 
Parece ser un poco tarde pero estaba viendo el foro y vi tu inquietud respecto a los archivos de texto......
Para poder abrirlos podes usar un OpenDialog.... te muestro un ejemplo si no te molesta...

Var Archivo: TextFile;
Aux:String;
Begin
If OpenDialog.Execute Then
Begin
AssignFile(Archivo, OpenDialog.FileName);
Reset(Archivo);
ReadLN(Archivo,Aux);
ShowMessage(Aux);
End;
Quiza sea medio tarde pero bue... espero sirva:confused:

ixMike 27-02-2008 22:23:32

Yo creo que si buscas "hola" en "hola, se me va la chola", pues busca la invertida de "hola" dentro de la invertida de la otra y ya está ;)


Salu2 :)


La franja horaria es GMT +2. Ahora son las 09:57:51.

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