NextFile in BMax

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Caesium

Betreff: NextFile in BMax

BeitragSa, Apr 19, 2008 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
huhu,

ich habe ein kleines problem: laut der englischen dokumentation funktioniert der befehl NextFile() in BMax genauso wie in B+ und B3D. d.h. er sollte den relativen pfad (der entsprechenden datei/des verzeichniches) zurueckgeben (oder auch nen leeren string, falls keine dateien/verzeichnisse vorhanden sind).

Code: [AUSKLAPPEN]
Verz:String = ReadDir("C:\")
Repeat
   Datei:String = NextFile:String(Verz)
   If Datei:String = "" Then Exit
   If FileType("C:\" + Datei:String) = 2 Then
      Print "Ordner:" + Datei:String
   Else
      Print "Datei:" + Datei:String
   End If
Forever
CloseDir Verz
Print ""
Print "-Ende-"

WaitKey()


dieser code ist ursprünglich aus der onlinehilfe/bb-hilfe. als NextFile() in meinem programm nicht funktioniert hat, habe ich dieses beispiel in Bmax umgeschrieben um es zu testen.
ich bekomme grundsätzlich die meldung:
Code: [AUSKLAPPEN]
Compile Error
Unable to convert from 'String' to 'Int'

leuchtet mir überhaupt nicht ein, denn er sollte ja nichts konvertieren!? als zeile wird folgende markiert:
Code: [AUSKLAPPEN]
Datei:String = NextFile:String(Verz)


ich bin total verwirrt, denn in b3d/b+ funktioniert es einwandfrei.
freue mich über jede hilfe, danke.

gruß,
caesium
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. Smile
 

#Reaper

Newsposter

BeitragSa, Apr 19, 2008 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst schon genau hinschauen Wink
Er meckert die Variable an, die du NextFile() übergibts.
Und zwar muss die Variable "Verz" eine Integer sein.

Ach, und noch ein Tipp:
Du brauchst nur einmal :String oder :Int schreiben, und zwar bei der Deklaration. Wink
Auch solltest du immer SuperStrict aktivieren, dass zwingt dich dazu ordentlich zu arbeiten und schaft Abhilfe bei Fehlenden oder doppelten Deklarationen etc.

Hier mal der Code, wie er Funktioniert:

Code: [AUSKLAPPEN]
SuperStrict

Local   Verz   :Int      = ReadDir("C:\")    , ..
      Datei   :String
Repeat
   Datei = NextFile(Verz)
   If Datei = "" Then Exit
   If FileType("C:\" + Datei) = 2 Then
      Print "Ordner:" + Datei
   Else
      Print "Datei:" + Datei
   End If
Forever
CloseDir Verz
Print ""
Print "-Ende-"

WaitKey()
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Caesium

BeitragSa, Apr 19, 2008 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, bin davon ausgegangen, dass in ReadDir iwie das verzeichnis gespeichert wird (also als string). nuja, dem war wohl nicht so. Smile

superstrict habe ich immer an (zumindest bei größeren programmen, in zukunft werde ich es wohl auch noch so kleinen tests anwerfen).

mir ist klar, dass ich das den datentyp nur bei der deklaration angeben muss, aber nuja.. hab den code in blide kopiert, wollte ihn ändern, da hat blide das von alleine gemacht. habs daraufhin zwar nochmal überprüft aber den fehler nicht finden können.

wie auch immer, vielen dank! das wars schon. :]

gruß,
caesium
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. Smile

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group