ExamineDirectory sortieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
KingSonne
Beiträge: 7
Registriert: 01.11.2004 10:18

ExamineDirectory sortieren

Beitrag 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 :)
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

In einen Array speichern und sortieren...
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: ExamineDirectory sortieren

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag 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
KingSonne
Beiträge: 7
Registriert: 01.11.2004 10:18

Beitrag 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]
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag 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
KingSonne
Beiträge: 7
Registriert: 01.11.2004 10:18

Beitrag von KingSonne »

alles klar, vielen dank, dass geht super :allright:
Antworten