NextFile funktioniert nicht

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: NextFile funktioniert nicht

BeitragSo, Dez 29, 2013 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute,
ich weiß echt nicht woran es liegt aber irgendwie funktioniert NextFile bei mir überhaupt nicht.
Der Pfad existiert auf jeden Fall, 'dir' ist auch nicht 0, jedoch gibt nFile nur ein mal etwas zurück und das ist ein leeres Zeichen (oder mehrere, auf jeden Fall ist es leer..).
Im Ordner sind auch Dateien vorhanden, alles Textfiles, aber auch wenn ich zum Beispiel ein Bild mit rein pack läufts nicht.

BlitzMax: [AUSKLAPPEN]
SuperStrict

Framework Vertex.BNetEx
Import BRL.System
Import BRL.Blitz
Import BRL.Retro
Import BRL.Math
Import BRL.Random
Import BRL.LinkedList
Import BRL.PolledInput
Import BRL.KeyCodes
Import BRL.Timer
Import BRL.FileSystem

If Not ChangeDir("H:/Programmieren/test/") Then Print "Changen geht nicht"

Local dir:Int = ReadDir("H:/Programmieren/test/")
Local nFile:String
Local inDB:Byte
Repeat
nFile = NextFile(dir)
If nFile = "" Then Exit
If FileType(nFile)=1 Then
If nFile = (nam+".txt") Then
Local file:TStream = ReadFile(nam+".txt")
If file<>Null Then
For Local i:Byte = 0 To 2
ReadLine(file) 'Trash
Next
Local password:String = ReadLine(file)

CloseFile(file)

If pas=password Then
inDB = 1
Else
inDB = 0
EndIf
Else
Print "FILE_NOT_FOUND"
EndIf

Exit
Else
inDB = 0
Print "NO_USER_FOUND"
EndIf
Else
Print "DIRECTORY_NOT_FOUND"
EndIf
Until nFile = ""
CloseDir(dir)


Ich weiß echt nicht mehr weiter, ich habe wirklich etliche Schreibweisen des Ordnerpfads geprüft und gedebuggt was das Zeug hält..
Selbst alle Module habe ich neu gebuildet..

Ich hoffe ihr wisst was das Problem ist :/

Gruß,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%
 

Kruemelator

BeitragSo, Dez 29, 2013 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
FileType reicht nicht nur der Dateiname es braucht auch noch den Pfad, vermute ich.

d-bug

BeitragSo, Dez 29, 2013 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, NextFile() gibt nur den Dateinamen mit Suffix zurück. Für FileType musst du auch noch den Pfad des Directories mit dranhängen. Also:
BlitzMax: [AUSKLAPPEN]
'...
Repeat
nFile = NextFile(dir)
If nFile = "" Then Exit
'-------------------------------------------------
If nFile.startsWith(".") Then Continue
'Kleine Änderung, nur für den Fall, dass es auch auf Unix-basierenden Plattformen funktionieren soll Wink Dort fangen versteckte Dateien ja bekanntlich mit . an! Außerdem denkt BlitzMax, dass die Shortcuts für die nächst höheren Directories (".." und ".") - Dateien sind.
'-------------------------------------------------
If FileType("H:/Programmieren/test/"+nFile)=1 Then
'...
  • Zuletzt bearbeitet von d-bug am So, Dez 29, 2013 22:30, insgesamt einmal bearbeitet

ZEVS

BeitragSo, Dez 29, 2013 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Nope. BlitzMax: [AUSKLAPPEN]
SuperStrict
ChangeDir "C:\"
Print FileType("Programme")

Gibt brav eine 2 aus.

ZEVS

d-bug

BeitragSo, Dez 29, 2013 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, hast recht... Das sollte funktionieren. Ich bin kein großer Nutzer von ChangeDir also dachte ich es hätte keinen Einfluss auf ReadDir. Folgender Test funktioniert zumindest:
BlitzMax: [AUSKLAPPEN]
Local url:String = AppDir+"/.."
Local dir:Int = ReadDir(url)
Local file:String

