我有几个导航相关的功能,我希望没有深度限制.这些生成CSS菜单,痕迹痕迹等.
我很难过如何使函数遵循每条路径深度或根本没有显式循环.
以下是我想要页面最顶层父项的典型示例.最顶层的parent
字段值为零.
这是显式循环版本:
function topPg() {
$p = $this->retrieve("id = '$this->parent'");
if ($p->parent != 0) {
$gp = $this->retrieve("id = '$p->parent'");
if ($gp->parent != 0) {
$ggp = $this->retrieve("id = '$gp->parent'");
if ($ggp->parent != 0) {
$gggp = $this->retrieve("id = '$ggp->parent'");
// ad naseum
} else {
return $ggp;
}
} else {
return $gp;
}
} else {
return $p;
}
} // func
Run Code Online (Sandbox Code Playgroud)
任何人都有建议或类似的代码或tute链接帮助指明方向?
VS2005 C#编译器在我们团队的每晚构建过程中崩溃.我用WinDBG附加它,加载SOS扩展,打印callstack,但看不到异常信息.
我试过了!PrintException,如下:
0:000> !PrintException There is no current managed exception on this thread
这是callstack的顶部:
0:000> !CLRStack OS Thread Id: 0x9fc (0) ESP EIP 0012ee08 77e4bef7 [ComPlusMethodFrameGeneric: 0012ee08] Microsoft.Build.Tasks.Hosting.ICscHostObject.Compile() 0012ee18 6be671ab Microsoft.Build.Tasks.Csc.CallHostObjectToExecute() 0012ee48 6c0aed17 Microsoft.Build.Utilities.ToolTask.Execute()
我目前正在研究一个非常大的传统MFC MDI应用程序.它有大量的UI元素 - 可停靠的工具栏,自定义树控件,上下文菜单等.它是一个图像处理应用程序,因此主视图使用DirectX和OpenGL自我渲染.该产品大约有10年的历史,其中一个优先事项是更新它的外观和感觉.
知道微软在提供C++/MFC和.NET之间的互操作性方面做得很好,我认为以递增方式迁移代码库是有意义的.我现在正在努力的是从哪里开始.
一种方法是使用WPF删除MFC框架并尽可能多地重用C++代码.这将让我们最大限度地发挥WPF架构的优势,但这将意味着一个漫长的开发周期,直到我们再次完全正常运行.
另一种方法是用它们的WPF对应物一次替换一个MFC控件.这将允许我们以增量方式工作.我对这种方法的关注是,它意味着托管和非托管代码之间会有很多连接点,我不知道从哪里开始替换主菜单和工具栏等内容.
或者我还有其他选择吗?
任何有关此主题的信息的建议或链接将不胜感激.
更新: DavidK提出了一些很好的问题,所以我添加了这背后的动机.
1)产品的未来发展
该产品仍在积极开发中,并定期添加新功能.我认为尝试慢慢迁移到C#/ WPF会很有意义.凭借我在C#/ WPF方面的有限经验,我发现在C++/MFC中工作效率会提高.
我们用WPF获得的另一件大事就是能够利用多头系统.MFC应用程序仅限于单个顶级框架,因此很难利用多个监视器.
2)员工保留和招聘
找到愿意使用MFC的开发人员越来越难了.对于当前开发人员的职业发展而言,接触新技术也很重要.
我正在尝试通过使用前向声明并将#includes移动到实现文件中来简化一堆头文件"include spaghetti".但是,我继续遇到以下情况:
//Foo.h
#include "Bar.h"
class Foo
{
public:
void someMethod(Bar::someType_t &val);
};
//Bar.h
.
.
.
class Bar
{
public:
typedef std::vector<SomeClass> someType_t;
};
Run Code Online (Sandbox Code Playgroud)
我希望在尽可能多的情况下删除#include"Bar.h".我还看到Bar.h中的typedef列在Bar类之外的情况.我假设两种情况都可以用同样的方式解决.
有任何想法吗?
我正在寻找VS2005构建自动化的一些资源(很快就会推出VS2008).我想做一些事情,比如删除我的输出文件夹中的所有文件,将我的所有构建输出移动到一个文件夹等等.我认为这些东西很基本,但我不知道从哪里开始.
谢谢!
我很好奇,需要快速找到这个答案.谷歌不会帮助太多.
Java Persistence API具有这些属性,告诉框架在关联实体上级联操作:
CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH
Run Code Online (Sandbox Code Playgroud)
我知道前两个意思是什么:当我持有具有B的对象A时,也坚持B,当我删除A时,也删除B.
但我无法理解其他两个人所取得的成就.救命?
Zsh为Man提供了以下键盘快捷键
Esc+h
我想有一个类似的键盘快捷键,如
Esc+i
如何为Info制作这样的键盘快捷键?
int? test;
try
{
test = (int?) Int32.Parse ("7");
} catch {}
if (test == null)
Console.WriteLine("test is null!");
else
Console.WriteLine("test = {0}", test);
Run Code Online (Sandbox Code Playgroud)
我有一些代码可以做一些与此类似的东西,同样的想法真的...创建变量,尝试初始化它,然后测试初始化是否成功.
Visual Studios给我一个错误,说"使用未分配的局部变量'test'",这有点烦人,可以通过将第一行设置为:
int? test = null;
Run Code Online (Sandbox Code Playgroud)
但我很好奇这两行之间的区别是什么,因为编译器似乎真的很在意.据我所知,这两条线做同样的事情.
这是我看到的上下文:
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < kNumberOfPages; i++) {
[controllers addObject:[NSNull null]];
}
Run Code Online (Sandbox Code Playgroud)
为什么不在那个地方零?