ordner+unterordner in treeview verpacken

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

Hops

Betreff: ordner+unterordner in treeview verpacken

BeitragMi, Sep 12, 2007 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
halloo!
auf die gefahr hin, dass das jetzt als nervend eingestuft wird Laughing , will ich hier mal um lösungshilfe für mein nächstes problem bitten:
es geht darum, in einem treeview von einem bestimmen ordner oder partition aus alle enthaltenen ordner darzustellen... also beispiel:
der benutzer wählt z.b. in einem RequestDir$()-Dialog einen ordner (z.b. "programme", oder auch "C:\") aus und das programm soll dann alle ordner, die dort enthalten (und die wieder darin enthaltenen und so weiter) ordner in eine treeview stecken... dateien sollen (vorerst..., falls es dann sunktioniert folgt die auslesung aller dateien eines bestimmten typs) nicht berücksichtigt werden...
nun habe ich schon ziemlich viele ideen gehabt, die jedoch alle zu nichts führten.
probleme sind: die verwaltung der nodes (ich habe es mit dim-feldern versucht -> man bräuchte für jeden ordner ein neues)
und das allgemeine "jeden ordner auf unterordner durchsuchen, diese wieder..."
oder macht diese technik überhaupt eh gaarkeinen sinn, da auch bei wenigen unterordnern/dateien schon zu viel zeit beansprucht wird??
ich hoffe, ihr versteht mein prolem und vielleicht hat jemand schon mal eine derartige routine geschrieben, ich wäre über jedliche hilfe dankbar!!
bis dann

mfg
 

sdjh

BeitragDo, Sep 13, 2007 11:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hast du das nicht schon vor ein paar tagen gefragt?

Als:

Code: [AUSKLAPPEN]

win=CreateWindow("test",20,20,400,650)
treeview=CreateTreeView(5,5,380,600,win)
 
listdir_rek(TreeViewRoot(treeview),"C:\")

Repeat
   event=WaitEvent()
   If event=$803 Then End
Forever


Function listdir_rek(parent,p$)
  n$=GetFileName$(p$)  ;bitte selber schreiben, oder irgendwo klauen
  node=AddTreeViewNode(n$,parent)
  dir=ReadDir(p$)
  NextFile(dir)
  NextFile(dir)
  Repeat
    d$=NextFile(dir)
    If d$="" Then Exit
    If FileType(p$+"\"+d$)=2 Then listdir_rek(node,p$+"\"+d$)
  Forever
End Function

Function GetFileName$(s$)
   p=0
   Repeat
      p=Instr(s$,"\",p)
      If p=0Then Exit
      p2=p
      p=p+1
   Forever
   Return Right(s$,Len(s$)-p2)
End Function


Wenn Dateien auf aufgelistet werden soll, einfach die Bedingung "If FileType..." weglassen.

Das wird aber langsam. Also besser (so wie auch schon unter Win 3.1) die Verzeichnisse erst lesen, wenn der Nutezr sie auch wirklich sehen will...

Smily

BeitragDo, Sep 13, 2007 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
genau die Frage wurde vor 2 Tagen schonmal gestellt ^^

https://www.blitzforum.de/foru...hp?t=25145
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Hops

BeitragDo, Sep 13, 2007 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ääähh... öööhm... gaaaanich gesehen Laughing
naja, wie auch immer:
von der geschwindigkeit würds schon gehen, da ich nich ganz C: auslesen würde sondern vielleicht C:\programme\blabla
aber ich finde treeview dazu eh ziemlich ungeeignet, da beim auswerten "nur" die id zurückgegeben wird, was nochmal zusatz aufwand bedeutet, wenn man dann den pfad daraus lesen will (bei obiger routine z.b.: für alle neuen zweige wird die gleiche variable überschrieben -> höchstens noch mit types mit feldern "id" und "name$")...
nuja, dann lass ich mir was anderes einfallen...
aber danke!!

bis denne
mfg

hops

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group