2009-12-30 285 views
7

habíamos desarrollado una aplicación utilizando vb6.0 y SQL Server 2000 hace unos años. recientemente, algunos de nuestros clientes nos dicen que al ejecutar la aplicación, en algunas computadoras que usan Winxp sp2 como su O/S, reciben el siguiente error cuando quieren mostrar el formulario de búsqueda:¿Qué causa este error? "Error de tiempo de ejecución 380: valor de propiedad no válido"

"Error de tiempo de ejecución 380: valor de propiedad no válido "

¿Qué causa este error?

+0

Como muchos de los otros comentarios indican. La fuente más importante de este problema que he visto es que faltan fuentes. En mi caso, fuentes pequeñas y Sans Serif faltaban en Windows 10. – wizebin

Respuesta

8

Supongo que su aplicación utiliza un cuadro de edición enmascarado? Este es un problema relativamente bien conocido y documentado por Microsoft aquí:

http://support.microsoft.com/kb/177088

El artículo se refiere a VB4 y 5, pero estoy bastante seguro de que lo mismo es cierto para VB6.

EDITAR

En futuras investigaciones, estoy encontrando referencias a este problema con otros controles también. Volver a compilar su aplicación en Windows XP para usuarios que están ejecutando XP probablemente les produzca una versión funcional, aunque no es una solución ideal ...

+0

David, Comprobé que son controles MaskEditBox. Bueno, vi 4 MaskEditBoxes en el formulario de búsqueda, pero desafortunadamente, su propiedad visible era cierta en el momento del diseño. – odiseh

+4

Este error no ocurre simplemente debido a errores en los controles de Microsoft. También ocurre cuando comete un error de programación y establece accidentalmente una propiedad con un valor no válido. Algo diferente en las máquinas del usuario está causando el comportamiento diferente, p. Temas de Windows o diferentes configuraciones de la aplicación. – MarkJ

5

¿Cuál es la causa de runtime error 380? Intentando establecer una propiedad de un objeto o control a un valor que no está permitido. Mire a través del código que se ejecuta cuando se carga su formulario de búsqueda (Form_Load, etc.) para cualquier código que establezca una propiedad a algo que dependa de los valores de tiempo de ejecución.

Mi otro consejo es agregar un poco de manejo de errores y algo de registro para rastrear la línea exacta que está causando el error.

  • registro declaraciones Espolvorear a través del código que dicen "Tengo que X", "Got a Y", etc. Utilice estos para encontrar la ubicación exacta del error. Puede escribir en un archivo de texto o event log o usar OutputDebugString.
  • Error al manejar Aquí se explica cómo obtener un error de stack trace. Agregue un controlador de errores a cada rutina que pueda estar involucrada, como este código a continuación. La herramienta gratuita esencial MZTools puede hacer esto automáticamente. También puede usar Erl para informar los números de línea y encontrar la línea exacta: MZTools puede ingresar automáticamente los números de línea.

_

On Error Goto Handler 
    <routine contents> 
Handler: 
    Err.Raise Err.Number, "(function_name)->" & Err.source, Err.Description 
+0

