Listando arquivos de um diretório com biblioteca D2KWUTIL

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
jackie_0704
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Qui, 10 Jan 2008 1:26 pm
Localização: Portlo Alegre - RS

Pessoal,

Como faço, no forms, para abrir um diretório e listar os arquivos que tem dentro dele, utilizando essa biblioteca?
Eu criei um form de teste, que contém um campo "diretorio" e outros campos denominados "arquivos". Ambos os campos "diretório" e "arquivos" são base table.

Depois de criar esse form, criei uma procedure e coloquei o código abaixo (retirado de um exemplo de listar arquivos de um diretório, da própria biblioteca D2KWUTIL):

Selecionar tudo

PROCEDURE list_files IS
    
    hSearch PLS_INTEGER;
    vcFile  VARCHAR2(60);
    bIsDir  BOOLEAN;
    BEGIN
       hSearch := win_api_directory_list.FirstFile('\*.*', vcFile, bIsDir, FALSE);

 -- Process the first file

 
-- Now iterate through the rest
       LOOP 
          win_api_directory_list.NextFile(hSearch, vcFile, bIsDir, FALSE);
          EXIT when vcFile is null;

  -- Process the next file and so on
 
      END LOOP;
      win_api_directory_list.CloseSearch(hSearch);
      
   END list_files;
  
END;
O que está faltando?
jackie_0704
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Qui, 10 Jan 2008 1:26 pm
Localização: Portlo Alegre - RS

Só para acrescentar.

A procedure acima foi colocada num botão (trigger when_button_pressed).

O que eu queria é, quando eu clicasse no botão, aparece uma janelinha dizendo pra mim selecionar um diretório (igual aquela janela padrão do windows, de "select a directory"), e logo em seguida de selecionar o diretório, aparecesse a lista de arquivos que ele contém.
jackie_0704
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 21
Registrado em: Qui, 10 Jan 2008 1:26 pm
Localização: Portlo Alegre - RS

Já consegui fazer o form selecionar um diretório qualquer. Mas, depois de selecionar o diretório, eu gostaria que o form listasse os arquivos dentro dele. Essa parte eu ainda não estou conseguindo fazer.

Abaixo, o código que eu tenho até agora:

Selecionar tudo

PACKAGE BODY XXTR001_PKGA IS
  
  PROCEDURE list_files IS
    
   VDIR VARCHAR2(200); 
   -- 
   hSearch PLS_INTEGER; 
   vcFile  VARCHAR2(60); 
   bIsDir  BOOLEAN; 
   vcLDir  VARCHAR2(1); 
   vcRDir  VARCHAR2(1);
    
   BEGIN
      :XXTR_ARQS.DIR_NAME := get_file_name(:XXTR_ARQS.DIR_NAME,NULL,NULL,'Selecione um Diretório',OPEN_FILE,FALSE); --||'\*.*' 
    
   --GO_BLOCK('XXTR_ARQS'); -- unico bloco do form 
   --CLEAR_BLOCK; 
   hSearch := win_api_directory_list.FirstFile(:XXTR_ARQS.DIR_NAME||'\EXP_*.TXT', vcFile, bIsDir, FALSE); 
   IF vcFile IS NULL 
   THEN RETURN; 
   END IF; 
    
   :XXTR_ARQS.ARQ_NAME := IsDir(vcFile, bIsDir); 
   LOOP 
      win_api_directory_list.NextFile(hSearch, vcFile, bIsDir, FALSE); 
      EXIT when vcFile is null; 
       CREATE_RECORD; 
       :XXTR_ARQS.ARQ_NAME := IsDir(vcFile, bIsDir); 
   end LOOP; 
    
      --GO_BLOCK('XXTR_ARQS'); 
   --FIRST_RECORD; 
    
   win_api_directory_list.CloseSearch(hSearch); 
   end; 
 END;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 22 visitantes