webForumDet fria alternativet

Vilken datatyp?

4 svar · 191 visningar · startad av clarkbones

clarkbonesMedlem sedan feb. 20013 023 inlägg
#1

Hur kan jag läsa av vilken datatyp en variabel har?

nikoMedlem sedan juni 20022 599 inlägg
#2

För referenstyper kan man använda TypeOf-operatorn:

if TypeOf x is ADODB.Connection then ..

För enkla värdetyper (integer, long ..) tror jag inte det går. Fast då finns det väl egentligen aldrig nåt behov eftersom dessa inte kan ändras run-time?

clarkbonesMedlem sedan feb. 20013 023 inlägg
#3

Nja, det är så att jag har en funktion accepterar vissa inparametrar. En inparameter ska vara ett tal. Om nu användaren skriver "kalle" istället för 1, 178 eller 3042 så vill jag kunna upplysa användaren om att inmatningen är fel. Jag trodde det fanns något enkelt sätt att bara läsa av datatypen. Men jag kan nog göra någon lite mer avancerad funktion som kollar vad användaren matat in...

Men vad menar du att de inte kan ändras run-time? Om jag kör cstr till exempel så är väl det an datatypsförändring som sker run time?

Tack för hjälpen...

nikoMedlem sedan juni 20022 599 inlägg
#4

OK. Det verkar som jag missförstod lite. Det du talar om skulle jag snarare kalla formatet än typen på datan och du borde kunna använda funktioner som tex IsNumeric.

clarkbones skrev:

Men vad menar du att de inte kan ändras run-time? Om jag kör cstr till exempel så är väl det an datatypsförändring som sker run time?

Jag menar ungefär så här: Om X är en referenstyp så kan X referera till olika saker under körningen och det kan finnas behov av att kolla typen:

dim X as Object

set x= new ADODB.Connection

'40 rader längre ner:

set X = new ADODB.RecordSet

' Ännu längre ner:

if TypeOf X is ADODB.Connection then ..

Om X däremot är en värdetyp tex en Integer så är ju detta fastslaget redan under kompileringen och X kan aldrig representera nåt annat än 2 bytes i minnet. CStr och andra konverteringfunktioner används när man vill omtolka datan och placera den nån annanstans:

dim X as Integer
Dim Y as String
X=7
Y=CStr(X)

Här kommer ju X för evigt att fortsätta vara en 2-bytes integer och det finns aldrig nåt behov av att skriva tex:

if TypeOf X is Integer then

Det var så jag menade ..

clarkbonesMedlem sedan feb. 20013 023 inlägg
#5

OK, tack för att du tog tid.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)