Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   obtener la ruta de una carpeta (https://www.clubdelphi.com/foros/showthread.php?t=41134)

zanetti26 08-03-2007 05:55:19

obtener la ruta de una carpeta
 
Que tal como estan:

Por favor alguien que pueda ayudarme, necesito encotrar un metodo el cual me permita obtener la ruta de una carpeta cuyo nombre sera dado por el usuario.
He tratado de encontrar este metodo pero solo encuentro: como encontrar la ruta de un archivo pero yo solo necesito la ruta de una carpeta.
Les agradeceria mucho si me ayudan a encontrar el metodo.
Gracias:)

dec 08-03-2007 10:17:01

Hola,

Partiendo del nombre de una carpeta no puedes averiguar su ruta así como así. Si el usuario sólo te proporciona el nombre de una carpeta debe ser porque dicha carpeta estará situada relativamente a algo... Es decir, supongamos por ejemplo que permites al usuario crear subcarpetas en la carpeta en que se encuentre el ejecutable de tu aplicación.

La carpeta donde se encuentra el ejecutable de tu aplicación puede obtenerse mediante la función "ExtractFilePath" (en la unidad "SysUtils"), por ejemplo. Si a esta función pasas como parámetro la ruta del ejecutable de tu aplicación (esta sí puedes conocerla) podrías luego crear una nueva carpeta con el nombre que indique el usuario.

Esto es...

Código Delphi [-]
const
  NOMBRE_CARPETA = 'mi carpeta';
var
  s: string;
begin
  s := ExtractFilePath(ParamStr(0) + NOMBRE_CARPETA;
  CreateDir(s);

  ShowMessage(Format('Tu carpeta se creó en la ruta "%s"', [s]));
end;

Ignoro si algo así es lo que estás buscando o tal vez es otra cosa y yo voy perdido... En todo caso bienvenido a los Foros. No dejes de revisar la guía de estilo de los mismos, y de utilizar su buscador y los distintos apartados del ClubDelphi (trucos, enlaces, etc.) antes de lanzar tus preguntas, puesto que es posible que estas tengan ya una o varias respuestas.

zanetti26 08-03-2007 17:29:01

Gracias por la bienvenida
 
Te agradezco mucho la bienvenida.
Tal vez y me explique mal: el truco que pasaste es apra crear una carpeta en una ruta especifica, pero lo que yo quiero es buscar una carpeta ya existente mediante un buscador que viaje por todas las rutas del sistema entonces el usuario va a dar una parametro por ejemplo:

String:: 'mi carpeta';

y que el sistema busque ese string y cuando lo encuentre me muestre algo parecido como:

Se encontraron las siguentes rutas:

C:\Documents and Settings\Administrador\Escritorio\proyectos\mi carpeta

C:\Documents and Settings\Administrador\Mis documentos\Mi música\mi carpeta

Esto es algo parecido al bsucador de archivos de windows calro que yo solo busco carpetas.
Gracias y agradezco mucho tu antencion:)

seoane 08-03-2007 18:26:50

1 Archivos Adjunto(s)
Buscar una carpeta no se diferencia de buscar un archivo, y el código necesario para hacerlo lo puedes encontrar en la sección de trucos. Lo que aquí te propongo es algo diferente, al iniciar el programa se crea una lista con todos los directorios, luego al escribir en un edit se consulta la lista y se muestran las coincidencias en un memo, al mismo tiempo que se escribe.

zanetti26 08-03-2007 19:32:45

Muchas gracias la verdad me sirvio mucho tu ejemplo, te lo agradezco MUCH:). convine tu metodo con el mio y la verdad quedo bien chido GRACIAS

zanetti26 08-03-2007 21:30:17

Disculpa por la molestia
 
:) Que tal yo molestando otra vez un favor.
El programa quedo muy bien,funciona de maravilla...
solo que si yo escribo por decir:
"MI CARPETA"
Y hay una carpeta que se llama igual pero esta en minusculas:
"mi carpeta"
No me lo detecta por que yo lo puse en mayusculas ya las que estan en minusculas las ignora.
Ay alguna manera de que no sea tan sensitivo? una funcion o algo asi.
Porfavor y Gracias

seoane 08-03-2007 21:45:03

Pues en donde pone:
Código Delphi [-]
if Pos(txtBuscar.Text,Carpetas[i]) > 0 then
Puedes poner:
Código Delphi [-]
if Pos(Uppercase(txtBuscar.Text),Uppercase(Carpetas[i])) > 0 then
Aunque como cabe esperar esto hará que la búsqueda sea mas lenta.

santus 08-03-2007 21:57:17

UpperCase
 
Pues.. bien.. nose si te servirá pero tienes una funcion que se llama UpperCase en donde le pasas un string y te lo devuelve en mayusculas.

Seria algo asi:
Código:


Function ConvertirAMayusculas(CadenaMinuscula:String):String;
Begin
  Result := UpperCase(CadenaMinuscula);
end;

Quiza poniendo la propiedad "CharCase" en tu Edit en "ecUpperCase" y con la funcion en el otro texto puedas tener coincidencias. Espero haberte sido de utilidad. Saludos.:)

JAVH 09-03-2007 02:51:09

Por qué no intentas SHBrowseForFolder???

Código:

http://www.cryer.co.uk/brian/delphi/howto_browseforfolder.htm
Saludos.


zanetti26 10-03-2007 02:23:20

Muchas Gracias Por Su Ayuda
 
Muchas gracias la verdad me fue util su ayuda espero encontrarmelos pronto y gracias de Nuevo
_________
zanetti26


La franja horaria es GMT +2. Ahora son las 21:30:35.

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