Code: Alles auswählen
Structure User ;{
sName.s{255}
sPass.s{32}
EndStructure ;}
Global NewList User.User()
OpenConsole()
Define sInput.s, b1.b
Repeat
sInput = LCase(Input())
Select sInput
Case "new" ;{
AddElement(User())
Print(" Name: ")
User()\sName = Input()
Debug User()\sName
Print(" Passwort: ")
sInput = Input()
User()\sPass = MD5Fingerprint(@sInput, Len(sInput)) ;}
Case "write" ;{
Print(" Dateiname (+ Pfad): ") ; user.dat nehmen
CreateFile(0, Input())
CompilerIf #PB_Compiler_Unicode
WriteStringFormat(0, #PB_UTF8)
CompilerEndIf
ForEach User()
WriteData(0, @User(), SizeOf(User))
Next User()
CloseFile(0) ;}
Case "list" ;{
Print(" ")
If CountList(User())
Print(" Name | Passwort (als MD5-Hash) ")
Print(" -------------------------------------------+----------------------------------")
ForEach User()
Print(" "+LSet(User()\sName, 42)+" | "+LSet(User()\sPass, 32)+" ")
Next
Print(" -------------------------------------------+----------------------------------")
Print(" User: "+Str(CountList(User())))
Else
PrintN(" Kein User angegeben. User wird mit 'new' erstellt.")
EndIf
PrintN("") ;}
Case "delete" ;{
b1 = #False
Print(" User: ")
sInput = LCase(Input())
ForEach User()
If LCase(User()\sName) = sInput
b1 = #True
DeleteElement(User(), 1)
Break
EndIf
Next
If Not b1
PrintN(" User konnte nicht gefunden werden.")
Else
PrintN(" User wurde gel"+Chr(148)+"scht.")
EndIf ;}
Case "exit" ;{
Break ;}
Default ;{
PrintN(" ")
PrintN(" new -> Erstellt neu User in der Liste")
PrintN(" write -> Schreibt neue User aus der Liste in die angegebene Datei")
PrintN(" list -> Listet alle eingegeben User auf")
PrintN(" exit -> Beendet das Programm")
PrintN(" ") ;}
EndSelect
Delay(20)
ForEver
End
TEST_IT.pb
Code: Alles auswählen
Enumeration
#UserList
EndEnumeration
Structure User
sName.s{255}
sPass.s{32}
EndStructure
Global NewList User.User()
If OpenFile(#UserList, "user.dat") = #False
MessageRequester("Information","Konnte Datei nicht öffnen!")
PrintN("Server-Error 1")
End
EndIf
Procedure RefreshList(Wert)
Repeat
ClearList(User())
FileSeek(#UserList, 0)
While Eof(#UserList) = 0
AddElement(User())
ReadData(#UserList, @User(), SizeOf(User))
Wend
user.s=""
ForEach User()
user=user+User()\sName+"|"
Next
PrintN("RefreshList: "+user)
Delay(5000)
ForEver
EndProcedure
Structure Client
ClientID.l
sLastMsg.s
EndStructure
Global NewList Client.Client()
OpenConsole()
PrintN("Server-Start")
CreateThread(@RefreshList(), 23)
Repeat
Delay(10000)
ForEver
PrintN("Server-End")
CloseFile(#UserList)
CloseConsole()
End
Wenn Ihr diese beiden Codebeispiele in dem selben Verzeichnis speichert und zuerst die Print.pb aufruft, einen User anlegt und in die Datei schreibt, sollte wenn ihr das Script TEST_IT.pb in der Console den Name des Users ausgeben.
Dabei gibt es nur Fragezeichen bei mir aus...
Beide Codes werden bei mir als Unicode-Executables erstellt und benutzen als Textkodierung UTF-8 im Quelltext.
Ich wäre für schnelle Hilfe sehr dankbar.