1

Konu: Klasör Listesi

Bir klasör içindeki alt klasörlerin isimlerini bir değişkene veya table ye atmak istiyorum. Mecut klasörlerin listesini nasıl alabilirim?

2

Re: Klasör Listesi

Bence en pratigi VFP ile gelen filer.dll. Ancak baska yollarda var:

Adir ile:

Visual Fox Pro
GetSubDirs(GetDir(),'myDirectories')

locate
BROWSE
USE IN 'myDirectories'
 
procedure GetSubDirs
    lparameters tcPath, tcCursorName
    local lcCurDir, ix
    local array laDirs[1]
    lcCurdir = ADDBS(m.tcPath)
    IF !USED(m.tcCursorName)
        CREATE CURSOR (m.tcCursorName) (FolderPath c(250))
    endif
    insert into (m.tcCursorName) values (m.lcCurdir)
    for ix = 1 to adir(laDirs,m.lcCurdir+"*.*","DHS")
        if laDirs[m.ix,1]#"." AND "D"$laDirs[ix,5]
            GetSubDirs(m.lcCurdir+laDirs[m.ix,1], m.tcCursorName)
        endif
    endfor
endproc

Filer.dll ile:

Visual Fox Pro
? GetTree( GetDir() )

locate
Brow
 
Function GetTree
  Lparameters tcStartDir
  Create Cursor folderlist (filepath c(250))
  oFiler = Createobject('filer.fileutil')
  With oFiler
    .SearchPath = m.tcStartDir
    .Subfolder = .T.
    .FileExpression = '.'
    .Find(0)
    For ix=1 To .Files.Count
      With .Files(ix)
        If Bittest(.Attr,4)
          Insert Into folderlist (filepath) values (.Path)
        Endif
      Endwith
    Endfor
    Return .Files.Count
  Endwith

Not: Filepath icin M kullanmak daha uygun, sonuclar rahat gorunsun diye c(250).

3 Son düzenleyen, astronot (08.04.2008 08:50:30)

Re: Klasör Listesi

clear
LOCAL ix, oFiler
oFiler = Createobject('filer.fileutil')

With oFiler
  .SearchPath     = 'C:\'
  .FileExpression = '*.xls'
  .Subfolder      = 1
  .Find( 0 )
  For ix=1 To .Files.Count
    With .Files(m.ix)
        dosya=.Path+.Name
        if file(SYS(5) + SYS(2003)+'\' +justfname(m.dosya ) )=.T. then
              copy file (m.dosya) to (SYS(5) + SYS(2003)+'\' +sys(2015)+'_'+justfname(m.dosya))
           
        ELSE
            copy file (m.dosya) to (SYS(5) + SYS(2003)+'\' + justfname(m.dosya) )
        endif
     Endwith
  ENDFOR
ENDWITH


bilgisayarda fox kurulu olmasına rağmen filer.fileutil satırı hata veriyor. bunun için projeye filer.dll eklenmesi gereklimi? başka bir bilgisayarda da çalışmadı. programı başka bir bilgisayarda çalıştırmak için runtime kurmak yeterlimidir?

4

Re: Klasör Listesi

Filer.dll COM. O bilgisayarda reister edilmesi gerekiyor.

5 Son düzenleyen, astronot (08.04.2008 09:01:52)

Re: Klasör Listesi

nasıl yapılıyor? bunu program içerisinden yapabiliyormuyuz?

6

Re: Klasör Listesi

!regsvr32 filer.dll

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

7

Re: Klasör Listesi

regsvr32 ya da intallshield kullan (installshield'in nasil kullanilacagi ornegi var, bana hic sorma ben kullanmiyorum).

8 Son düzenleyen, astronot (08.04.2008 11:14:58)

Re: Klasör Listesi

fox kurulu olmayan bir bilgisayarda fox runtime kurdum.  !intallshield filer.dll komutunu  programa ekledim. işlemi yapıyor. ancak başlarken yine "class definition filer.fileutil is not found" hatası veriyor. nedendir ?

9

Re: Klasör Listesi

Ben yıllar önce aşağıdaki gibi yapmıştım.
Sanki daha basit gibi.

sele dir
! dir /B C:\IS_DEF\*.dbf > DIR.TXT
APPE FROM dir SDF

10

Re: Klasör Listesi

Bir ilave.
dir komutunda dos'un farklı parametreleri kullanılabilir

11

Re: Klasör Listesi

InstallShield diye onu demek istememistim.

If !File('Filer.dll')
    Messagebox("FILER.DLL bulunamadi.",16,'Hata')
    Return
Endif
Wait Window Nowait "Filer.Dll kaydedilmemis. Kaydediliyor..."
Run /N REGSVR32 /s "filer.dll"

12

Re: Klasör Listesi

verdiğiniz cevaplardan dolayı çok teşekkürler. yardımlarınızla problemi hallettim.