Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Cortar path de diferente longitud

Buenas Tardes, eh buscado en los foros, pero ninguno tiene una idea concreta de lo que necesito.

Tengo un path, donde este puede variar, depende de la dirección donde el usuario desee guardar una carpeta, dicha carpeta es de donde quiero comenzar a trabajar, para eso quiero cortar todo lo que este atrás del nombre de la carpeta, como puedo hacer eso

Por ejemplo
path := 'C:\documentos\trabajos\tareas\...'
'C:\exposicion\tareas\...'

Trabajar a partir de tareas, el resto del path quitarlo, el restante guardarlo en una variable, espero puedan ayudarme.

Saludos cordiales.
Responder Con Cita
  #2  
Antiguo 04-10-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, pero el ejemplo confunde, ¿"exposicion" de dónde ha salido?
Responder Con Cita
  #3  
Antiguo 04-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Hola Casimiro, es un ejemplo, puede ser un path cualquiera, en este ejemplo puse dos path, para ejemplificar que el tamaño sera diferente segun donde el usuario desee guardar la carpeta, pero todos coinciden, por ejemplo una carpeta llamada 'Tareas' a partir de esa carpeta y todo lo que contenga, es donde comenzare a trabajar, para esto necesito quitar o eliminar todo el path detras de esta carpeta

Porque estaba trabajando con el comando StuffString, pero ese sirve si conoces la longitud del path, y en este caso va a tener varios tamaños. espero me haya explicado.
Responder Con Cita
  #4  
Antiguo 04-10-2018
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.

No me termina de quedar claro...

¿ Como selecciona el usuario la ruta a la carpeta ?
¿ El nombre de la carpeta también lo elige el usuario ?
¿ La ubicación de dicha carpeta es independiente del de la aplicación ?


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 04-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Gracias por responder

1.- la selecciona con un botón que ya programe, ese path lo guarda en una variable
2.- El nombre de la carpeta ya esta definido
3.- la ubicación de la carpeta depende de donde el usuario diga que se va a descargar. ahi se va a guardar.
Responder Con Cita
  #6  
Antiguo 04-10-2018
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola.

Según dices, sin importar que path se seleccione siempre habrá un directorio dentro del path llamado "Tareas" (O puede ser otro pero siempre habrá esa constante).

Si es así, debes buscar esa constante y eliminar lo anterior. No entiendo aún cual es el incoveniente
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #7  
Antiguo 04-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Si, esa es mi duda, como encontrar esa constante? lo intente de varias formas pero no lo eh logrado, soy nuevo en delphi y sigo aprendiendo, y ahorita me atore en esto.

Si pueden apoyarme dándome un ejemplo o con algún método, se los agradecería mucho.
Responder Con Cita
  #8  
Antiguo 04-10-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El problema es que yo sigo sin entender exactamente la situación.
Bueno, veo que los demás compañeros tampoco se aclaran, tampoco lo entienden.
Responder Con Cita
  #9  
Antiguo 04-10-2018
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
¡Buscas la palabra!

Cita:
The ansipos function looks for a substring Needle in a string HayStack, returning the position in the string of the first occurence.

All Ansi commands support multi-byte and accented characters.

If the string is not found, 0 is returned.

The search is case sensitive.
http://www.delphibasics.co.uk/RTL.asp?Name=ansipos
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #10  
Antiguo 04-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
El problema es que yo sigo sin entender exactamente la situación.
Bueno, veo que los demás compañeros tampoco se aclaran, tampoco lo entienden.
Solamente quiero encontrar el nombre de la carpeta que todos los path tendran en comun, ya encontrado, quiero eliminar todo lo que este detras del nombre, y solo dejar lo que este despues de ese nombre de la carpeta.
Responder Con Cita
  #11  
Antiguo 04-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Cita:
Empezado por movorack Ver Mensaje
Lo pruebo y te informo movorack, muchas gracias
Responder Con Cita
  #12  
Antiguo 04-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Movorack, ya utilice AnsiPos, pero me dice donde comienza, tal vez sea una pregunta un tanto tonta, pero, ¿si quiero que me diga cual es el ultimo carácter de la carpeta, que seria por ejemplo

'Tareas\' seria que me dijera la ubicación de \ , como lo podría hacer?
Responder Con Cita
  #13  
