我想在 drools 规则文件 (mvel) 中声明一个全局变量。这是因为此全局变量在所有规则中都用作另一个函数的参数。我可以很容易地在每次调用函数时显式地传递这个字符串,但是如果字符串发生变化,这会变得很困难。
我以为我可以做一个:
global String someStr = "some string";
Run Code Online (Sandbox Code Playgroud)
但是在编译时,我得到:
[11,31]: [ERR 107] Line 11:31 mismatched input '=' expecting one of the following tokens: '[package, import, global, declare, function, rule, query]'.
Run Code Online (Sandbox Code Playgroud)
很明显,我不能这样分配。我似乎也无法在该类中声明一个类和一个字符串以通过该类进行引用。
所以我发现我可以做一些看起来很愚蠢的事情:
global String someStr;
rule "Initialize"
when
then
someStr = "some string";
end
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但是,每次此规则匹配(始终)时,这都会记录以仅分配全局。
有没有更好的方法让我失踪???
我最近将一个从VC6移植到VS2012的项目相当成功.试图更改以前看起来很糟糕的位图的初始屏幕和图标.从它的外观来看,256色位图.
所以,我制作了新的位图并尝试将它们放入并不断获取:错误RC2175:icon.ico不是3.00格式
我已经搜索了这意味着什么:http : //msdn.microsoft.com/en-us/library/s49y5a1h( v=VS.80) .aspx 错误RC2175:资源文件res\icon3.bmp不在3.00格式? 和那个毫无价值的MSDN页面.
我尝试将这些位图制作为24位,256色和16色.我也尝试了所有不同的模式Gimp允许模仿其他原始图标.还尝试在MS Paint中加载位图并重新保存但没有成功.
而这一点,我想要了解3.00格式是什么以及如何解决它.
这里的快速搜索没有任何结果.所以,我已经开始使用一些相当迂回的方式在我的WinRT应用程序中使用StreamWriter.阅读效果很好,写作方式不同.我所看到的是,当我选择要写的文件时,如果我选择一个新文件则没问题.该文件按我的预期创建.如果我选择覆盖文件,则文件被覆盖到某一点,但是流停止写入的点,如果原始文件很大,则旧内容存在于我的新流写入的位置.
代码是这样的:
public async void WriteFile(StorageFile selectedFileToSave)
{
// At this point, selectedFileToSave is from the Save File picker so can be a enw or existing file
StreamWriter writeStream;
Encoding enc = new UTF8Encoding();
Stream dotNetStream;
dotNetStream = await selectedFileToSave.OpenStreamForWriteAsync();
StreamWriter writeStream = new StreamWriter(dotNetStream, enc);
// Do writing here
// Close
writeStream.Write(Environment.NewLine);
await writeStream.FlushAsync();
await dotNetStream.FlushAsync();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供我可能遗失的线索吗?WinRT中缺少许多功能,所以并没有真正按照这种方式来解决这个问题