Ordner durchsuchen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: Ordner durchsuchen

BeitragMi, Apr 14, 2010 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich habe zwei Daten (name$,pass$) und möchte alle Dateien aus einem Verzeichnis darauf überprüfen, ob sie NICHT so heißen wie "name$" und daraufhin eine solche Datei erstellen, mit Namen "name$".
Problem: Es wird mit jedem Type-Eintrag verglichen und daraufhin eine Datei mit dem Namen "name$" erstellt. Also wird diese Datei so oft erstellt, wie viele Dateien mit eben NICHT diesem Namen in dem Verzeichnis liegen.

Wie kann ich es erreichen das eben nur EIN Eintrag gemacht wird?

Code: [AUSKLAPPEN]
name$ = ReadString(svr)
pass$ = ReadString(svr)

verz = ReadDir(".\users")
If verz=0 Then RuntimeError("Verzeichnis nicht gefunden!")
Repeat
   t.tesst = New tesst
   t\r$ = NextFile(verz)
   If (t\r$+".txt")<>name$ Then
      user = WriteFile("users\"+name$+".txt")
         WriteString user,name$
         WriteString user,pass$
      CloseFile(user)
      WriteByte svr,14
      SendUDPMsg svr,ip,port
      DebugLog("Klappt! aber warum nicht escape?")
   EndIf
   If t\r$="" Then Exit
Forever
CloseDir(verz)


Mfg,
N0X

P.S.: Hoffe verständlich ausgedrückt? Rolling Eyes
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragMi, Apr 14, 2010 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Alle Types Vergleichen und beim ersten Treffer mit Return den Spaß vorzeitig beenden.
Nachdem alle Types durchgegangen wurden die Datei erstellen.
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)

M0rgenstern

BeitragMi, Apr 14, 2010 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, du nimmst am besten eine Variable, die das angiebt.

Durch diesen Code, machst du genau das, was du nicht willst:
Zitat:
If (t\r$+".txt")<>name$ Then
user = WriteFile("users\"+name$+".txt")
WriteString user,name$
WriteString user,pass$
CloseFile(user)


Du vergleichst jede Datei in dem Ordner. Und wenn der Name nicht übereinstimmt lässt du sofort ne neue Datei erstellen, gehst dann zur nächsten Datei über.

Am besten du löst das so.
Erstmal eine Variable:

BlitzBasic: [AUSKLAPPEN]
Local iFileExists% = 0

und der ganze Rest davor.

Dann deine Schleife, aber geändert in:

BlitzBasic: [AUSKLAPPEN]
Repeat
t.tesst = New tesst
t\r$ = NextFile(verz)
If (t\r$+".txt")=name$ Then ;Hier ändern
iFileExists = 1
WriteByte svr,14
SendUDPMsg svr,ip,port
DebugLog("Klappt! aber warum nicht escape?")
EndIf
If t\r$="" Then Exit
Forever
If iFileExists = 0 Then 'Wenn keine Datei mit dem gleichen Namen dabei war
user = WriteFile("users\"+name$+".txt")
WriteString user,name$
WriteString user,pass$
EndIf
CloseFile(user)


So müsste es klappen.
Du überprüfst einfach am Ende ob eine Datei mit dem gleichen Namen dabei war.

Lg, M0rgenstern

N0X

BeitragMi, Apr 14, 2010 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, funktioniert aber irgendwie nicht, also Datei wird erstellt, aber er verlässt die "Repeat-Forever" Schleife irgendwie nicht, zumindest gibt mir mein DebugLog kein "klappt..." aus. Warum?

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

Xeres

Moderator

BeitragMi, Apr 14, 2010 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
@M0rgenstern: Wozu ist der Type da?
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)

M0rgenstern

BeitragMi, Apr 14, 2010 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, ja. Tut mir leid.
Du musst natürlich das:

BlitzBasic: [AUSKLAPPEN]
 WriteByte svr,14
SendUDPMsg svr,ip,port
DebugLog("Klappt! aber warum nicht escape?")


hierhin kopieren:

BlitzBasic: [AUSKLAPPEN]
If iFileExists = 0 Then 'Wenn keine Datei mit dem gleichen Namen dabei war
user = WriteFile("users\"+name$+".txt")
WriteString user,name$
WriteString user,pass$
CloseFile(user)
WriteByte svr,14
SendUDPMsg svr,ip,port
DebugLog("Klappt! aber warum nicht escape?")
EndIf


So müssts gehen.

Lg, M0rgenstern

EDIT: @ Xeres: Ich habe am Code ja nicht viel geändert. Er hatte den Type ja selbst schon genutzt und ich hab ihn auch nicht rausgenommen.

Lg, M0rgenstern

Eingeproggt

BeitragMi, Apr 14, 2010 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm... kleine Frage... Wenn es nur darum geht die name$+".txt" auf Vorhandensein zu prüfen, warum dann nicht einfach mit FileType?
(Mein Vorschlag ist natürlich hinfällig sobald alle möglichen Dateiendungen oder Zusatz-Präfixe im Spiel sind)

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group