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?
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Kodlama ve Komutlar » 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?
Bence en pratigi VFP ile gelen filer.dll. Ancak baska yollarda var:
Adir ile:
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:
? 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).
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?
nasıl yapılıyor? bunu program içerisinden yapabiliyormuyuz?
!regsvr32 filer.dll
regsvr32 ya da intallshield kullan (installshield'in nasil kullanilacagi ornegi var, bana hic sorma ben kullanmiyorum).
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 ?
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
Bir ilave.
dir komutunda dos'un farklı parametreleri kullanılabilir
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"
verdiğiniz cevaplardan dolayı çok teşekkürler. yardımlarınızla problemi hallettim.
fox4um » Kodlama ve Komutlar » Klasör Listesi