8

几年前,我们使用 vb6.0 和 SQL server 2000 开发了一个应用程序。最近,我们的一些客户告诉我们,在运行该应用程序时,在某些使用 Winxp sp2 作为其操作系统的计算机上,当他们想要显示搜索表单时出现以下错误:

“运行时错误 380:无效的属性值”

是什么导致了这个错误?

4

13 回答 13

9

我想你的应用程序使用了一个蒙面的编辑框?这是一个相对众所周知的问题,Microsoft 在此处记录:

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

这篇文章提到了 VB4 和 5,但我很确定 VB6 也是如此。

编辑

在进一步的研究中,我发现其他控件也引用了这个问题。在 Windows XP 上为运行 XP 的用户重新编译您的应用程序可能会为他们生成一个工作版本,尽管这不是一个理想的解决方案......

于 2009-12-30T09:37:27.913 回答
7

Just to throw my two cents in: another common cause of this error in my experience is code in the Form_Resize event that uses math to resize controls on a form. Control dimensions (Height and Width) can't be set to negative values, so code like the following in your Form_Resize event can cause this 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

The above code will raise an an "Invalid property value" error if the form is resized to less than 1000 twips wide. If this is the problem, the easiest solution is to add On Error Resume Next as the first line, so that these kinds of errors are ignored. This is one of those rare situations in VB6 where On Error Resume Next is your friend.

于 2009-12-31T03:46:27.087 回答
5

是什么导致运行时错误 380?试图将对象或控件的属性设置为不允许的值。查看在您的搜索表单加载时运行的代码(Form_Load 等),以查找将属性设置为取决于运行时值的任何代码。

我的另一个建议是添加一些错误处理和一些日志记录以追踪导致错误的确切行。

  • 通过“Got to X”、“Got to Y”等代码记录Sprinkle 语句。使用这些来查找错误的确切位置。您可以写入文本文件或事件日志或使用OutputDebugString
  • 错误处理以下是获取错误堆栈跟踪的方法。为每个可能涉及的例程添加错误处理程序,如下面的代码。必不可少的免费工具MZTools可以自动执行此操作。您还可以使用Erl报告行号并找到确切的行 - MZTools 可以自动为您输入行号。

_

 On Error Goto Handler
   <routine contents>   
 Handler: 
   Err.Raise Err.Number, "(function_name)->" & Err.source, Err.Description 
于 2009-12-30T10:21:21.750 回答
2

我在用于日期的蒙面编辑框控件中遇到了同样的问题,错误是由于窗口区域设置中的日期格式属性引起的。将“M/d/yyyy”更改为“dd/MM/yyyy”,一切顺利。

于 2019-08-24T11:21:04.177 回答
1

旧线程,但这是一个答案。

voyager 有问题的字体

IE。如果您安装了一些 corel 套件,请删除一些语言选项。我们用进程监视器挖掘了这个并找到了原因,我们是这两个字体文件。

DFKai71.ttf dfmw5.ttf

我们遇到了同样的问题,通过从 windows\fonts 文件夹中删除这两个字体文件来解决这个问题。

于 2014-08-08T10:35:27.557 回答
0

许多非常愚蠢的事情都可能导致此错误。我遇到的是一种默认情况下不再包含在 Windows 8 中的字体 - Courier New。VB6 应用程序的名称硬编码在其中一种形式中,因此在启动时显示消息。

于 2014-07-07T16:55:51.040 回答
0

如果您编写软件或使用编写的软件来存储程序窗口坐标或大小以在启动程序时重复使用,请检查是否出现任何可能导致此问题的大小和位置。我一次又一次地看到各种供应商懒惰地生成代码,这些代码根据所述表单的大小在“表单”(程序窗口)上调整大小和重新定位控件。查看 HKLM\Software\Vendor\Program 和 HKCU\Software\Vendor\Program。寻找可能有问题的特定键。我曾经在名为 WindowsPosX 和 WindowPosY 的键中为程序窗口位置提供了一个程序存储 -48000。您可以在任务栏上看到程序启动和运行,但由于程序窗口本身小于 48000(-48000 的绝对值),因此它完全位于屏幕之外。如果你'

于 2013-09-01T13:32:07.697 回答
0

我想,基本上问题在于,程序是在什么版本的操作系统下编译的,你在什么版本的操作系统下运行程序。我看到很多更新的 dll 和 ocx 文件导致类似的错误,特别是当程序在旧版本的 dll 和 ocx 文件下编译时,并且在设置过程中保留了最新的 dll 和 ocx 文件。

于 2012-08-04T10:58:34.437 回答
0

可能是您在屏幕中定位了屏幕边框之外的控件(标签、框架、文本..)。如果某些控件的位置取决于任何变量,并且该变量在开始时未正确定义,则您可能会收到此错误消息。

可能是您在两台计算机上的屏幕分辨率不同。这可能就是原因。

为了找到程序错误,把这一行放在所有的subs中:on error resume next

如果这样可以解决问题,则必须逐个清除每个子项中的这一行,并验证问题是否再次出现。当在具体子程序中删除此行后问题再次出现时,您将知道存储错误的子程序。在那里搜索,你会找到它。

Santos@etronorte.com

于 2013-10-20T01:42:41.800 回答
0

看起来上面的答案适用于您编写和编译程序时,但我使用的是供应商的软件,是“Ex Libris”卡目录的Catalog.exe一部分,Voyager我也遇到了错误:

目录错误.png http://img805.imageshack.us/img805/8275/catalogerror.png

我有两台 Windows 7 32 位机器。较新的给我错误,但在较旧的它运行良好。我与谷歌做了很多研究,这里有一些我发现人们所说的与这个问题有关的事情。也许其中一件事情会帮助您解决错误,尽管它们对我不起作用:

根据其他人的说法(如 David M),我认为它可能与MSVBM60.DLL库有关 - 但在我的两台计算机上,这个文件似乎完全相同(相同的版本、大小、日期等)。

由于该文件没有什么不同,我试图找到该应用程序可能使用的其他 (dll) 文件,因此我启动了 Sysinternals 的 Process Explorer并查看了该应用程序(当您告诉它“连接”时它会加载然后崩溃"),下面的截图是我找到的。

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

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

screen3.png

现在,我不是 Windows / VB 程序员,只是一个高级用户,所以我知道该怎么做。我已经和软件供应商谈过了,他们建议重新安装 Windows。这可能会起作用,但它只是让我觉得这个程序可以在 Windows 7 上运行,但这个特定系统上的某些东西会导致错误。最后,这是一个已经部署在多台机器上的映像,因此虽然重新安装 Windows 一次并不是什么大不了的事,但如果我能找到修复或解决方法,它将为我节省一些重要的时间。

于 2012-07-13T16:17:15.337 回答
0

2017 我知道......但是有人在他们的代码维护期间遇到了这个问题。

当我尝试时发生了这个错误:

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

要解决此问题,只需将 PromptInclude 属性设置为“false”。

于 2017-05-02T06:11:06.593 回答
0

此错误的一个原因是代码中的非常愚蠢的错误。如果没有将正确的值传递给 ActiveX 的属性,那么也会引发此错误。

就像将空值传递给 Font.Name 属性或将文本值传递给 Height 属性一样。

于 2015-11-10T09:53:19.233 回答
-3

错误 380 Windows 7 解决方案非常简单,只需检查您的日期时间和区域设置是否正确。

于 2017-09-12T08:03:30.810 回答