Antiguo 04-10-2018
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
Cita:
Empezado por Missael Ver Mensaje
1.- la selecciona con un botón que ya programe, ese path lo guarda en una variable
Pero... mediante un botón no es posible seleccionar una ruta. Ese botón, ¿ Llama a un TOpenDialog ?, ¿ Maneja el valor de alguna cadena de algún TEdit ? ¿...?


Cita:
3.- la ubicación de la carpeta depende de donde el usuario diga que se va a descargar. ahi se va a guardar.
La misma pregunta anterior, ¿ Donde y como indica el usuario el valor de la ruta ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo 04-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Si, cuando da clic en el botón, aparece una pantalla donde escoge el usuario donde guardar su carpeta, utilizo SelectDirectory

Te comparto esa parte de mi código
Código Delphi [-]
procedure TForm2.ChangeClick(Sender: TObject);
begin
  Choose := 'C:\';
    if selectdirectory(Choose, options, 0) then
    begin
      ShowMessage('Directory selected');
      Form2.LLabelDirectory.Caption :=Choose;
    end
    else
    begin
      ShowMessage('Canceled action');
    end;
end;

Última edición por Casimiro Notevi fecha: 05-10-2018 a las 00:10:09. Razón: Poner etiquetas Delphi, no es una Cita !!!
Responder Con Cita
  #15  
Antiguo 05-10-2018
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Con lo que te dijo Movarack (Ansipos) lo puedes solucionar:



Código Delphi [-]
var
  position: Integer;
  cadena_path : String;
begin
  cadena_path:='C:\carperta\subcarpeta1\subcarpeta2\tareas\';
  position := ansipos('tareas', cadena_path);
  delete(cadena_path,1,position);
  Showmessage(cadena_path);
end;

No tengo delphi a la mano para probar el código, pero algo asi deberias aplicar...eso pudiera solucionar tu problema.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #16  
Antiguo 05-10-2018
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.

Ahora te entiendo. Una opción es que almacenes la ruta a la carpeta, de modo que al salir del form quede guardado el valor y al entrar se recupere.

Un ejemplo:
Código Delphi [-]
...
implementation

uses FileCtrl, IniFiles;

var
  CurrentPath: string;
  options : TSelectDirOpts = [sdAllowCreate, sdPerformCreate, sdPrompt]; // (?)

// Leer la ruta previa (si existe)
procedure TForm1.FormCreate(Sender: TObject);
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'prg.ini');
  try
    CurrentPath := ini.ReadString(Self.Name, 'LaCarpeta', 'C:\');
  finally
    ini.Free;
  end;
end;


// Elegir ruta
procedure TForm1.btnChangeDirClick(Sender: TObject);
begin
    if FileCtrl.SelectDirectory(CurrentPath, options, 0) then
    begin
      ShowMessage('Directory selected');
      //...
    end
    else
    begin
      ShowMessage('Canceled action');
      //...
    end;
end;

// Guardar nueva ruta (si se cambió)
procedure TForm1.FormDestroy(Sender: TObject);
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'prg.ini');
  try
    ini.WriteString(Self.Name, 'LaCarpeta', CurrentPath);
  finally
    ini.Free;
  end;
end;
También podes usar el registro de Windows para almacenar la ruta, pero por cuestiones de permisos este modo es mas fiable.

Saludos

Pd: Si te sirviera el código de ejemplo avísame y te lo adjunto.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #17  
Antiguo 05-10-2018
Missael Missael is offline
Miembro
NULL
 
Registrado: sep 2018
Posts: 37
Poder: 0
Missael Va por buen camino
Gracias a todos por sus respuestas, ya lo pude resolver, y no lo hubiera logrado sin su ayuda, Muchas gracias por su tiempo para explicarme este tema

Excelentes personas.
Responder Con Cita
  #18  
Antiguo 11-10-2018
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Y como lo resolviste...explica aqui...comparte porfa !...tal vez habrá alguien mas con las mismas dudas.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Cortar largo nodo en un Xml Leopard2 Varios 4 13-07-2016 06:20:55
Cortar decimales look OOP 4 29-12-2007 09:12:13
Cortar fichero de audio FDB Varios 0 27-04-2005 20:15:37
cortar cadena Supermagayin Varios 2 07-03-2005 23:04:41
Cortar Decimales PaLaSaca Varios 1 27-04-2004 03:01:17


La franja horaria es GMT +2. Ahora son las 00:58:52.


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