Types - For ... Next
Übersicht

![]() |
N0XBetreff: Types - For ... Next |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey!
Ich habe einen Type (player) und möchte alle Einträge dieses Types auf etwas überprüfen. (es existiert allerdings noch keiner) Dafür benutzt man doch eine For - Next Schleife, nicht wahr? Da ich vorher mit BB gearbeitet habe weiß ich nicht so recht wie ich das angehen soll. Habe mir das folgendermaßen gedacht: Code: [AUSKLAPPEN] Local p:player
For p = EachIn player If p.name$<>lName$ Then Print "Klappt." EndIf Next Was fehlt? Muss ich die Einträge in eine TList eintragen? (Wenn ja, wie funktioniert das?) Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, alles in eine liste die du dann durchläufst
BlitzMax: [AUSKLAPPEN]
du kannst uach die liste im type definieren und im konstruktor die neu erstellten objekte gleich speichern, um ein bb verhalten zu erreichen BlitzMax: [AUSKLAPPEN] Type Player |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, wie kann ich auf alle existierenden Player überprüfen ob ein Player mit einem bestimmten Namen überhaupt existiert, wenn doch das Überprüfen in der For-Next Schleife steht, diese aber nie aufgerufen wird, weil ja noch kein Player existiert?
Dazu ein wenig Code: Code: [AUSKLAPPEN] For Local a:player = EachIn player.list
If a.name$<>lName$ Then iFileExists = 1 Local p:player = New player p.name$ = lName$ p.pass$ = lPass$ Print Chr(34)+p.name$+Chr(34)+" "+Chr(34)+p.pass$+Chr(34) Else Print "Failed Login detected! (Incorrect Password)" EndIf Next Mfg, N0X //EDIT: Gelöst. Neues Problem: Ich möchte einen Login verhindern, wenn der Spieler schon in der Liste ist. Wie mache ich das? (Oder besser warum funzt das nicht? ![]() Code: [AUSKLAPPEN] Print "Client logging..."
Local lName$ = udpStream.ReadLine() Local lPass$ = udpStream.ReadLine() Local iFileExists = 0 ChangeDir(".\users\") dir = ReadDir(CurrentDir()) Repeat nFile$ = NextFile(dir) If nFile$="" Then Exit If FileType(nFile$)=1 Then If Instr(lName$+".txt",nFile$) Then file = ReadFile(lName$+".txt") For i = 0 To 1 trash$ = ReadLine(file) Next rPass$ = ReadLine(file) If lPass$ = rPass$ Then For Local a:player = EachIn player.list If a.name$<>lName$ Then iFileExists = 1 Exit Else Print "Failed Login detected! (Incorrect Password)" Exit EndIf Next EndIf CloseFile(file) EndIf EndIf Until nFile$ = "" CloseDir(dir) If iFileExists = 0 Then Print "Failed Login detected! (Incorrect User)" Else Local p:player = New player p.name$ = lName$ p.pass$ = lPass$ Print Chr(34)+p.name$+Chr(34)+" "+Chr(34)+p.pass$+Chr(34) EndIf Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN] For Local a:player = EachIn player.list Hier scheint ein Fehler zu liegen: Es wird nur der erste Spieler untersucht. Diese Kontrollschleife solltest du noch einmal neu schreiben, da z.B. iFileExists auch nicht richtig angewandt wird. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab die beiden Exit's mal wieder rausgenommen.
Der erste Login klappt, aber wenn ich mich nocheinmal einloggen möchte (Mit gleichen Daten), was ja verhindert werden soll, kommt einmal "Failed Login detected! (Incorrect Password)" und danach direkt die Daten des Spielers (was ja bedeutet das der Login dann doch noch einmal ausgeführt wird). Es wird ja jeder Spieler durchgegangen und einmal existiert er ja schon (deswegen "Failed Login...") aber ein anderes Mal existiert er ja noch nicht. Wie kann ich das verhindern? Mfg, N0X //EDIT: Achja, einmal existiert er nicht, weil ich am Anfang einen Test-User erstellt haben muss. Das gleiche würde ja aber auch auftreten, wenn mehr als ein User eingeloggt ist. Code war etwas falsch, hier der Neue: BlitzMax: [AUSKLAPPEN] Print "Client logging..." |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich wäre dafür, dass du mit Debuggen anfängst.
Das ist nämlich viel effektiver, als anderen den Code zum "manuellen Ausführen" zu geben. ![]() Die Anmerkung mit der Kontrollschleife hast du auch noch nicht beachtet. Im Moment wird der Kontrollwert auf 1 gesetzt, wenn es einen anderen angemeldeten Benutzer gibt. Eigentlich sollte also sogar gar kein Benutzer erstellt werden, da iFileExists immer 0 ist. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, iFileExists hätte ich wohl eher erlaube_login nennen sollen... ![]() Also, wenn der User der sich gerade einloggen möchte noch NICHT in der aktuellen Userliste vorhanden ist, und er registriert ist (also wenn die Datei mit dem Usernamen existiert), ist es ihm erlaubt sich anzumelden. Mein Problem ist doch eher, das er alle durchgeht und dann erlaubt wenn noch ein anderer User drin ist und dann doch wieder nicht erlaubt weil man selbst auch drin ist etc. Aber vom restlichen Code her ist doch alles richtig. (?!) Kannst du mir bitte nochmal genau erklären was ich da jetzt falsch mache? Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, ich habe mir jetzt noch einmal die Zeit genommen, den Code durchzuarbeiten und die Auffälligkeiten zu markieren.
BlitzMax: [AUSKLAPPEN] Print "Client logging..." mfG mpmxyz P.S.: Es ist viel praktischer, wenn man selbst auf Fehlersuche geht. ![]() |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group