Funktion und Datentyp

Previous topic - Next topic

WPShadow

Hi!

Ich habe da eine Frage, die (mal wieder) ziemlich blöd klingt: Wie kann ich unterschiedliche Datentypen mit einer Variable bearbeiten?

Die Idee ist folgende:

Ich möchte mit dem Befehl

Loaddata(1)

den index ansprechen, also eine simple nummer. Im Gegenzug dazu möchte ich aber auch die Möglichkeit offen lassen, dass jemand, der die Nummer nicht weiss, einfach

Loaddata("objektname")

ein gibt und dadurch auch dort hin kommt.

Wie genau muß da die Funktion beschaffen sein bzw. wie genau kann ich die Funktion anlegen, damit das auch funktioniert? Muß bzw. sollte ich alles erst mal als String einlesen und danach überprüfen, ob es sich um eine Zahl handelt oder so?

Hat wer eine Idee für mich?

Gruß

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

Das geht in GLBasic so nicht.
Mach halt 2 Funktionen:
Loaddata und Loaddata_fromID

WPShadow

Was ist, wenn ich beides als String einlese? Alias:

Loaddata("1") oder Loaddata("Objekt")

So würde es aber funktionieren, oder?
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

HeikoJ

Hallo,

warum soll das nicht gehen ?

Kann ich in GLBasic nicht erst der Variablen eine Zahl zuweisen und irgenwann später
der gleichen Variablen einen String ?
Ich gebe bei der Definition doch auch keinen Typ an. Da sollte es doch egal sein, was ich
übergebe.
Die Funktion müßte dann doch nur Abfragen ob die Übergabe eine Zahl ist oder ein
String und dann entsprechend anders reagieren.

Gruß Heiko

HeikoJ

Hallo,

gerade mal getestet :

Code (glbasic) Select
test(1)
SHOWSCREEN
MOUSEWAIT

test("Hallo")
SHOWSCREEN
MOUSEWAIT

END

FUNCTION test: var$

  IF ABS(var$)> 0
      PRINT "Eine Zahl", 10, 10
    ELSE    
      PRINT "Ein String", 10,20
  ENDIF

ENDFUNCTION
Sollte doch so gehen ?!?!!?

Gruß Heiko

WPShadow

Ich teste es sofort aus, wenn ich daheim bin! Es geht nämlich darum, daß ich aus der Datenbank mit Namen oder Indexnummer Daten einlesen kann! Wenn das halbwegs hin haut, dann wird das spitze! Im Augenblick muß man die Daten zwar noch händisch eingeben, aber ich schaue, daß ich noch eine GUI Eingabemaske schreibe. =)
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

Schlaues HeikoJ ;)

Aber das Problem wird wohl das umformen eines Strings in einen Integer sein ! wenn er es braucht, wovon ich ausgehe wie ich Willi kenn!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

HeikoJ

Hallo Schranz0r,

warum soll das Umwandeln ein Problem sein.
Wenn ich folgendes schreibe :

varint = var$

sollte es doch automatisch gehen ! Oder ?

Gruß Heiko

Schranz0r

Tatsache, und nochmal schlaues HeikoJ :)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

trucidare

Watn Scheiß erzählt ihr denn da?

int var kann nicht string var sein... zumindest sagt mir das c++ immer...
MacBook Pro 2,2 GHz Core 2 Duo, 4 GB RAM, 160 GB HDD, 8600M GT
Core i3 - 3,07 GHz, 8 GB Ram, 2.5 TB HDD, Geforce GTX 260+ OC

D2O

Geht doch??
Oder hab ich was falsch verstanden??

Code (glbasic) Select
GLOBAL get AS Tall

 get = getall("3")

PRINT get.a$,10,10
PRINT get.b/2*3+5,10,20

SHOWSCREEN
KEYWAIT


FUNCTION getall AS Tall: l_in$
LOCAL temp AS Tall
temp.a$ = l_in$
temp.b = l_in$
RETURN temp
ENDFUNCTION


TYPE Tall
a$
b
ENDTYPE
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Schranz0r

Es geht, habs auch getestet!

Code (glbasic) Select
var$ = "10"
varint = var$

PRINT var$,10,10
PRINT varint*2,10,20
SHOWSCREEN
KEYWAIT
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

WPShadow

???

Also ich kenne mich jetzt gar nicht mehr aus! =D
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

Korrekt. GLBasic wandelt worte in Zahlen und umgekehrt um:

a$ = "123.234"
zahl = a$
PRINT zahl, 0,0
SHOWSCREEN; MOUSEWAIT

WPShadow

So, habe herumexperimentiert wie ein Wahnsinniger und... es funktioniert nicht!

Habe alle möglichen Tests gemacht. Problem ist:

Wenn ich LOADDATA("test") schreibe, dann wird es super geladen.

Wenn ich jedoch LOADDATA(1) schreibe, dann habe ich das Problem, dass er 1 als Variable ansieht und ich als Inhalt 0 erhalte. Haben möchte ich aber 1 und als Konfortlösung wäre mir 1 ohne "" am liebsten.

Also LOADDATA(1) anstatt immer LOADDATA("1") schreiben zu müssen.

Hat wer eine Idee?
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est