ayuda con visual basic 6

#1
Que tal bakunos! Espero me puedan ayudar u orientar.

Me dejaron hacer un programa el cual consiste en que un usuario introducira las placas de su auto para que le mande un mensaje del dia en que no circula...

El problema lo resolvi asi:

a una variable de 6 numeros (placa DF) extraje el ultimo numero con la funcion MID
ejemplo: 123AAA
es decir, extraje el numero 3...

a otra variable de 7 numeros (placa foranea) extrañe el ultimo numero con la funcion RIGHT...
ejemplo: PPP1234
Es decir, extraje el numero 4...

ya con estos numeros finales puedo determinar que dia de la semana descansa.
Pero ahora, si por error un usuario teclea unicamente letras, por ejemplo: AAAAAA
el cual tiene una una variable de seis caracteres (asi que ingresa a tipo de placa DF) pero tipo STRING...
entra a mi select case pero me marca error porque claro, espero recibir un numero y no una letra....

Lo que quiero es "cachar" ese STRING en mi variable pero no se como "extraerla" para poder desecharla o para mandar un mensaje de error...

alguien me podra ayudar?
gracias!
 

EvilSama

Bovino de alcurnia
#2
Lo que puedes hacer es extraer caracter por caracter de tu variable y evaluarlos, con ayuda de un ciclo y un mid.

Código:
dim uncaracter as string =""

for i=1 to len(PlacaDF) ' en su defecto un 3 ya que segun tu la placa del                       
                        'df tiene 3 numeros al inicio
     uncaracter=mid(placadf,i,1)
     'luego le puedes hacer un isnumeric al caracter extraido
     if not isnumeric(uncaracter) then
             msgbox("la matricula no tiene el formato correcto, revise")
             exit sub
     end if

next i

espero te sirva :)
 

Moonstar

Bovino adicto
#3
Si las placas del df tienen un formato definido osease "NNNCCC", donde N es numero y C es caracter, las foraneas tienen un valor similar pero al ravez "CCCNNNN" y eso tomando en cuenta que el valor del caracter que no circula esta dentro de la placa, el valor dado con "CCCCCC" sera una placa invalida, pero sera valida en el caso de "NNNNNN" dira que es del df, puede que no cirule en un dia 8 lo cual es invalido, recueda que solo hay 2 estados de fuera o del df, lo que nos da que si es "NNNNNN" y es 8 o mas el caracter 3 entonces es foranea y si falla de nuevo siendo mas de 8 el caracter 7 entonces es un doble fallo siendo un error de placas, tomando en cuenta que cada entidad tiene su propia manera de estabelcer las placas, quedando algo como esto
Código:
si caracter 3 es numerico y es menor a 8 entonces 
--dia que no circula es el caracter 3
si no
--si caracter 7 es numerico y es menor a 8 entonces
---es foranea y el dia que no circula es el caracter 7
--sino
---placa con matricula invalida o almenos eso espero
--fin si
fin si
Ese seudocodigo te puede servir, la verdad no me gusta poner codigo en X o Y lenguaje porque pareceria que quiero que copies o pegues y ese no es el objetivo, solo ayudar.

Puede tambien darse el caso de que no haya caracter 7 entonces caeria en el mismo caso de que no se puede calcular, pero eso ya son casos extremos.
 
Arriba