Links ::  | DEV web management system | Katalóg | Webhosting | Recepty
  
 Index | Registrácia | Hľadať | Galéria | BoardNeprihlásený užívateľ  //Piatok, 24. Novembra 2017 
Navigation
Index
Top 10 autorov
Top 20 článkov
Hľadať
Galéria

Zones
Asp.(NET)
C/C++
Flash
Grafika+Design
Hardware
Hry
Html/Css/Xml
Java
Linux
Networks
Operačný systém
Pascal/Delphi
PHP
Security
Software
SQL
Visual Basic
Wap/Wml
Windows
Zóna iné

Links
Script index Interval.cz Pc.sk Regedit.sk TipyaTriky.sk Builder.cz Asp.cz Živě.sk Zoznam.sk Code.box.sk Root.cz Quant&Financial

Odkazy

Sessions
Stránky Developer.sk si práve číta 338 čitateľov, z toho je 0 zaregistrovaných

BackEnd
Odkazy na nové články je možné preberať pomocou backend.php

kuk

    Výpis podadresárov pomocou API

Jednoduchá funkcia, ktorá za pomoci API prejde adresár a vráti kolekciu ako zoznam podadresárov. Rýchlejšie ako pomocou FileSystemObject ...


Option Explicit

Const ERROR_NO_MORE_FILES = 18&
Const MAX_PATH = 260
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const ERROR_FILE_NOT_FOUND = 2&
Const ERROR_PATH_NOT_FOUND = 3&
Const ERROR_BAD_FORMAT = 11&
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100


Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

' Funkcia, ktorá prehľadá zvolený adresár a vytvorí kolekciu podadresárov ako návratovú hodnotu
' do premennej "ktorý" zadajte reťazec ako celú cestu k adresáru, ktorý chcete prehľadať

Public Function Adresáre(ByVal Ktorý As String) As Collection
' vytvorenie pomocných premenných
Dim Ukazovac As Long, Pomoc As String, Návrat As Long
Dim Folders As New Collection, Aký As WIN32_FIND_DATA

' ak reťazcu s prehľadávaným adresárom chýba spätné lomítko, tak je ho potrebné pridať
' pre prípadu ako: "C:\Windows" -> zmeniť na "C:\Windows\"

If Right$(Ktorý, 1) <> "\" Then Ktorý = Ktorý & "\"

Ukazovac = FindFirstFile(Ktorý & "*.*", Aký)
' Kontrola správnosti handle prehľadávaného adresára
If Ukazovac = INVALID_HANDLE_VALUE Then Exit Function
' zbavenie návratovej hodnoty znakov NULL
Pomoc = TrimNulls(Aký.cFileName)
' samotné prehľadávanie adresára
Do While Pomoc <> ""
' Ak sa jedná o adresár tak
If (Aký.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
' môže byť odkaz na nadradený adresár, alebo root adresár - nechceme
If Pomoc <> "." And Pomoc <> ".." Then
' pridanie názvu adresára do kolekcie
Folders.Add Pomoc
End If
End If
' hľadáme ďalší súbor - adresár
Návrat = FindNextFile(Ukazovac, Aký)
' vynulovanie pomocnej premennej, ak sme na konci, ostane táto prázdna
Pomoc = ""
' ak bola funkcia úspešná, tak pokračujeme
If Návrat <> 0 Then Pomoc = TrimNulls(Aký.cFileName)
Loop
' uzavretie handle adresára - súboru
Návrat = FindClose(Ukazovac)
' upratovanie (nie je potrebné, lebo po ukončení funkcie premenné zanikajú, ale pre istotu)
Set Adresáre = Folders
Set Folders = Nothing

End Function

' Táto funkcia zbaví reťazca nulových znakov, lebo pre potreby API je potrebné
' vytvoriť dlžku reťazca o 256 znakoch
Private Function TrimNulls(strString As String) As String
Dim l As Long
l = InStr(1, strString, Chr(0))
If l = 1 Then
TrimNulls = ""
ElseIf l > 0 Then
TrimNulls = Left$(strString, l - 1)
Else
TrimNulls = strString
End If
End Function


Príklady volania funkcie:

dim Kolekcia as Collection
' prehľadať adresár "c:\"
set Kolekcia = Adresáre("C:\")
' prechádzanie kolekciou, kým je nejaká položka v kkolekcií
Do Whille Kolekcia.Count > 0
' spracovanie aktuálnej položky kolekcie, napr.:
' pridaj do textboxu aktuálny záznam - položku
Text1 = Text 1 + Kolekcia(1) + vbcrlf
' vynuluj aktuálny záznam - položky a tým prejdi na ďalší, zníženie počtu položiek
Kolekcia.Remove 1
Loop


Alebo ďalší príklad:
for k = 1 to Kolekcia.Count
Text1 = Text1 + Kolekcia(k) + vbcrlf
next


Autor : smieško, čítané 8985x, komentárov: 0
Hodnotenie :    |  Streda, 15. Októbra 2003

Pridať nový komentár/Komentáre
Vaše hodnotenie :   horšie  lepšie
Login
Login:
Heslo:

Hľadať
 
v článkoch
v diskusiach
v komentároch

Top read
PHP Coder

Priklady v C. 1.čast.

DEV web management system

Php a bezpečnosť skriptov

Autorun CD

Top discuss
Jednoduchý web formulár (ASP.NET)

Delphi seriál: (1.časť)

Velmi rychla grafika v Pascale

DEV web management system

Naša ikona
Páčia sa Vám naše stránky ? Ak áno, podporte nás prosím a umiestnite si na svoju stránku našu ikonku:





Copyright (c) Developer.sk, All rights reserved.
Powered by DEV web management system