Datei suchen...

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: Datei suchen...

BeitragDo, Mai 13, 2010 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich schreibe gerade einen Server für mein Spiel und muss dafür Dateien suchen lassen.
Wie kann ich überprüfen ob eine Datei mit Namen "Peter.txt" schon vorhanden ist?

Habs so probiert:
Code: [AUSKLAPPEN]
            dir = ReadDir(CurrentDir())
            Repeat
               nFile$ = NextFile(dir)
               da = Instr(name$,nFile$)
               If da = True Then Exit
            Until nFile = " \"
            CloseDir(dir)


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

Xeres

Moderator

BeitragDo, Mai 13, 2010 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
FileType ist das Zauberwort.
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

BeitragDo, Mai 13, 2010 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
So, hab's mal ein bisschen erweitert, aber mir wird jetzt 6mal "DIRECTORY" angezeigt, einmal "FILE" und dann ein Error.

Warum?

Code: [AUSKLAPPEN]
            ChangeDir("\users")
            dir = ReadDir(CurrentDir())
            Repeat
               nFile$ = NextFile(dir)
               If FileType(nFile$)=1 Then
                  Print "FILE"
                  If Instr(name$+".txt",nFile$) Then
                     Print "User already exists"
                  Else
                     Local file = WriteFile("users\"+name$+".txt")
                        WriteLine file,"[AccData]"
                        WriteLine file,name$
                        WriteLine file,pass$
                        WriteLine file,mail$
                        WriteLine file,"[CharData]"
                        WriteLine file,"!NO_PLAYER"
                     CloseFile(file)
                  EndIf
               ElseIf FileType(nFile$)=2
                  Print "DIRECTORY"
                  'Do nothing!
               Else
                  Print "ERROR"
                  'No Files/Directorys found
               EndIf
            Until nFile$ = " \"
            CloseDir(dir)


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

Xeres

Moderator

BeitragDo, Mai 13, 2010 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
nFile$ = NextFile(dir)
if nFile$="" then exit
Wenn es nichts mehr im Verzeichnis gibt, liefert NextFile einen Leeren String zurück.
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

BeitragDo, Mai 13, 2010 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ich krieg nen immernoch nen Fehler:
~>Unhandled Exception:Attempt to access field or method of Null object
~>

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

Xeres

Moderator

BeitragDo, Mai 13, 2010 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne weitere Infos zu dem Fehler...
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

BeitragDo, Mai 13, 2010 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sind wirklich alle Info's!
Es wird 6mal DIRECTORY angezeigt und 1mal FILE und dann der Fehler.

Der Fehler ist genau in diesem Teil.

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

Xeres

Moderator

BeitragDo, Mai 13, 2010 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
...ohne konkrete Angabe, welche Zeile den Fehler auslöst, kann ich da nichts genaues zu sagen.
Bist du sicher, das dass hier richtig ist? WriteFile("users\"+name$+".txt") Immerhin befindest du dich schon im Ordner users. Lass dir die Aktuellen Pfade immer ausgeben!
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

BeitragDo, Mai 13, 2010 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, Fehler ist in der ersten WriteLine Zeile wo in die TXT Datei geschrieben wird. (WriteLine file,"[AccData]")

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

Xeres

Moderator

BeitragDo, Mai 13, 2010 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Das heißt, der Datei-Stream konnte nicht geöffnet werden.
Code: [AUSKLAPPEN]
Local file = WriteFile(CurrentDir() + "/" + name + ".txt")
If Not file RuntimeError("Konnte keine Datei schreiben unter: ~n" + CurrentDir() + "/" + name + ".txt")
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

BeitragDo, Mai 13, 2010 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, Problem war, das mein Programm die Datei im Ordner "C:\users\" erstellen wollte und nicht im aktuellen Pfad.
Ich musste einen Punkt bei dem ChangeDir machen. (ChangeDir(./users))

Mfg,
N0X

//EDIT:
Ne, doch nicht, aber wenn ich "..\users" eingebe, komme ich in das höherliegende Verzeichnis von users.
Wie komme ich direkt in "users"?

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

Xeres

Moderator

BeitragDo, Mai 13, 2010 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Was gibt den Currentdir aus? Wechselst du nicht gleich zu Anfang ins User Verzeichnis?
Wie gesagt: Lass dir immer den aktuellen Pfad ausgeben! Überprüfe nötigenfalls die einzelnen Schritte die du machst.
"." ist das aktuelle Verzeichnis
".." ist führt in den übergeordneten Ordner.
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

BeitragDo, Mai 13, 2010 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Direkt nach ChangeDir gibt CurrentDir "C:/users" aus, wenn ich bei ChangeDir "\users\" geschrieben habe.
Liegt es vielleicht daran das ich alles in der Console ausgebe und diese eben auf C: liegt?

Mfg,
N0X

//EDIT:
Klappt doch! ;D
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

d-bug

BeitragDo, Mai 13, 2010 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Klär mich mal kurz auf... Du möchtest doch nur rausfinden ob eine bestimmte Datei schon existiert, oder?
Wenn diese Datei dann existiert soll nichts geschehen aber wenn nicht, dann soll sie geschrieben werden. (So versteh ich den ganzen Text da über mir)
BlitzMax: [AUSKLAPPEN]
If FileType("/users/"+name+".txt") = 1
Print "USER EXISITERT BEREITS"
Else
Local stream:TStream = WriteFile("/users/"+name+".txt")
If stream
stream.WriteLine("Alles was du so schreiben willst")
stream.close()
EndIf
EndIf


Würde das dafür nicht schon genügen?

Mal davon ab, ich hoffe dein Server soll nicht online gehen, dann kannst du nämlich alles was an Dateiabfragen da verwendest auch komplett vergessen. Soweit mir bekannt ist funktioniert das nur lokal.

N0X

BeitragDo, Mai 13, 2010 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, danke!
Doch, doch der soll irgendwann mal online gehen!
Warum sollte das nicht funktionieren?
Wenn die Dateien doch alle auf dem Server liegen?

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

d-bug

BeitragDo, Mai 13, 2010 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Gerade mal recherchiert... Du hast recht, es funktioniert, wenn man "http::" benutzt. Wieder was gelernt!
Natürlich muss man dann noch in einem Framework brl.httpstream importieren. Schätze das war dann mein Fehler bisher.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group