Marca, es Vb6.0 :(No hay forma de obtener el sombrero de línea exacto que causa el error. – odiseh

+2

@odiseh No te rindas todavía, hay docenas de formas de obtener la línea exacta que causa el error. Lo he hecho carga muchas veces. He editado mi respuesta con algunas sugerencias. – MarkJ

+2

@odiseh: Si agrega números de línea a su código, Erl devolverá el número de línea en el que ocurrió el error. – jac

7

Sólo para tirar mis dos centavos en: otra causa común de este error en mi experiencia es código en el evento Form_Resize que utiliza las matemáticas para cambiar el tamaño de los controles en un formulario. dimensiones de control (Height y Width) no se pueden ajustar a valores negativos, así como el código siguiente en su evento Form_Resize pueden causar este error:

Private Sub Form_Resize() 
    'Resize text box to fit the form, with a margin of 1000 twips on the right.' 
    'This will error out if the width of the Form drops below 1000 twips.' 
    txtFirstName.Width = Me.Width - 1000 
End Sub 

El código anterior generará un error "valor de la propiedad no válido" si la forma se redimensiona a menos de 1000 twips de ancho. Si este es el problema, la solución más fácil es agregar On Error Resume Next como primera línea, para que este tipo de errores se ignoren. Esta es una de esas situaciones raras en VB6 donde On Error Resume Next es tu amigo.

0

Parece que las respuestas anteriores son para cuando está escribiendo y compilando un programa, pero estoy usando un software de proveedor, Catalog.exe, parte del catálogo de tarjetas Voyager de "Ex Libris" y aparece el error como así:

catalog-error.png http://img805.imageshack.us/img805/8275/catalogerror.png

que tienen dos máquinas 7 de 32 bits de Windows. El más nuevo me está dando el error, pero en el anterior funciona bien. He investigado mucho con Google y aquí están algunas de las cosas que he descubierto que la gente dice relacionadas con este tema. Tal vez una de estas cosas van a ayudar a solucionar el error para que, a pesar de que no funcionó para mí:

de lo que otros dicen (como David M) Creo que podría estar relacionado con el MSVBM60.DLL biblioteca, pero parece que en ambos equipos este archivo es exactamente el mismo (la misma versión, tamaño, fecha, etc.).

Como ese archivo no era diferente, traté de encontrar qué otros archivos (dll) la aplicación podría estar usando, así que inicié Process Explorer by Sysinternals y eché un vistazo a la aplicación (se carga y luego se cuelga cuando se lo dice " conectar "), y las capturas de pantalla a continuación son lo que encontré.

screen1.png http://img195.imageshack.us/img195/2231/screen1oo.png

screen2.png http://img88.imageshack.us/img88/2153/screen2ao.png

screen3.png http://img337.imageshack.us/img337/7622/screen3qk.png

Ahora, yo no soy un programador/VB de Windows, sólo un usuario de energía, y por lo que estoy a punto al final de mi conocimiento para qué que hacer. He hablado con el proveedor de software y recomiendan reinstalar Windows. Eso probablemente funcione, pero me molesta que este programa se pueda ejecutar en Windows 7, pero algo en este sistema en particular está causando errores. Finalmente, esta es una imagen que ya se implementó en varias máquinas, por lo que, aunque reinstalar Windows una vez, no es un gran problema, me ahorraría algo de tiempo si pudiera encontrar una solución o una solución alternativa.

+0

marque, Siento ser negativo en una nueva (ish) usuario, pero este sitio es para que los programadores hagan preguntas de programación. Puede obtener una mejor respuesta en [SuperUser] (http://superuser.com/). Además, usted está haciendo una pregunta en lugar de publicar una respuesta, todo Esto significa que debe marcarse para su eliminación. Dicho esto, obviamente ha puesto mucho esfuerzo en ello, así que le sugiero que edite/copie todo y publique como una nueva Q en SuperUser (o incluso aquí en SO si creo que limita con la programación). – Basic

+0

Por cierto , habiendo leído su Q en su totalidad, vale la pena señalar que Windows almacena múltiples versiones diferentes de la misma DLL en la carpeta 'Windows \ WinSxS' (Windows Side-by-side), por lo que es bastante posible que en realidad esté presentando versiones diferentes del DLL a la aplicación. – Basic

+0

@Basic - buenos puntos. He hecho ediciones para que esta sea una respuesta. Me doy cuenta de que SO generalmente es para preguntas de programación pero creo que con más de 20k vistas, algunas personas que encuentran esta pregunta (¿Qué causa este error? "Error de tiempo de ejecución 380: valor de propiedad no válido") no están buscando porque son programadores de VB por lo Sería útil para otros si esta respuesta se mantuviera. Gracias por la nota en 'Windows \ WinSxS' - ¡Lo echaré un vistazo! :) – mark

0

Creo que, básicamente, el problema radica en el hecho de en qué versión del O/S se ha compilado el programa y bajo qué versión de O/S está ejecutando el programa. He visto una gran cantidad de archivos dll y ocx actualizados que causan errores similares, especialmente cuando el programa se ha compilado en una versión anterior de los archivos dll y ocx y durante la configuración se conservan los últimos archivos dll y ocx.

+0

Esto es incorrecto. –

0

Si escribe software, o usa software escrito, que almacena las coordenadas de la ventana del programa o los tamaños que se rehusarán al iniciar un programa, verifique las ocurrencias de tales tamaños y posiciones que podrían estar causando esto. Lo he visto una y otra vez de varios proveedores que producen perezosamente código que cambia el tamaño y reposiciona los controles en un "formulario" (una ventana de programa) según el tamaño de dicho formulario. Mire en HKLM \ Software \ Vendor \ Program y HKCU \ Software \ Vendor \ Program. Busque claves específicas que puedan ser ofensivas. Una vez tuve un almacén de programas -48000 para la posición de la ventana del programa en las teclas llamadas WindowsPosX y WindowPosY. Se podía ver el inicio y ejecución del programa en la barra de tareas, pero dado que la ventana del programa en sí era menor que 48000 (el valor absoluto de -48000), se colocó completamente fuera de la pantalla. Si no se siente cómodo con la edición de información regstry (la mayoría de las personas no), desinstale el software, utilice un limpiador de registro para eliminar las entradas sobrantes, luego vuelva a instalar el software y vea si eso no soluciona el problema.

0

Podría estar ubicando en la pantalla un control (etiqueta, marco, texto ...) fuera de los bordes de la pantalla. Si la posición de algún control depende de cualquier variable, y esa variable no está definida correctamente al inicio, es posible que tenga este mensaje de error.

Puede ser que tenga una resolución de pantalla diferente en ambas computadoras. Y esa podría ser la razón.

con el fin de encontrar el fallo del programa, poner esta línea en todos los subtítulos: On Error Resume Next

si esto soluciona el problema, deberá borrar esta línea en cada sub, uno por uno, y verificar si el problema vuelve Cuando el problema vuelva a aparecer después de eliminar esta línea en un sub concreto, sabrá la subrutina que almacena el error. Busca allí y lo encontrarás.

[email protected]

0

Muchas cosas realmente tontas pueden causar este error. El que he encontrado es una fuente que ya no está incluida con Windows 8 de forma predeterminada: Courier New. La aplicación VB6 tenía su nombre codificado en una de las formas, de ahí el mensaje en la puesta en marcha.

1

Viejo hilo, pero aquí hay una respuesta.

fuentes problemática con voyager

es decir. si instala algún corel suite, elimine algunas opciones de idioma. Exploramos esto con el monitor de procesos y encontramos la razón, con nosotros fueron estos dos archivos de fuentes.

DFKai71.ttf dfmw5.ttf

Tuvimos mismo problema y lo arreglaron mediante la eliminación de estos dos ficheros de windows \ carpeta de fuentes.

0

Una razón para este error es un error muy tonto en el código. Si el valor correcto no se pasa a una propiedad de ActiveX, también se produce este error.

Al igual que el valor vacío se pasa a la propiedad Font.Name o el valor de texto se pasa a la propiedad Height.

0

2017 Lo sé ... pero alguien se enfrenta a este problema durante el mantenimiento de su código.

Este error ocurrió cuando intenté:

maskedbox.Mask = "#.###" 
maskedbox.Text = "12345678" 

Para corregir esto, acaba de establecer la propiedad PromptInclude a "falso".

-3

error 380 windows 7 solución muy fácil simplemente compruebe su fecha de tiempo & configuración regional hacerlas correctas.

Cuestiones relacionadas