Seite 1 von 1

ExamineDirectory sortieren

Verfasst: 01.11.2004 10:22
von KingSonne
Guten Morgen.
Hab im alten und in diesem Board hier nix gefunden, deswegen poste ich mein Problem mal:

Ich habe ein kleines Programm geschrieben, welches auf einen Windows Ordner zugreift...

Dieser hat die Ordner zB:

AB1
AB2
AB3
AB4
AB5

aber natürlich auch noch andere Ordner
blab
blub
dadi

Ich will jetzt aber, dass nur die AB Files angezeigt werden...

Kann ich da bei Pattern irgendwie einstellen, dass es so ist, wie ichs will?!

Thx :)

Verfasst: 01.11.2004 10:58
von GPI
In einen Array speichern und sortieren...

Re: ExamineDirectory sortieren

Verfasst: 01.11.2004 11:13
von Danilo
KingSonne hat geschrieben: Dieser hat die Ordner zB:
AB1
AB2
AB3
AB4
AB5
aber natürlich auch noch andere Ordner
blab
blub
dadi

Ich will jetzt aber, dass nur die AB Files angezeigt werden...
Du meinst nur die Ordner "AB*" ??

Da prüfst Du als erstes den Rückgabewert von NextDirecoryEntry().
Wenn dieser 2 ist, dann ist es ein Verzeichniss und Du holst
den Name mit DirectoryEntryName(). Den Name kannst Du
dann z.B. mit Left(Name$,"AB",2) prüfen.

Verfasst: 01.11.2004 13:20
von MLK
die pattern$ lassen sich hierfür auch in gewissem rahmen einsetzen. "*." listet zb nur ordner auf, "AB*." nur ordner die mit "AB" beginnen.

Code: Alles auswählen

windir$=Space(255)
size=Len(windir$)
GetEnvironmentVariable_("windir",@windir$,@size)

ExamineDirectory(-1,windir$,"*s*s*.") ;"AB*."
While NextDirectoryEntry()
  Debug DirectoryEntryName()
Wend

Verfasst: 01.11.2004 13:59
von KingSonne

Code: Alles auswählen

Verzeichnisname1.s = "c:\programme" 
Repeat 
  Result.w = ExamineDirectory(0, Verzeichnisname1.s, "*.") 
  If Result.w <> 0    
    For Zaehler.w = 0 To 300
      Result.w = NextDirectoryEntry()        
      If Result.w = 2 And Zaehler.w > 1 
      Delay(500)  
        Verzeichnis3.s = DirectoryEntryName()
       [b] Verzeichnis4.s = Left(Verzeichnis3.s,"AB",2)[/b]
             
        Verzeichnisname1.s = Verzeichnisname1.s + "\" + Verzeichnis4.s      
        Verzeichnisname2.s = Verzeichnis4.s  
        PrintN(Verzeichnisname2.s)          
      EndIf      
    Next  
  EndIf 
Until Verzeichnisname1.s = "C:\programme\" 
Kommt aber ein Fehler:
Line 51: Left() : Incorrect number of of parameters.


Achja, ich bekomm es auch nicht hin, dass wenn der Code dann durchgelaufen ist, also wenn er alle Ordner angezeigt hat, dass er zu nem anderen Codeabschnitt springt... Ich habs mit goto versucht, aber ich weiss dann auch nicht ganz genau, wie ich das da hinpacken muss, dass wenn der die 300 Ordner gescheckt hat zu dem anderen Codeabschnitt springt...[/code]

Verfasst: 01.11.2004 14:30
von MLK
hilft dir das weiter ?

Code: Alles auswählen

Verzeichnisname1.s = "c:\programme" 
If ExamineDirectory(0, Verzeichnisname1.s, "AB*.")
  While NextDirectoryEntry()
    Debug DirectoryEntryName()
    i+1
    If i>=300
      Break
    EndIf
  Wend
EndIf

Verfasst: 01.11.2004 14:48
von KingSonne
alles klar, vielen dank, dass geht super :allright: