Path: news.net.uni-c.dk!not-for-mail From: Mikkel Ricky Newsgroups: daimi.beta Subject: Re: Edittext/dialogfield - =?iso-8859-1?Q?begr=E6nsninger=2Bautomatik?= Date: Mon, 07 May 2001 16:56:01 +0200 Organization: UNI-C Lines: 47 Message-ID: <3AF6B781.F57ED3D4@brics.dk> References: <3AEFD154.85DB4A37@cs.au.dk> <3AF68566.37C29C08@brics.dk> <3AF6AC3D.6BEA43CD@cs.au.dk> NNTP-Posting-Host: russell.cs.au.dk Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: news.net.uni-c.dk 989247361 27912 130.225.19.156 (7 May 2001 14:56:01 GMT) X-Complaints-To: usenet@news.net.uni-c.dk NNTP-Posting-Date: Mon, 7 May 2001 14:56:01 +0000 (UTC) X-Mailer: Mozilla 4.76 [en] (X11; U; IRIX 6.5 IP32) X-Accept-Language: en Xref: news.net.uni-c.dk daimi.beta:10557 Mads Brogger Enevoldsen wrote: > Mikkel Ricky wrote: > > > Rene Kragh Pedersen wrote: > > > > > Kan man begrænse en edittext eller et dialogfield, så der kun kan være > > > et vist antal tegn i? Så det kun kan være heltal? > > > > Det overvejede jeg også i sin tid og nu har jeg efter lang tids uddannelse > > fundet svaret. > > > > Hvis du i stedet for 'editText' bruger 'TextField' kan du fange event'et > > 'onBeforeChange' og validere teksten i feltet. > > Ja. Sådan ville jeg også gøre det. > For at validere indholdet af textField'et kan du bruge BETA's regulære udtryk > (pcre). > > Det må være noget i denne stil: > ('^(0|[-]?[1-9][0-9]*|-)$'->pcre)->numberCheck[]; Det er rigtigt at man kan bruge de indbyggede regulære udtryk, men man skal så huske at udtrykket også skal matche alle prefixer af lovlige strenge. Hvis fx man vil have et dato-felt og skriver (for eksemplets skyld et noget simpelt dato-format) ('^[0-9]{2}/[0-9]{2}/[0-9]{4}$'->pcre)->regexp[]; så vil man aldrig få lov at skrive noget i feltet da fx strengen '23/05' ikke er en dato, men kun et prefix af en dato og derfor ikke matches af udtrykket. Man må i stedet bruge udtrykket ^([0-9]{1,2}/?){0,2}([0-9]{0,4})?$ eller noget lignende og så lave et extra check når man vil vide om det indtastede rent faktisk er en komplet dato. Ved at bruge en dfa er det nemt at afgøre om textfeltet indeholder noget der kan blive til en dato, men der skal alligevel laves et sidste check på et eller andet tidspunkt tidspunkt. Mvh Mikkel PS: Er det en fejl - enten fra min eller Betas side - at udtrykket '\d+' ikke matcher strengen '23'? Ifølge dokumentationen ("https://beta.cs.au.dk/doc/basiclib/pcre.html#H2_12") synes jeg det burde matche.