是什么导致这个错误? “运行时错误380:无效的属性值”

时间:2009-12-30 09:33:53

标签: vb6 runtime-error

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

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

导致此错误的原因是什么?

13 个答案:

答案 0 :(得分:9)

我认为您的应用程序使用蒙版编辑框?这是一个相对众所周知的问题,由Microsoft记录在案:

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

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

修改

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

答案 1 :(得分:7)

只是为了抛出我的两分钱:我的经验中出现此错误的另一个常见原因是Form_Resize事件中的代码,它使用数学来调整窗体上的控件大小。控件维度(HeightWidth)无法设置为负值,因此Form_Resize事件中的以下代码可能会导致此错误:

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

如果将表单的大小调整为小于1000缇,则上面的代码将引发“无效的属性值”错误。如果这是问题,最简单的解决方案是添加On Error Resume Next作为第一行,以便忽略这些类型的错误。这是VB6中罕见的情况之一,On Error Resume Next是你的朋友。

答案 2 :(得分:5)

导致runtime error 380的原因是什么?尝试将对象或控件的属性设置为不允许的值。查看搜索表单加载时运行的代码(Form_Load等),以查找将属性设置为依赖于运行时值的任何代码。

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

  • 记录通过代码“Got to X”,“Got to Y”等来使用Sprinkle语句。使用这些代码查找错误的确切位置。您可以写入文本文件或event log或使用OutputDebugString
  • 错误处理以下是如何获取错误的stack trace。为可能涉及的每个例程添加错误处理程序,如下面的代码所示。基本免费工具MZTools可以自动执行此操作。您还可以使用Erl报告行号并找到确切的行--MZTools可以自动为您输入行号。

_

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

答案 3 :(得分:1)

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

带有旅行者的问题字体

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

DFKai71.ttf dfmw5.ttf

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

答案 4 :(得分:1)

我在用于日期的蒙版编辑框控件中遇到了相同的问题,并且该错误归因于Windows的“区域”设置中的“日期格式”属性。将“ M / d / yyyy”更改为“ dd / MM / yyyy”,一切正常。

答案 5 :(得分:0)

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

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

我有两台Windows 7 32位计算机。较新的一个给我错误,但在较旧的一个它运行正常。我已经与谷歌进行了大量研究,以下是我发现的一些人们所说的与此问题有关的事情。也许其中一件事可以帮助你解决错误,虽然它们对我不起作用:

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

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

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

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

答案 6 :(得分:0)

我认为,基本上问题在于这样一个事实,即在什么版本的O / S中编译了程序,以及在什么版本的O / S下运行程序。 我看到很多更新的dll和ocx文件导致类似的错误,特别是当程序在较旧版本的dll和ocx文件下编译时,在设置期间保留了最新的dll和ocx文件。

答案 7 :(得分:0)

如果您编写软件或使用编写的软件(存储程序窗口坐标或尺寸,以便在启动程序时重复使用),请检查是否存在导致此类问题的大小和位置。我已经一次又一次地从各个供应商那里看到它,懒洋洋地生成代码,根据所述表单的大小调整大小并重新定位控件在“表单”(程序窗口)上。查看HKLM \ Software \ Vendor \ Program和HKCU \ Software \ Vendor \ Program。寻找可能有问题的特定密钥。我曾经有一个程序存储-48000用于名为WindowsPosX和WindowPosY的键中的程序窗口位置。您可以看到程序在任务栏上启动并运行,但由于程序窗口本身小于48000(绝对值-48000),因此它完全位于屏幕之外。如果您不熟悉编辑regstry信息 - 大多数人不是 - 那么卸载软件,使用注册表清理程序删除任何剩余的条目,然后重新安装软件,看看是否无法解决问题。

答案 8 :(得分:0)

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

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

为了找到程序错误,将这一行放在所有潜艇中: 在错误恢复下

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

Santos@etronorte.com

答案 9 :(得分:0)

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

答案 10 :(得分:0)

此错误的一个原因是代码中存在非常愚蠢的错误。 如果未将适当的值传递给ActiveX的属性,则也会抛出此错误。

类似将空值传递给Font.Name属性,或将文本值传递给Height属性。

答案 11 :(得分:0)

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

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

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

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

答案 12 :(得分:-3)

错误380 windows 7解决方案非常简单只需查看您的日期时间&amp;区域设置是否正确。