Seite 1 von 4
StringGadget-Text mit GetGadgetText() ermitteln
Verfasst: 09.05.2008 15:30
von DrNo
Hallo,
Ich habe vor ca. ner woche Pure Basic entdeckt und bin begeistert!
Ich hab ein im Prinzip ganz einfaches Problem, wo ich aber nicht weiterkomme und im Rest des Forums finde ich auch nichts dazu.
Und zwar will ich ein Programm machen, das bestimmte Daten erst rausrückt, wenn davor der Richtige Text (sozusagen Passwort) eingegeben wurde. Dies dient keinem bestimmen Zweck, ich würde aber gern wissen wie sowas funktioniert. Also wie das Programm den eingegebenen Text (mithilfe von GetGadgetText() ) ermittelt und dann mit einem bestimmen Text vergleicht und dann je nachdem ob gleicher text oder nicht reagiert (If)
Hoffe auf schnelle antwort!
Danke
Wenn ich zu kompliziert beschreibe kann ich auch den Code posten.
Verfasst: 09.05.2008 15:33
von edel
Willkommen ...
Vergleichen kannst du mit "IF"
Code: Alles auswählen
result.s = GetGadgetText(0) ; gadget anpassen
If result = "passwort"
debug "richtig"
else
debug "falsch"
endif
Verfasst: 09.05.2008 15:39
von DrNo
Danke für die schnelle antwort!
Genau ins schwarze getroffen!
Jetzt kann ich endlich weitermachen.
Da ich wohl im richtigen forum gelandet bin werd' ich hier dann noch öfters meine Anfängerfragen stellen

Verfasst: 09.05.2008 19:17
von DrNo
Ich hab noch mehrere kleine Fragen, für die es sich nicht lohnt einen neuen Tread aufzumachen:
Bei Goto <Sprungmarke> ... was ist da mit Springmarke gemeint?? also die Zeile auf jedenfall nicht. Und welchen Befehl kann ich benutzen um zu einer bestimmten Zeile zu springen oder geht das mit dem?
(Z.B das das Script automatisch je nach Benutzer zu einem bestimmen Punkt springt)
Und wenn ich die Client - Serverbeispiele mit meinem aktuellen Passwort- programm mische, was muss ich dann machen damit der Client die Eingegebenen Texte sendet und der Host dann den einkommenden String wie oben im Normalen Programm prüft und das ergebnis wieder zurückschickt?
Verfasst: 09.05.2008 19:33
von tobe
hi DrNo,
Sprungmarken sind einfach ein text mit einem doppelpunkt dahinter
Code: Alles auswählen
Goto Sprungmarke
Debug "wird übersprungen"
Sprungmarke:
Debug "ende"
End
unter gosub findet man in der hilfe auch ein paar beispiele.
bei den netzwerk sachen wird es schon etwas komplizerter, ich glaub da würde dich ein fertiger code von mir erstmal etwas überfordern, daher schau dir einfach mal alles genau an, probiere etwas herum und wenn du irgendwas nicht verstehst, dann frag einfach nochmal nach

Verfasst: 09.05.2008 22:55
von DrNo
Und wenn ich die Client - Serverbeispiele mit meinem aktuellen Passwort- programm mische, was muss ich dann machen damit der Client die Eingegebenen Texte sendet und der Host dann den einkommenden String wie oben im Normalen Programm prüft und das ergebnis wieder zurückschickt?
Verfasst: 09.05.2008 23:05
von tobe
dann musst du den eigegebenen text an den server(host) schicken, dort prüfst du dann ob das ergebnis stimmt und schickt es an den client zurück

texte kannst du mit SendNetworkString() verschicken so wie es auch im client beispiel gemacht wird.
Verfasst: 09.05.2008 23:12
von DrNo
Das ist mir schon klar aber wie er
den Text im String schickt wo man davor im Feld eingegeben hat. Und wie man dann auf der anderen Seite genau
den Text vergleichen lässt wo empfangen wurde.

Verfasst: 10.05.2008 01:49
von tobe
ich hab jetzt mal aus den Client und Serverbeispielen etwas zusammengebastelt wo ein string zum server geschickt wird, dort wird er mit einem anderen string verglichen und das ergebnis wird an den client zurückgeschickt
Code: Alles auswählen
EnableExplicit
#PORT = 6832
#SIZE = 1000
;/
Define Quit
Procedure Server(dummy)
Shared Quit
Protected *Buffer, SEvent, ClientID, len, Text$
*Buffer = AllocateMemory(#SIZE)
If CreateNetworkServer(0, #PORT)
Debug "Server created (Port "+Str(#PORT)+")."
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case #PB_NetworkEvent_Connect
Debug "Server: A new client has connected !"
Case #PB_NetworkEvent_Data
Debug "Server: Client "+Str(ClientID)+" has send a packet !"
len = ReceiveNetworkData(ClientID, *Buffer, #SIZE)
Text$ = PeekS(*Buffer, len)
Debug "Server: "+Text$
If Text$ = "geheim"
Text$ = "Kennwort ist richtig"
Else
Text$ = "Kennwort ist falsch"
EndIf
SendNetworkString(ClientID, Text$)
Case #PB_NetworkEvent_Disconnect
Debug "Server: Client "+Str(ClientID)+" has closed the connection."
Debug "Server wird beendet"
Quit = 1
EndSelect
EndIf
Until Quit = 1
CloseNetworkServer(0)
Else
MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf
FreeMemory(*Buffer)
EndProcedure
;/
Define ThreadId, ConnectionID, Text$, CEvent, *Buffer, len, Stop
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
ThreadId = CreateThread(@Server(), 0)
;/
ConnectionID = OpenNetworkConnection("127.0.0.1", #PORT)
If ConnectionID
Debug "Client connected to server..."
Text$ = InputRequester("PureBasic - Client", "Kennwort eingeben:", "")
SendNetworkString(ConnectionID, Text$)
*Buffer = AllocateMemory(#SIZE)
Repeat
If NetworkClientEvent(ConnectionID) = #PB_NetworkEvent_Data
len = ReceiveNetworkData(ConnectionID, *Buffer, #SIZE)
Text$ = PeekS(*Buffer, len)
Debug "Client: "+Text$
MessageRequester("PureBasic - Client", Text$, 0)
Stop = 1
EndIf
Until Stop = 1
CloseNetworkConnection(ConnectionID)
FreeMemory(*Buffer)
Else
MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
Quit = 1
WaitThread(ThreadId)
End
Verfasst: 10.05.2008 11:07
von DrNo
ok danke kann ich gut gebrauchen
