我的错误 #1010 情况
编辑 3: 好吧,我正在启动 Windows Server 2008 R2 VM,安装 Flex Builder 3,并查看是否可以获得一个新项目来正确编译和执行。 新闻!我在虚拟机中启动并运行了 IDE,但在代码编译没有问题后,我仍然遇到了同样的错误!这是一个巨大的、强调的double you tee eff。
编辑2:由于这已经是一篇相当长的文章,我将把它放在这里。我只是分别删除了两个问题行的每一部分,并尝试在每一行之后进行编译,但每次都出现错误。我什至删除了两个 DataGridColumn 中的所有内容,但它仍然无法编译,即使注释掉了两个空的
行将让程序加载!这让我发疯,有人能为我解释一下吗?
/Edit 2
我有一个 AIR 应用程序,当我按 F5 时,它显然可以正常编译,但在应用程序有机会加载之前,我收到以下错误:
通过注释掉代码块,我将问题范围缩小到了两行。
<mx:DataGrid id="grid1" width="100%" height="100%" editable="false">
<mx:columns>
<mx:DataGridColumn headerText="Symbol" dataField="Symbol" headerWordWrap="true" width="100" textAlign="left"/>
<mx:DataGridColumn headerText="Description" dataField="FullName" headerWordWrap="true" width="150" textAlign="left"/>
<mx:DataGridColumn headerText="Trans" dataField="TransactionCode" headerWordWrap="true" width="75" textAlign="center"/>
<mx:DataGridColumn headerText="Quantity" dataField="Quantity" headerWordWrap="true" width="50" textAlign="right" labelFunction="formatUtil3"/>
<mx:DataGridColumn headerText="Execution Date" dataField="ExecutionDate" headerWordWrap="true" width="80" textAlign="center"/>
<mx:DataGridColumn headerText="Execution Price" dataField="ExecutionPrice" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil1"/>
<mx:DataGridColumn width="15" backgroundColor="0x888888" dataField="blank1" headerText=""/>
<mx:DataGridColumn headerText="Previous Business Day" dataField="PreviousDate" headerWordWrap="true" width="80" textAlign="center" itemRenderer="PD5"/>
<!----> <mx:DataGridColumn headerText="Previous Business Day Price" dataField="PreviousDatePrice" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil1" itemRenderer="PD5"/>
<!----> <mx:DataGridColumn headerText="% Difference" dataField="PreviousDateDelta" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil2" itemRenderer="PD5"/>
<mx:DataGridColumn headerText="Source" dataField="PreviousDateSource" headerWordWrap="true" width="100" textAlign="left" itemRenderer="PD5"/>
<mx:DataGridColumn width="15" backgroundColor="0x888888" dataField="blank2" headerText=""/>
<mx:DataGridColumn headerText="Previous Month End" dataField="PrevMonthEndDate" headerWordWrap="true" width="80" textAlign="center" itemRenderer="PME5"/>
<mx:DataGridColumn headerText="Previous Month End Price" dataField="PrevMonthEndPrice" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil1" itemRenderer="PME5"/>
<mx:DataGridColumn headerText="% Difference" dataField="PrevMonthEndDelta" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil2" itemRenderer="PME5"/>
<mx:DataGridColumn headerText="Source" dataField="PrevMonthEndSource" headerWordWrap="true" width="100" textAlign="left" itemRenderer="PME5"/>
</mx:columns>
</mx:DataGrid>
这两行用 标记。如果我注释掉这两行,那么应用程序将正确编译、运行和显示,但如果我将其中任何一行保持活动状态,则会出现上述错误。
这是怎么回事?
编辑: 根据要求添加其他代码 -
<mx:CurrencyFormatter id="format1" precision="5" useNegativeSign="false"/>
<mx:NumberFormatter id="format2" precision="2"/>
以及功能 -
private function formatUtil1(item:Object, column:DataGridColumn):String
{
var Field:Object = item[column.dataField];
return format1.format(Field);
}
private function formatUtil2(item:Object, column:DataGridColumn):String
{
var Field:Object = item[column.dataField];
return format2.format(Field);
}
接下来是 PD5 的 .as 文件 -
package
{
import mx.controls.Label;
import mx.controls.listClasses.*;
public class PD5 extends Label
{
private const POSITIVE_COLOR:uint = 0x000000; // Black
private const NEGATIVE_COLOR:uint = 0xFF0000; // Red
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
setStyle("color", (data.PreviousDateDelta >= 5 || data.PreviousDateDelta <= -5) ? NEGATIVE_COLOR : POSITIVE_COLOR);
}
}
}
现在是 PME5.as -
package
{
import mx.controls.Label;
import mx.controls.listClasses.*;
public class PME5 extends Label
{
private const POSITIVE_COLOR:uint = 0x000000; // Black
private const NEGATIVE_COLOR:uint = 0xFF0000; // Red
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
setStyle("color", (data.PrevMonthEndDelta >= 5 || data.PrevMonthEndDelta <= -5) ? NEGATIVE_COLOR : POSITIVE_COLOR);
}
}
}
Edit 3: Alright, I'm lighting up a Windows Server 2008 R2 VM, installing Flex Builder 3, and seeing if I can get a new project to compile and execute properly. News! I got the IDE up and running in the VM and I STILL got the same exact error after the code compiled without issue! Here comes a big, emphatic double you tee eff.
Edit 2: Since this has gotten to be a pretty long post I'll put this up here. I just went through and deleted each portion of the two problem lines individually and tried to compile after each one, and I got the error every single time. I even deleted everything from within the two DataGridColumn
s and it still didn't compile, even though commenting out the two empty <mx:DataGridColumn />
lines will let the program load! This is driving me nuts, can anyone shed some light on this for me?
/Edit 2
I have an AIR application which will apparently compile just fine when I hit F5, but before the app has a chance to load I get the following error:
By commenting out blocks of code I've narrowed the problem down to two specific lines.
<mx:DataGrid id="grid1" width="100%" height="100%" editable="false">
<mx:columns>
<mx:DataGridColumn headerText="Symbol" dataField="Symbol" headerWordWrap="true" width="100" textAlign="left"/>
<mx:DataGridColumn headerText="Description" dataField="FullName" headerWordWrap="true" width="150" textAlign="left"/>
<mx:DataGridColumn headerText="Trans" dataField="TransactionCode" headerWordWrap="true" width="75" textAlign="center"/>
<mx:DataGridColumn headerText="Quantity" dataField="Quantity" headerWordWrap="true" width="50" textAlign="right" labelFunction="formatUtil3"/>
<mx:DataGridColumn headerText="Execution Date" dataField="ExecutionDate" headerWordWrap="true" width="80" textAlign="center"/>
<mx:DataGridColumn headerText="Execution Price" dataField="ExecutionPrice" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil1"/>
<mx:DataGridColumn width="15" backgroundColor="0x888888" dataField="blank1" headerText=""/>
<mx:DataGridColumn headerText="Previous Business Day" dataField="PreviousDate" headerWordWrap="true" width="80" textAlign="center" itemRenderer="PD5"/>
<!----> <mx:DataGridColumn headerText="Previous Business Day Price" dataField="PreviousDatePrice" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil1" itemRenderer="PD5"/>
<!----> <mx:DataGridColumn headerText="% Difference" dataField="PreviousDateDelta" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil2" itemRenderer="PD5"/>
<mx:DataGridColumn headerText="Source" dataField="PreviousDateSource" headerWordWrap="true" width="100" textAlign="left" itemRenderer="PD5"/>
<mx:DataGridColumn width="15" backgroundColor="0x888888" dataField="blank2" headerText=""/>
<mx:DataGridColumn headerText="Previous Month End" dataField="PrevMonthEndDate" headerWordWrap="true" width="80" textAlign="center" itemRenderer="PME5"/>
<mx:DataGridColumn headerText="Previous Month End Price" dataField="PrevMonthEndPrice" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil1" itemRenderer="PME5"/>
<mx:DataGridColumn headerText="% Difference" dataField="PrevMonthEndDelta" headerWordWrap="true" width="65" textAlign="right" labelFunction="formatUtil2" itemRenderer="PME5"/>
<mx:DataGridColumn headerText="Source" dataField="PrevMonthEndSource" headerWordWrap="true" width="100" textAlign="left" itemRenderer="PME5"/>
</mx:columns>
</mx:DataGrid>
The two lines are marked with <!---->
. If I comment those two lines out then the app will compile, run, and display properly, but if I leave either of them active I get the error above.
What is going on here?
Edit: Additional code as requested -
<mx:CurrencyFormatter id="format1" precision="5" useNegativeSign="false"/>
<mx:NumberFormatter id="format2" precision="2"/>
And the functions -
private function formatUtil1(item:Object, column:DataGridColumn):String
{
var Field:Object = item[column.dataField];
return format1.format(Field);
}
private function formatUtil2(item:Object, column:DataGridColumn):String
{
var Field:Object = item[column.dataField];
return format2.format(Field);
}
Next the .as file for PD5 -
package
{
import mx.controls.Label;
import mx.controls.listClasses.*;
public class PD5 extends Label
{
private const POSITIVE_COLOR:uint = 0x000000; // Black
private const NEGATIVE_COLOR:uint = 0xFF0000; // Red
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
setStyle("color", (data.PreviousDateDelta >= 5 || data.PreviousDateDelta <= -5) ? NEGATIVE_COLOR : POSITIVE_COLOR);
}
}
}
And now PME5.as -
package
{
import mx.controls.Label;
import mx.controls.listClasses.*;
public class PME5 extends Label
{
private const POSITIVE_COLOR:uint = 0x000000; // Black
private const NEGATIVE_COLOR:uint = 0xFF0000; // Red
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
setStyle("color", (data.PrevMonthEndDelta >= 5 || data.PrevMonthEndDelta <= -5) ? NEGATIVE_COLOR : POSITIVE_COLOR);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在调试模式下运行应用程序。当出现错误时,Flex builder(Flash Builder 4.5 是最新版本)将中断并带您到导致问题的代码行。发生这种情况是因为您尝试访问的某个对象的属性实际上为 null。
您可以在调试窗口(窗口菜单>调试)中上下浏览调用树,这样您就可以找出哪个对象为空。
大多数情况下,发生这种情况是因为数据提供者不完整,即缺少一些数据。例如,一行可能没有前一天的营业价格。如果是这种情况,那么您需要处理 formatUtil 函数中的空项
编辑:
另请检查这两行:
并且
错误可能来自
data.PreviousDateDelta
或data.PrevMonthEndDelta
Run the application in debug mode. When there is an error, Flex builder (Flash Builder 4.5 is the newest version) will break and take you to the line of code that is causing a problem. This is occuring because some object whose property you are trying to access is actually null.
You can browse up and down the call tree in the debug window (Window menu>debug) and that way you can find out which object is null.
Mostly this is happening because the dataprovider is not complete, i.e. some data is missing. for example one row might not have a previous day business price. If this is the case then you need to handle the null item in your formatUtil functions
EDIT:
Also check these two lines:
and
It's possible that the error comes from
data.PreviousDateDelta
ordata.PrevMonthEndDelta
代码中没有任何明显的问题。
显然,这是未经测试的代码。
我感觉您的数据提供者不完整或缺少数据。
可能是由于其中 1 行。
这是一些您可以尝试测试您的数据提供程序的代码。
同样的事情可以应用于渲染器
Nothing stands out in the code as being bad.
Obviously, this is untested code.
I have a feeling your dataprovider is not complete or missing data.
Probably due to 1 of these lines.
Here is some code you can try to test your dataprovider
The same thing can be applied to the renderers
这在这里编译得很好。没有更改任何内容,只是添加了默认数据。
This compiles fine here. Did not change anything but added default data.
由于到目前为止还没有解决我的问题,所以我决定完全回避它并将有问题的程序移植到 C#。到目前为止一切都运转良好。
懒惰回答?是的。
懒惰的解决方案?不幸的是没有。
Since nothing so far has solved my problem, I decided to sidestep it altogether and port the program in question over to C#. Everything it working well so far.
Lazy answer? Yes.
Lazy solution? Unfortunately no.