Festplatteninhalt anzeigen

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Seoman

Betreff: Festplatteninhalt anzeigen

BeitragSa, Nov 27, 2004 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich suche eine Möglichkeit, alle Daten einer Festplatte mit Blitz hierarchisch darzustellen und einzelne Daten wählbar zu machen.
Sprich eigentlich das, was Installationsprogramme machen, wenn man den Zielpfad angeben soll, etc.
Ich würde nämlich gerne einen Leveleditor entwickeln, bei dem ich einfach 3D-Modelle auswähle und dann Koordinaten, Kollisionstyp, etc. angebe und meine komplette Map als einfache .bb Datei speichere.
Sollte es diese Diskussion schon einmal gegeben haben, tut es mir leid. Ich erbitte dann einfach nur entweder eine zusammenfassende Antwort, oder einfach den Link zum passenden Thread.

Ich hofee, es gibt nicht wieder nur einen einfachen Befehl den ich in der Onlinehilfe oder den Tutorials übersehen habe.

Danke im Vorraus
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink
 

David

BeitragSa, Nov 27, 2004 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Doch in der Onlinehilfe unter der Kategorie "File":

Code: [AUSKLAPPEN]

NextFile
CurrentDir
ChangeDir
etc...


Müsst eigendlich alles sein was man für sowas braucht.

grüße
http://bl4ckd0g.funpic.de

joachim_neu

BeitragSo, Nov 28, 2004 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
am besten rekursion benutzen!
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

Seoman

BeitragSo, Nov 28, 2004 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten. Was ist Rekursion...?
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

Hubsi

BeitragSo, Nov 28, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Sowas zum Bleistift:Code: [AUSKLAPPEN]
function test(a)
 print a
 test(a+1)
end function
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Seoman

BeitragSo, Nov 28, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah verstehe
Danke!
mfg
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

Seoman

BeitragSo, Nov 28, 2004 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert prima. Ein Problem hab ich allerdings:
Ich lasse mir den Inhalt von D:// anzeigen. Da sind 6 Ordner drauf. Die letzten 4 erkennt er auch als Ordner, aber die ersten beiden nicht. Gibt es dafür einen Grund? Ich habe einen ähnlichen Code, wie der in der Onlinehilfe.

Danke
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

Bigmichi

BeitragMo, Nov 29, 2004 7:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Type Feig
   Field Daten$
   Field Art$
End Type



