我有一个遗留FoxPro exe应用程序.
源代码不可用(它是用外包编写的,源代码从未提供过).
有人要求在C#中编写完全相同的应用程序,然后开发新功能.要求过时了.虽然我们可以看到应用程序在UI上做了什么,但我们也想了解内部逻辑.
是否有任何可以像.Net Reflector一样使用.NET程序集的工具?
据我所知,从C++ 11开始,我可以使用大括号括起来的初始化列表来初始化容器:
std::map<int, char> m = {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}};
Run Code Online (Sandbox Code Playgroud)
容器容器也可以吗?
例如,我尝试了以下但没有成功:
std::pair<std::map<int, char>, int> a = {{1, 'c'}, 2};
Run Code Online (Sandbox Code Playgroud)
在Visual Studio 2015中,我收到以下编译错误:
没有构造函数的实例"std :: map <_Kty,_Ty,_Pr,_Alloc> :: map [with _Kty = std :: map,std :: allocator >>,_ Ty = int,_Pr = std :: less,std: :allocator >>>,_ Alloc = std :: allocator,std :: allocator >>,int >>]"匹配参数列表参数类型是:({...},int)
使用MinGW32时,编译错误就是这样的
无法将{...}从大括号括起来的初始化列表转换为std :: pair ...
我打算在我的新C64项目中使用多色字符模式的软件精灵.我的想法是使用叠加'bullet'精灵数据来平铺数据.
我想我可以在地址'TILESET'处获得tileset数据,在地址'SPRITE'处有精灵数据.我可以结合这两个来准备一个动态计算背景的子弹字符并存储在地址'SUPERIMPOSED'
我编写了以下代码和循环计数来检查它是否可行.而且我认为不是.循环吃了219个循环.近四条光栅线.并且我没有在此循环之前包含所需的其他必要计算.像计算目标地址一样.
当我想在屏幕上有16个子弹时,它将需要64个栅格或8个字符行.所以我变得怀疑.这是正确的方法吗?或者还有其他更优化的方法来完成同样的工作吗?
cycles
---------
ldy #$07 4 x1 = 4
- LDA TILESET,x 3 x8 = 24
AND SPRITE,x 4 x8 = 32
STA SUPERIMPOSED,x 5 x8 = 40
dey 2 x8 = 16
cpy 4 x8 = 32
bne - 3 x8-1 = 71
----------
219 Cycle
Run Code Online (Sandbox Code Playgroud)
我正在考虑在背景中重复模式.这样我就可以使用相同的子弹牌而无需重新计算.
我们有一个用Visual FoxPro编写的遗留应用程序,我只是继承了.我们无法确定在哪里下载Visual FoxPro.我们有一个MSDN订阅,我被告知应该根据需要获得它的许可,但我实际上找不到下载.
我正在使用std::wstring_convert将 wstring 转换为多字节字符串,如下所示:
// convert from wide char to multibyte char
try
{
return std::wstring_convert<std::codecvt_utf8<wchar_t>>().to_bytes(wideMessage);
}
// thrown by std::wstring_convert.to_bytes() for bad conversions
catch (std::range_error& exception)
{
// do something...
}
Run Code Online (Sandbox Code Playgroud)
为了对块进行单元测试,我已经评论过,因为do something...我希望传递一个会引发std::range_error异常的 wstring 。
但是,我还没有能够制定出这样的 wstring 会导致这种转换失败。wstring 将使用 UTF16,我一直在阅读有关高和低代理的信息。例如,D800 后跟“b”的 UTF16 字符应该是无效的。 std::wstring(L"\xd800b");可能无法以相同的理由编译。如果我创建一个像下面这样的 wstring,它不会在转换时抛出异常:
std::wstring wideMessage(L" b");
wideMessage[0] = L'\xd800';
// doesn't throw
std::wstring_convert<std::codecvt_utf8<wchar_t>>().to_bytes(wideMessage);
Run Code Online (Sandbox Code Playgroud)
在转换过程中是否有合适的 wstring 可以用来抛出异常?
我已经从这个链接尝试了 5.1、5.2 和 5.3 。我正在使用 Visual Studio 2015。
我向现有的类中添加了一个重载的方法,这现在在我们的单元测试中导致编译错误。
我已使用以下代码复制了该问题:
#include <type_traits>
#include <string>
class Foo
{
public:
Foo() {};
int bar(const std::string & s) {return 1;};
int bar(const std::string & s, long l) {return 2;};
int bar2(const std::string & s) {return 3;};
};
int main()
{
// compiles
std::is_same<std::result_of<decltype(&Foo::bar2)(Foo, const std::string &)>::type, int>::value;
// does not compile
std::is_same<std::result_of<decltype(&Foo::bar)(Foo, const std::string &)>::type, int>::value;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我需要对未编译的行进行哪些更改,以便可以测试重载方法的返回?
我需要根据邮件信息在VFP中创建唯一的记录ID:zip5,address,lastname,firstname.创建后,关系表将在SQL Server 7中加载唯一ID.有什么建议吗?
我想在FoxPro中输入数据,但以.xls格式保存数据.
我试图使用C#将数据从DBF文件中提取到我的程序中.我正在使用Visual FoxPro OLE DB提供程序.它在我的本地机器上工作正常,但我想将我的程序打包成客户端可以使用的DLL.问题是,当他们从他们的机器运行程序时,它说Visual FoxPro OLE DB提供程序没有在他们的机器上注册.有没有办法在没有客户端在他们的机器上安装Visual FoxPro OLE DB提供程序的情况下使用它?
这是一个更普遍的问题,即哪个方向对公司来说是一个更好的投资.
我们公司的核心业务应用程序是用Visual FoxPro编写的,大约有9年以上的历史.数据库是15+演出,核心逻辑很复杂,更糟糕的是数据模型很糟糕.建造它并且这些年来一直维持这两年的两个人至少在他们的50年代,所以不用说退休或可能死亡可能在未来十年左右.
这个VFP应用程序驱动我们所有的核心业务功能,并要求终端服务和Citrix从外部访问它.我们的网络应用程序必须通过ODBC与它进行交互,我们总是遇到性能问题.运行这个系统的服务器也很老,比如Win 2000服务器,并且正在崩溃.
最近,我们一直在开展有关升级运行此核心应用程序的系统以及电子邮件和文件存储等其他服务的会议.然而,最大的费用是购买新的服务器硬件,操作系统许可,终端服务许可,Citrix许可等,以解决我们目前正在使用的一些性能和外部访问问题,以及通常将我们带到我们的系统上.
价格标签将在55,000美元到65,000美元之间.所以作为一名网络开发者,我的观点是,这是一个巨大的浪费!我的解决方案是将这些资金用于重写核心系统,以便在基于Web的.Net平台上运行.这将消除对终端服务器和Citrix许可的需求以及昂贵的硬件和配置管理来运行它.我没有看到将这种资金投入到一个陈旧的系统中的重点,无论如何它应该在它的出路上.
我希望得到一些有说服力的论据,说明为什么这是浪费钱.希望有人在这之前遇到过这种情况可以给我一些观点.硬件升级似乎是最容易上手的路,因为他们只会有一位顾问进来并做到这一切.软件开发项目需要更长的时间,需要更多的资源,并且可能需要花费更多的钱.