kostenloser Webspace werbefrei: lima-city


Durchsuchen von Ordnern in Quickbasic

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    wasi

    wasi hat kostenlosen Webspace.

    Hey ich brauche mal wieder eure Hilfe in Quickbasic:
    Wie kann man dem Programm sagen, dass er einen bestimmten Ordner durchsuchen soll und die Dateien auflisten soll? Es reicht, wenn er nur das Arbeitsverzeichnis anzeigen kann!

    MfG
    wasi:blah:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. http://www.antonis.de/faq/qbmonfaq-Dateien/593658118.html

    teil der QBMonsterFAQ von http://www.antonis.de
  4. d*********m

    also mit Quickbasic kenne ich mich net aus... aber m?sste der gleiche wie bei VB sein... habe da mal was f?r dich...


    'zun?chst die ben?tigten API-Deklarationen
    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
    Private Declare Function GetShortPathName Lib "kernel32" _
    Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
    ByVal lpszShortPath As String, ByVal cchBuffer As Long) _
    As Long

    Private Const MAX_PATH = 260
    Private Const INVALID_HANDLE_VALUE = -1

    Public Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
    End Type

    Private Type WIN32_FIND_DATA
    dwFileAttributes As Long ' Dateiattribute
    ftCreationTime As FILETIME ' Erstellungsdatum
    ftLastAccessTime As FILETIME ' Letzter Zugriff
    ftLastWriteTime As FILETIME ' Letzte Speicherung
    nFileSizeHigh As Long ' Gr??e (Hi)
    nFileSizeLow As Long ' Gr??e (Lo)
    dwReserved0 As Long ' bedeutungslos
    dwReserved1 As Long ' bedeutungslos
    cFileName As String * MAX_PATH ' Dateiname
    cAlternate As String * 14 ' 8.3-Dateiname
    End Type

    Public Type Datei
    Pfadname As String
    DosDateiname As String
    Dateiname As String
    ErstelltAM As FILETIME
    LetzterZugriff As FILETIME
    Letze?nderung As FILETIME
    DateiGr??e As Long
    Atribute As Long
    End Type

    Public WasFound() As Datei
    Public StopSearch As Boolean

    ' Suchroutine: Wildcards sind erlaubt (*.*, ?, ect.)
    Public Function FindFile(ByVal StartPath As String, _
    ByVal SearchSubfolder As Boolean, _
    ByVal File As String, _
    ByRef FileFound() As Datei)

    Dim hFile As Long
    Dim FileData As WIN32_FIND_DATA
    Dim Directories() As String
    Dim OnlyDirectories As Boolean
    Dim TmpFile As String
    Dim I As Integer

    DoEvents

    ' Evtl. Backslash entfernen
    If Right$(StartPath, 1) = "\" Then _
    StartPath = Left$(StartPath, Len(StartPath) - 1)

    SearchOnlySubfolders:

    ' Sucht nach einer Datei, und packt das
    ' Ergebnis in FileData
    hFile = FindFirstFile(StartPath & "\" & File & _
    vbNullChar, FileData)

    ' Wenn sie gefunden wurde, dann...
    If hFile <> INVALID_HANDLE_VALUE Then

    Do
    ' Ist es ein Verzeichniss oder eine Datei ?
    With FileData
    If (.dwFileAttributes And vbDirectory) = 0 Then
    ' Datei

    ' Nur wenn nicht nur Verzeichinsse gesucht werden
    If Not OnlyDirectories Then
    ' Array vergr??ern und Daten ins Array schreiben
    On Error GoTo Err_DimFile
    ReDim Preserve FileFound(UBound(FileFound) + 1)
    On Error GoTo 0

    DoEvents
    UmPacken FileFound(UBound(FileFound)), _
    FileData, StartPath & "\" & File

    End If
    If StopSearch = True Then Exit Function

    ElseIf SearchSubfolder = True Then
    ' Verzeichnis

    ' Verzeichnis nur im Array Speichern wenn es
    ' ?ber dem jetzigen liegt d.h. ".." "." sind
    ' nicht g?ltig
    If Left$(.cFileName, InStr(.cFileName, vbNullChar) - 1) <> "." _
    And Left$(.cFileName, InStr(.cFileName, vbNullChar) - 1) <> ".." Then

    On Error GoTo Err_DimDir
    ReDim Preserve Directories(UBound(Directories) + 1)
    On Error GoTo 0

    ' Verzeichnis dem Array hinzuf?gen
    Directories(UBound(Directories)) = _
    Left$(.cFileName, InStr(.cFileName, vbNullChar) - 1)
    End If

    End If
    End With
    DoEvents
    Loop Until FindNextFile(hFile, FileData) = 0 Or StopSearch = True
    End If
    FindClose hFile

    ' Unteroder durchsuchen
    On Error GoTo Err_DimDir
    If SearchSubfolder = False Or _
    StopSearch = True Then Exit Function
    On Error GoTo 0

    ' Wenn nach anderen Dateien als *.* gesucht wird,
    ' werden keine Ordner gefunden
    ' Deshalb noch einmal gezielt nach Ordnern suchen
    If Not OnlyDirectories And SearchSubfolder = True And _
    File <> "*.*" Then

    OnlyDirectories = True
    TmpFile = File
    File = "*.*"
    GoTo SearchOnlySubfolders
    ElseIf TmpFile <> "" Then
    File = TmpFile
    End If

    On Error GoTo Err_Exit
    For I = 0 To UBound(Directories)
    If StopSearch = True Then Exit Function
    DoEvents

    ' Hier ruft die Funktion sich selbst auf - f?r
    ' jeden Unterordner
    FindFile StartPath & "\" & Directories(I), _
    SearchSubfolder, File, FileFound
    Next I
    Exit Function

    Err_DimFile:
    ReDim FileFound(0)
    Resume Next

    Err_DimDir:
    ReDim Directories(0)
    Resume Next

    Err_Exit:
    End Function

    'Packt die Infos um und schneidet Nullchar-Zeichen ab
    Private Function UmPacken(ByRef D As Datei, _
    FD As WIN32_FIND_DATA, ByVal Path As String)

    With FD
    D.Atribute = .dwFileAttributes
    D.DateiGr??e = .nFileSizeLow
    D.Dateiname = Left$(.cFileName, InStr(.cFileName, _
    vbNullChar) - 1)
    D.DosDateiname = Left$(.cAlternate, _
    InStr(.cAlternate, vbNullChar) - 1)
    If D.DosDateiname = "" Then _
    D.DosDateiname = D.Dateiname
    D.ErstelltAM = .ftCreationTime
    D.Letze?nderung = .ftLastWriteTime
    D.LetzterZugriff = .ftLastAccessTime
    D.Pfadname = Left$(Path, InStrRev(Path, "\"))
    End With
    End Function

    Public Sub StartS()
    Dim Dateien() As Datei
    StopSearch = False
    FindFile "C:\Windows\system32", True, "*.*", Dateien 'hir muss der dateifad angegeben werden.

    'Ergebnisliste in Form1.List1 ausgeben 'hir muss die form angegeben werden und bedenke das du eine ListBox erstellen musst.
    Form1.List1.Clear
    For i = 0 To UBound(Dateien)
    Form1.List1.AddItem Dateien(i).Dateiname
    Next i
    End Sub

    'Und stoppen kann man das ganze hier
    Public Sub StopS()
    StopSearch = True
    End Sub


    das kloppste dir in nen modul und f?hrst die Prozedur StartS aus oder StopS ums abzubrechen... musst aber noch nen paar sachen in der StartS Prozedur ver?ndern... der dateipfad l?sst sich nat?rlich auch ?bergeben aber das m?sste dir reichen. Wenn noch irgendwelche fragen hast schicke mir ne PM.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!