Page 1 of 1

ASCAN me devuelve mal o no lo estoy entendiendo...

PostPosted: Wed Jan 17, 2024 2:48 pm
by goosfancito
Tengo un array:
Code: Select all  Expand view
  LOCAL aNumeros :=  ;
                     { ;
                       "ZERO", ;
                       "UNO", ;
                       "DUE", ;
                       "TRE", ;
                       "QUATTRO", ;
                       "CINQUE", ;
                       "SEI", ;
                       "SETTE", ;
                       "OTTO", ;
                       "NOVE", ;
                       "DIECI", ;
                       "UNDICI", ;
                       "DODICI", ;
                       "TREDICI", ;
                       "QUATTORDICI", ;
                       "QUINDICI", ;
                       "SEDICI", ;
                       "DICIASSETTE", ;
                       "DICIOTTO", ;
                       "DICIANNOVE", ;
                       "VENTI", ;
                       "VENTUNO", ;
                       "VENTIDUE", ;
                       "VENTITRÉ", ;
                       "VENTIQUATTRO", ;
                       "VENTICINQUE", ;
                       "VENTISEI", ;
                       "VENTISETTE", ;
                       "VENTOTTO", ;
                       "VENTINOVE", ;
                       "TRENTA", ;
                       "TRENTUNO", ;
                       "TRENTADUE", ;
                       "TRENTATRÉ", ;
                       "TRENTAQUATTRO", ;
                       "TRENTACINQUE", ;
                       "TRENTASEI", ;
                       "TRENTASETTE", ;
                       "TRENTOTTO", ;
                       "TRENTANOVE", ;
                       "QUARANTA", ;
                       "QUARANTUNO", ;
                       "QUARANTADUE", ;
                       "QUARANTATRÉ", ;
                       "QUARANTAQUATTRO", ;
                       "QUARANTACINQUE", ;
                       "QUARANTASEI", ;
                       "QUARANTASETTE", ;
                       "QUARANTOTTO", ;
                       "QUARANTANOVE", ;
                       "CINQUANTA", ;
                       "CINQUANTUNO", ;
                       "CINQUANTADUE", ;
                       "CINQUANTATRÉ", ;
                       "CINQUANTAQUATTRO", ;
                       "CINQUANTACINQUE", ;
                       "CINQUANTASEI", ;
                       "CINQUANTASETTE", ;
                       "CINQUANTOTTO", ;
                       "CINQUANTANOVE", ;
                       "SESSANTA", ;
                       "SESSANTUNO", ;
                       "SESSANTADUE", ;
                       "SESSANTATRÉ", ;
                       "SESSANTAQUATTRO", ;
                       "SESSANTACINQUE", ;
                       "SESSANTASEI", ;
                       "SESSANTASETTE", ;
                       "SESSANTOTTO", ;
                       "SESSANTANOVE", ;
                       "SETTANTA", ;
                       "SETTANTUNO", ;
                       "SETTANTADUE", ;
                       "SETTANTATRÉ", ;
                       "SETTANTAQUATTRO", ;
                       "SETTANTACINQUE", ;
                       "SETTANTASEI", ;
                       "SETTANTASETTE", ;
                       "SETTANTOTTO", ;
                       "SETTANTANOVE", ;
                       "OTTANTA", ;
                       "OTTANTUNO", ;
                       "OTTANTADUE", ;
                       "OTTANTATRÉ", ;
                       "OTTANTAQUATTRO", ;
                       "OTTANTACINQUE", ;
                       "OTTANTASEI", ;
                       "OTTANTASETTE", ;
                       "OTTANTOTTO", ;
                       "OTTANTANOVE", ;
                       "NOVANTA", ;
                       "NOVANTUNO", ;
                       "NOVANTADUE", ;
                       "NOVANTATRÉ", ;
                       "NOVANTAQUATTRO", ;
                       "NOVANTACINQUE", ;
                       "NOVANTASEI", ;
                       "NOVANTASETTE", ;
                       "NOVANTOTTO", ;
                       "NOVANTANOVE", ;
                       "CENTO" ;
                     }


y cuando hago lo siguiente me devuelve un valor 10, que debería de no devolver ningún valor ya que "DI" no existe en el array

Code: Select all  Expand view
  fwdbg AScan(aNumeros, "DI"), AScan(aNumeros, "DI",,,.t.)


Lo que estoy buscando es que me devuelva la posición solo cuando es "DIECI" no "DI"

Re: ASCAN me devuelve mal o no lo estoy entendiendo...

PostPosted: Wed Jan 17, 2024 3:55 pm
by karinha

Re: ASCAN me devuelve mal o no lo estoy entendiendo...

PostPosted: Wed Jan 17, 2024 4:26 pm
by sysctrl2
Code: Select all  Expand view

   aNumeros :=  ;
                     { ;
                       "ZERO", ;
                       "UNO", ;
                       "DUE", ;
                       "TRE", ;
                       "QUATTRO", ;
                       "CINQUE", ;
                       "SEI", ;
                       "SETTE", ;
                       "OTTO", ;
                       "NOVE", ;
                       "DIECI", ;
                       "UNDICI" }

   nAt := 0
   Ascan( aNumeros, { |c,nPos| IIF( c=="DI", nAt := nPos , 0 )  } )
   ? nAt

 

Re: ASCAN me devuelve mal o no lo estoy entendiendo...

PostPosted: Wed Jan 17, 2024 5:40 pm
by goosfancito
es posible que tenga mal yo el help del harbour? porque siempre use ascan como lo he utilizado hoy.

Re: ASCAN me devuelve mal o no lo estoy entendiendo...

PostPosted: Wed Jan 17, 2024 7:54 pm
by sysctrl2
en xharbour existe
igual y exactamente igual

c=="DI" //para validar mejor la condición yo siempre uso exactamente igual ==

saludos