Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-11-2005
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
Tipo de datos de determinados valores enteros

Hola y muchas gracias por dedicarme vuestro tiempo!
He estado buscando todas las combinaciones posibles da valores integer que devuelve la propiedad Attr de un TSearchRec (TSearchRec.Attr), los valores más comunes son 16 o 17 (en ambos casos hay las mismas propiedades), pero luego hay otros tipos diferentes de atributos para carpeta como 18, 48, 50, ...
Al final me sale una buena lista. Para qué todo esto?
Pues estaba intentando crear un procedimiento para listar en un TTreeView sólo las carpetas (de cualquier tipo) de un directorio. Habia pensado en algo así:
Código Delphi [-]
procedure TForm1.GetFolders(CurrLocalPath: String);
var
    SearchRec: TSearchRec;
begin
  TreeView.Items.Clear;

  SearchRec.ExcludeAttr := 32; 
  if FindFirst(IncludeTrailingPathDelimiter(CurrLocalPath)+'*.*', faAnyFile,
     SearchRec) = 0 then
      repeat
      if SearchRec.Attr  {el valor de la propiedad Attr es igual a alguno de estos numeros: 
16, 17, 18, 48, 50, 2064, 2066, 2096, 2098,  8208, 8210, 
8240, 8242,10256, 10258, 10288, 10290, 16400, 16402, 16432, 16434, 24592, 24594, 24624,246269} then
        TreeView.Items.Add(nil,SearchRec.Name);
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
end;
El problema está en la condicion IF SearchRec.Attr = ... THEN ..., como lo hago para comparar todos esos numeros en un sólo if? Probé de hacer un tipo de archivo:
Código Delphi [-]
  TDirs = (16, 17, 18, 48, 50, 2064, 2066, 2096, 2098,  8208, 8210, 
8240, 8242,10256, 10258, 10288, 10290, 16400, 16402, 16432, 16434, 24592, 24594, 24624,246269);
Peró me recordaron que no se puede hacer esto con valores integer.
También probé de hacer:
Código Delphi [-]
if SearchRec.Attr in[16, 17, 18, 48, 50, 2064, 2066, 2096, 2098,  8208, 8210, 
8240, 8242,10256, 10258, 10288, 10290, 16400, 16402, 16432, 16434, 24592, 24594, 24624,246269] then
{...}
Pero me provoca un error al compilar partir del número 2064:
[Error] Main.pas(355): Constant expression violates subrange bounds

Qué puedo hacer? Estoy perdido.
Muchas gracias de nuevo por dedicar vuestro tiempo a leer mi pregunta, y más agradecido si me contestais.
__________________
l2prog.co.nr
Responder Con Cita
 



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 06:32:31.


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