PDA

Volledige versie bekijken : invoercontrole


LIJN
%Europe/Berlin %422 %2005, 11:07
hey,
er zit iets mis in onderstaande invoercontrole, maar wat?
er worden dus vijf ingevoerde gegevens naar een functie gestuurd.
onderstaande controle kijkt na of de ingevoerde gegevens groter zijn dan 0 of kleiner dan 100.
daarna kijkt hij na of het ingevoerde werkelijk een cijfer is (bij geval andere tekens worden ingevoerd) maar dit gebeurt niet zoals het moet dus...
controleMovement doet een grafiek ontstaan volgens de ingevoerde gegevens maar het probleem ligt blijkbaar in onderstaande functie.




function controleCijfer(x1,x2,x3,x4,x5){

if (x1 < 0 || x1 > 100 || x2 < 0 || x2 > 100 || x3 < 0 || x3 > 100 || x4 < 0 || x4 > 100 || x5 < 0 || x5 > 100){
fout._visible = true;
trace("niet kleiner dan nul of niet hoger dan 100");

}
else
{
trace("x1 = " + x1 )
var isGetal:Boolean = false;
for(var i = 0; i <= 100; i++)
{
if(x1 == i && x2 == i && x3 == i && x4 == i && x5 == i)isGetal = true;

}
if(isGetal)controleMovement = true;
else trace("er is geen nummer ingevoerd")
}
}



thx alvast!

Smartie
%Europe/Berlin %471 %2005, 12:18
for(var i = 0; i <= 100; i++)
{
if(x1 == i && x2 == i && x3 == i && x4 == i && x5 == i)isGetal = true;

}

Volgens mij zorgt dit ervoor dat isGetal alleen true is op het moment dat al je x waardes gelijk zijn.

LIJN
%Europe/Berlin %500 %2005, 13:00
Ja dat heb ik ook al gedacht, maar het zou dat toch niet mogen doen, hé?
Heb je een idee om het anders te doen?

Thx!

Roenes
%Europe/Berlin %598 %2005, 15:22
Dat 2e forlusje is volgens mij zinloos aangezien je daarin gaat kijken of alle ingevoerde waardes hetzelfde zijn. Ga maar na, de if is alleen waar als x1 gelijk is aan i MAAR OOK x2 gelijk aan i enz.. Oftewel: de if is alleen waar als x1 == x2 == x3 == x4 == x5 == i

maar je wil checken of ieder ingevoerde waarde een nummer is. dat doe je met typeof. Daarmee kun je checken wat het type van een var is. Volgens mij moet je 2e forlusje dit worden:

trace("x1 = " + x1 )
var isGetal:Boolean = true;
for(var i = 1; i <= 5; i++)
{
if(typeof("x" + i) != "number") isGetal = false;
}
Je maakt isGetal eerst true. Als in de if blijkt dat 1 van de waardes geen nummer is, dan maak je em false.

Maar even een ander punt. Ik zie dat je bij isGetal netjes het type declareerd: isGetal:Boolean. Als je dit ook doet bij de invoer van je parameters, dan is die laatste check overbodig:

function controleCijfer(x1:Number,x2:Number,x3:Number,x4:Nu mber,x5:Number){Nu geeft de compiler een fout als je iets verkeerd invult en is je check dus overbodig :)

LIJN
%Europe/Berlin %631 %2005, 16:08
Morgen probeer ik dat uit ! :)
Maar de invoer is wel een input gedeclareerd als type String, zodoende kan hij een cijfer ook aanzien als String en dus niet als Number...
Maar ik probeer het morgen uit en je hoort nog van me ! :)

Roenes
%Europe/Berlin %644 %2005, 16:28
Waarom de input het type String geven als je toch alleen maar nummers wilt? :)

LIJN
%Europe/Berlin %331 %2005, 08:57
maar ik moet toch iets laten kunnen invoeren zodus heb ik toch een input veld nodig
en dit als volgt gedeclareerd:

var invoerP:String="";



of kan dat ook anders?

LIJN
%Europe/Berlin %346 %2005, 09:18
ik kan toch niet beginnen met

var invoer:Number=0;

want dan is mijn invoer toch nul
dus heb ik

var invoer:String="";

nodig om een invoer te hebben die enkel de bezoeker bepaalt...
nee?
(zal ik anders de hele AS-file eens sturen?)

LIJN
%Europe/Berlin %435 %2005, 11:26
ok, was het proberen waard

if (typeof(x1) != "number") isGetal = false;


maar deze voorwaarde wordt niet uitgevoerd, want bij het invoeren van een getal, geeft hij nog steeds isGetal = false....(?)

als je nog een idee hebt, is deze meer dan welkom !

LIJN

Roenes
%Europe/Berlin %454 %2005, 11:54
Zet je flash file eens online :P Dat werkt wat handiger :)

LIJN
%Europe/Berlin %492 %2005, 12:48
kan ik idd in 't vervolg doen
maar ik heb een oplossing gevonden
:) !!!
namelijk een eerste getal controleren en als dat een goed getal is dan pas een tweede enzovoort... voor één invoer werkt mijn methode namelijk wel
:) !!!
thx allemaal!!!!!!!!!!!!!!!!!!!!!