ChangeDir(url)
Repeat
file = NextFile(dir)
If file = "" Exit
If file.startsWith(".") Continue
Print file + " -> "+FileType(file)
Forever

Obacht, ich bin auf OS X, also sollte bei Gebrauch auf Windows Systemen die Lokale "url" angepasst werden.

ZEVS

BeitragSo, Dez 29, 2013 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@NOX: Du sagst, du hast debuggt, was das Zeug hält. Ich gehe davon aus, dass du in jede zweite Zeile einen Print-Befehl eingefügt hast, um nachzuvollziehen, woran es scheitert. Diese Ausgabe ist wichtig, um das Problem nachzuvollziehen. Auch wäre es interessant, den ganzen Code zu kennen (die Variable nam hat dich verraten Smile ). Alternativ wäre es gut, wenn du das Problem soweit wie möglich isolierst (d.h. einen möglichst kurzen Code postest, in dem das Problem auftritt).

ZEVS

N0X

BeitragSo, Dez 29, 2013 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ich konnte es durchs Debuggen schon auf NextFile begrenzen, da 'dir' nen Integer gibt.
Hier mal bisschen auf's wesentliche reduziert.

BlitzMax: [AUSKLAPPEN]
SuperStrict

Framework Vertex.BNetEx
Import BRL.System
Import BRL.Blitz
Import BRL.Retro
Import BRL.Math
Import BRL.Random
Import BRL.LinkedList
Import BRL.PolledInput
Import BRL.KeyCodes
Import BRL.Timer
Import BRL.FileSystem

If Not ChangeDir("H:/Programmieren/test/") Then Print "Changen geht nicht"

Local dir:Int = ReadDir("H:/Programmieren/test/")
Local nFile:String
'------>
Print dir
'------>
Repeat
nFile = NextFile(dir)
'------>
Print "FILE="+nFile
'------>
If nFile = "" Then Exit
'ab hier ist egal, da er ja nichtmal so weit kommt..
If FileType(nFile)=1 Then
If nFile = ("test.txt") Then
Print "FILE_FOUND"
Else
Print "NO_FILE_FOUND"
EndIf
Else
Print "DIRECTORY_NOT_FOUND"
EndIf
Until nFile = ""
CloseDir(dir)


Die Ausgabe ist:
Code: [AUSKLAPPEN]
Executing:untitled1.debug.exe
891008
FILE=

Process complete


Sehr seltsam.. :/

Gruß,
N0X

//EDIT:
@d-bug: Dein Test funktioniert bei mir nicht. :/
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragSo, Dez 29, 2013 23:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Mh... komisch.
Was passiert, wenn du den Code ohne Framework und Imports ausführst? Welche Version von BMax benutzt du auf welchem OS?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

N0X

BeitragMo, Dez 30, 2013 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, auch ohne Framework und Importe läuft es nicht.
Ich benutze:

Code: [AUSKLAPPEN]
MaxIDE 1.37
BCC Version: BlitzMax Release Version 1.48
FASM Version: 1.70.03
GCC Version: 4.8.1
G++ Version: 4.8.1

Windows 7 32Bit


Gruß,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Holzchopf

Meisterpacker

BeitragMo, Dez 30, 2013 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Tritt das Problem mit jedem Pfad auf? Versuche doch einfach mal, C:/ auszulesen. Wenn das klappt, könnte es evtl. eine Berechtigungs-Sache sein.

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

N0X

BeitragMo, Dez 30, 2013 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon getestet, funktioniert auch unter C:/ leider nicht. Crying or Very sad

//EDIT:
Nach einer Neuinstallation von BlitzMax funktioniert jetzt wieder alles wie es soll, ist anscheinend mal irgendwann irgendwas kaputt gegangen.
Danke für eure Hilfe! Smile

Gruß,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group