leseOrdner("D:\")


Graphics 1024,768,16,2

SetBuffer BackBuffer()
While Not KeyHit(1)





   ZeigeDaten(1)





   Flip
   Cls
Wend
end


Function ZeigeDaten(OP)

   X = 10
   For File.Feig = Each Feig
   
      If OP = 1 Then
         If File\Art = "Ordner" Then Text 10,X, File\Daten$ : X = X + 20
      End If

      If OP = 2 Then
         If File\Art = "Datei" Then Text 10,X, File\Daten$ : X = X + 20
      End If
      
      If OP = 3 Then
         Text 10,X, File\Daten$ : X = X + 20
      End If       
      
   
   Next

End Function




Function LeseOrdner(Verzeichnis$)

For File.Feig = Each Feig
   Delete File
Next

VerzLese=READDIR(Verzeichnis$)
Datei$ = "Suche.."
While Len(Datei) > 0

   Datei$=NEXTFILE$(VerzLese)
   

   
   If FILETYPE(Verzeichnis$+Datei$) = 2 THEN
      File.Feig = New Feig
      File\Daten = Datei$
      File\Art = "Ordner"
    Else
      File.Feig = New Feig
      File\Daten = Datei$
      File\Art = "Datei"
   End If
   
Wend
CloseDir Verz

End Function


Sollte gehen Wink

Seoman

BeitragMo, Nov 29, 2004 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für deine Mühe, aber...

Also:
Der Code ist ja nicht wirklich mein Problem. Frei nach dem OH-Besipiel:

Code: [AUSKLAPPEN]

Verzeichnis = ReadDir ("D://")

Repeat

x = GraphicsWidth()/2

 
Datei$=NextFile$(Verzeichnis)

If Datei$="" Then Exit


If FileType ("C:\"+Datei$) = 2 Then

Message$ = "Ordner: " +Datei$
Print Message$

y = y + 100

Else
Print "Datei:" + Datei$
End If


Until KeyHit(1)



Wenn ich die C-Fetsplatte untersuche, macht es keine Probleme. Auf der D habe ich 6 Ordner, von denen er aber aus irgendeinem Grund die ersten beiden als Dateien wertet. Confused

Danke
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink
 

Kekskiller

BeitragMo, Nov 29, 2004 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch ein Beitrag zu Rekursionen: Die werden kaum in Blitz funktionieren, dass gibt einen deftigen Absturz oder einen Runtimeerror. Dähmliche Lösung für sowas, pah...
 

Apocalyptic

BeitragMo, Nov 29, 2004 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Kekskiller: Ich hatte damit noch nie Probleme. Und das ist meiner Meinung nach die beste Lösung dafür... zugegeben mir fällt sonst keine (gute) Alternative ein Wink

@ Seoman: Code: [AUSKLAPPEN]
Verzeichnis = ReadDir ("D://")


Das funktioniert? Shocked

Und (wenn dus nicht schon in deinem eigentlichen Code hast) dann musst du noch ne Prüfung durchführen, ob Datei$="." oder ".."
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]
  • Zuletzt bearbeitet von Apocalyptic am Mo, Nov 29, 2004 19:50, insgesamt einmal bearbeitet

Hubsi

BeitragMo, Nov 29, 2004 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@Kekskiller: Wie kommst Du denn darauf?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Apocalyptic

BeitragMo, Nov 29, 2004 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Seoman:

Code: [AUSKLAPPEN]
Verzeichnis = ReadDir ("D:\")

Code: [AUSKLAPPEN]
If FileType ("C:\"+Datei$) = 2 Then


Rolling Eyes

PS: Das mit dem Laufwerkspfad hab ich mal geändert...
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]
  • Zuletzt bearbeitet von Apocalyptic am Mo, Nov 29, 2004 19:58, insgesamt einmal bearbeitet

Seoman

BeitragMo, Nov 29, 2004 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich werde das Ganze später sowieso noch ändern (was hilft es mir, alles nur aufzuschreiben, ich muss es auch anwählen können, sprich Mein System steht mir da noch selbst im Weg).

Weiß jemand Rat (denn ich finde das Problem irgendwie ziemlich unlogisch)

mfg
Seoman


PS:
Ja verzeichnis =Readdir ("...") geht...
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

Seoman

BeitragMo, Nov 29, 2004 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Apocalyptic wahr schneller. Diesen Code habe ich aus der Online Hilfe, deshalb sollte er doch funktionieren. Außerdem funzt er bei 4 der 6 Ordner...

mfg
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

Ctuchik

BeitragMo, Nov 29, 2004 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Kekskiller hat Folgendes geschrieben:
Noch ein Beitrag zu Rekursionen: Die werden kaum in Blitz funktionieren, dass gibt einen deftigen Absturz oder einen Runtimeerror. Dähmliche Lösung für sowas, pah...

Wieso das denn?
Warum sollen Rekursionen in BB nicht funktionieren?
Wenn man natürlich sowas hat, wie Hubsi oben geschrieben hat:
Code: [AUSKLAPPEN]
function test(a)
 print a
 test(a+1)
end function

dann ist es klar, dass es da zu einem Absturz kommt, weil sich die Funktion unendlich oft selbst aufruft! Die Rekursion muss natürlich irgendwie wieder beendet werden! Wenn man das macht, dann gibt es aber keinen Grund warum es in BB nicht funktionieren sollte!
Für das Anzeigen von Ordnerinhalten, gibt es sowieso keine andere Lösung als rekursiv vorzugehen! (zumindest keine die ich kenne)

Zum problem: Fehler gefunden Very Happy
Code: [AUSKLAPPEN]
If FileType ("C:\"+Datei$) = 2 Then

In der Zeile muss natürlich auch D:\ hin!
Da überprüft er den Dateityp und da es die Ordner auf C:\ nicht gibt, gibt er 0 zurück! Dieser Fall wird aber vom Programm nicht abgefangen, sondern davon ausgegangen, dass es, wenn es kein Ordner ist eine Datei ist (was ja auch logisch ist) und deshalb wird der Ordner als Datei angezeigt!
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Digi_

BeitragMo, Nov 29, 2004 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
stürzt das Programm nicht überall ab wenn man eine solche Rekursion einbaut? Rolling Eyes

Seoman

BeitragMo, Nov 29, 2004 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein!
Nachdem alle Dateien abgefragt wurden läuft es ja nicht mehr weiter Wink
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

Digi_

BeitragMo, Nov 29, 2004 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ich meinte diese:
function test(a)
print a
test(a+1)
end function
 

David

BeitragMo, Nov 29, 2004 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

1) War das ein Beispiel
und 2) Nein das Programm sturützt nicht ab, solang test nicht aufgerufen wird... Rolling Eyes

grüße
http://bl4ckd0g.funpic.de

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group