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
:D

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 :D