Type einer Variable herausfinden (....like IsInt(variable))

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

tmode00

Betreff: Type einer Variable herausfinden (....like IsInt(variable))

BeitragSo, Mai 06, 2007 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

wie kann ich den Datentyp einer Variable ermitteln. Hat Blitzbasic eine Function die ermittelt ob es sich bei der übergebenen Variable um eine Zahll oder um einen Text handelt? Ich brauche es, um zu prüfen ob es sich bei einer Usereingabe um eine Zahl hadelt (dann ok) und wenn nicht dann halt >> "FEHLER, ZAHL MUSS EINGEGEBEN WERDEN, KEIN TEXT"

example:

Code: [AUSKLAPPEN]
While Not KeyHit(1)
   If (z_weite >= 20) And (z_weite < 10000) Then
      Exit
   Else
      z_weite = frage("Länge des Levels!","Wie lang soll das Level sein?","Auswahl (min. 20):")
      txt$ = ""
      
   EndIf
Wend


Frage() ist eine Function die per value=getkey() in einer Schleife Tasteneingaben verfolgt und nach Ok klick das ergebnis in der Globalen Variable txt$ speichert (ich weis das man globale variablen nicht so verwenden soll sondern vielmehr Return verwenden soll, das ist aber nicht möglich da Return nur Int und kein Str zurückgeben kann, die function Frage aber auch in zusammenhang mit Texteingaben z.B. Ihr Name--> _ verwendbar sein soll)

Zusammenfassende Frage:
gibt es schlicht und einfach eine Function die so aufgebaut ist:

IsStr$(Stringvariable$) Rückgabe--> 1 = true (ja, es ist ein string) / 2 = false (nein es ist keiner)

oder

IsInt$(zahl) --> 1 = true / 2 = false



....
Thanks im Voraus and sorry for the bad Rechtschreibung!!
While (1) : Wend

BladeRunner

Moderator

BeitragSo, Mai 06, 2007 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
function IsNumber(ein$)
    if int(ein) = ein then return true
    return false
end function

Ungetestet, sollte es aber sein.
Und natürlich kann ein return auch einen String zurückgeben.
Du musst deine Funktion nur im Kopf passend deklarieren
Code: [AUSKLAPPEN]
function zeichenkette$(parameter)

liefert eine Zeichenkette zurück Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

tmode00

Betreff: Oh

BeitragSo, Mai 06, 2007 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Herzlichen Dank, ich mache manchmal noch hier und da Fehler, ich wusste nicht das das in Blitzbasic geht aber das wird dann wohl dem

char functionsname(functionsparameter); von anderen programmiersprachen entsprechen, ich dachte mir schon fast das blitzbasic das auch kann!

Vielen dank ich habe es mit deiner hilfe nun so gemacht:
Code: [AUSKLAPPEN]

While Not KeyHit(1)
   If (Int(z_weite$) >= 20) And (Int(z_weite$) < 10000) Then
      Exit
   Else
      z_weite$ = frage("Länge des Levels!","Wie lang soll das Level sein?","Auswahl (min. 20):")
   EndIf
Wend


und die function Frage:

Code: [AUSKLAPPEN]

Function frage$(titel$,frage$,auswahl$)
   FlushKeys
   
   ;Sound abspielen
   chn = PlaySound(warnung_snd)
   temp = MilliSecs()
   If MilliSecs() - temp > 3000 Then StopChannel(chn)
 
   While (1)
      Cls
      ;zeichnen:
      DrawImage bg,0,0
      DrawImage frage_map,312,200
      DrawImage ok,455,345
      SetFont titel_schrift
      ;Titel
      Color 100,100,200
       Text 323,201, titel$
       ;Frage ausgeben
       SetFont gros_schrift
       Color 0,0,0
       Text 330,240,frage$
      
      ;Backspace + Entf-->
      If KeyDown(14) And count > 0 Then
         Delay(100)
         count = count - 1
         txt$ = LSet$(txt$,count)
      EndIf   
      
      
      value = GetKey()
   
      If value <> 0 And value <> 8 Then
         txt$ = txt$ + Chr$(value)
         count = count + 1
         value = 0
      EndIf
   
         

      Text  330,290, auswahl$ + ": " + txt$   
      ;Okay-EVENT-->
      If  RectsOverlap(MouseX(), MouseY(), 1,1, 455, 346, 345,36) Then
         If MouseHit(1) Then
            Return txt$;zurückgeben
         EndIf
      EndIf
      ;OKay-Event durch Enter   
      If KeyHit(28) Then
         Return txt$;zurückgeben   
      EndIf
      ;Escape:
      If KeyHit(1) Then Exit
      ;Maus:
      DrawImage mouse_map,MouseX(),MouseY()
      FlushMouse()
      Flip
   Wend
End Function




Dankeschön!!!
While (1) : Wend

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group