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 18-10-2005
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
ubicar archivo, con datos sacados de base de datos

Hola,

Tengo una aplicación en delphi 6 con IB7.
Le he añadido un procedimiento que me abre la carpeta en la que tengo, a su vez, una carpeta por usuario.

Cada usuario de la aplicación tiene una ficha, y un número asociado único.

Las carpetas personales de cada usuario tienen la siguiente forma de nombrarse.

si el usuario es el 10368 y su apellido es GARCÍA PÉREZ, sería:

0010368 · GARCIA

ESto es, 7 valores para el nº de usuario, (con ceros a la izq si es necesario), espacio, el puto catalán, espacio, el primer apellido.

Mi problema es el siguiente:

Necesito abrir, en cada ficha, la carpeta concreta de cada usuario, sería coger el nº de usuario, que en la base de datos lo tengo en integer, el problema es que si no pongo el nombre exacto de la carpeta no soy capaz de que me la abra.

¿Habría alguna manera de que se buscase el nº de usuario, esto es, que yo pusiese '*' + numerodeusuario.asstring + '*', como pasa en el "buscar archivos o carpetas" del windows.

EStoy usando el siguiente ShellExecute:

Código:
PathAlumni := xpath+ '*' + FrmDModule.TablaNUMUSUARIO.AsString + '*';


shellexecute(self.Handle, PChar('open'), PChar('explorer.exe'), PChar(PathAlumni), nil, SW_SHOWNORMAL);

Muchas Gracias,

Virginia Romero
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #2  
Antiguo 18-10-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Buenas!


Puedes pasar a String el número de usuario y añadir los ceros por la izquierda hasta que la cadena tenga 7 dígitos?

Código Delphi [-]
  var temp : String
 
 
 
  temp := IntToStr(codigo);
  while length(temp) < 7 do temp = '0'+temp;

y te queda en temp el código del usuario correctamente formateado

Un saludo

Edu
Responder Con Cita
  #3  
Antiguo 18-10-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Giniromero
0010368 · GARCIA
ESto es, 7 valores para el nº de usuario, (con ceros a la izq si es necesario), espacio, el puto catalán, espacio, el primer apellido.
Virginia Romero
Qué quiéres decir con eso?
Responder Con Cita
  #4  
Antiguo 18-10-2005
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Hola,

Código:
Puedes pasar a String el número de usuario y añadir los ceros por la izquierda hasta que la cadena tenga 7 dígitos?
Si, lo he pensado, pero que pasa con la parte del apellido, es el primer apellido, nada más, y el campo en el que tengo los apellidos, tengo los dos apellidos guardados, por lo que no tengo manera de identificar ese primer apellido, y como tengo que poner el nombre exacto de la carpeta para que me la abra...

Código:
ESto es, 7 valores para el nº de usuario, (con ceros a la izq si es necesario), espacio, el punto catalán, espacio, el primer apellido.
esto es: si por ejemplo el nº de usuario es el 3, y el primer apellido es DE LAS HERAS, sería,
0000003 · HERAS.

Por cierto, no era el puto catalán, sino el punto catalán, esto es el punto del 3, ha sido un error tipográfico , glup, lo siento.


Virginia Romero
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #5  
Antiguo 18-10-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Buenas!


Pues como no añadas un campo en la tabla de usuarios en el que dejes el primer apellido separado del resto y lo pilles de ahí...

No sé, no sé...

Edu
Responder Con Cita
  #6  
Antiguo 18-10-2005
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Buenas,

¿se te ocurre alguna otra forma de abrir una carpeta?¿algún otro objeto que no sea el shellexecute y que me pueda servir para hacer esto?

¿Algún sitio donde poder documentarme mejor del ShellExecute?

Muchas Gracias

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #7  
Antiguo 18-10-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Vale, prueba esto:


Código Delphi [-]
procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr = faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;

Este procedimiento te devuelve una lista de todos los subdirectorios que contiene uno dado; por ejemplo, se puede llamar de la siguiente forma:

Código Delphi [-]
 
var datos : TStringList;
begin
datos := TStringList.create;
ListFileDir('c:\windows\', datos);
 
...
 
end;

y en datos tendrás una lista de todos los subdirectorios de c:\windows.

A partir de ahí, si tienes en código del usuario ya formateado a 7 caracteres (y es único) puedes encontrar el nombre completo si buscar el elemento de la lista 'datos' que empieza por éste código.

Te sirve?

Edu
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


La franja horaria es GMT +2. Ahora son las 01:52:39.


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