我正在将一个大型应用程序从Delphi 6转换为Delphi 2009.
它最初是为使用Oracle 8i而构建的,但现在需要使用Oracle 11g.原始应用程序很高兴使用oracle 11g,如果我使用Delphi 6重建它,它将会这样做.
为了克服一些字符集/字符显示问题以及过去11年中开发的应用程序的其他轻微烦恼,我决定在更高版本的Delphi中重建它(它也被延迟了几年,因此使用2009.)为此目的而购买的.我现在已经打败了关于这个和那个以及另一个的550+编译器警告.
但是现在几乎我试图打开我的测试oracle 11g数据库的每个表/数据集报告"类型不匹配字段'xxxxxx'期望BCD实际FmtBCDField.
有没有办法绕过这个没有打开所有80多个数据模块,以保证与客户端数据库安装的兼容性?我不介意改变它们,但我不能在没有太多麻烦的情况下对着实时数据库进行测试,并且不想只是为了在客户端的网站上得到相反的错误!
这些几乎都是连接到ADO查询的TClientDataSets中的所有持久字段,但是在(几乎所有)情况下都使用FieldByName进行访问.
有任何想法吗?
或者有更便宜和更好的东西吗?
我仍在使用随Delphi 6提供的Installsheild Express(Borland限量版):)但我"觉得"我应该更新它 - 我是否会购买或购买2010版本的东西?
旧版本适用于Vista.
我正在使用Delphi 2009.
任何意见或肯定的是/否?
我曾经能够使用普通的delphi按钮来做到这一点:
在第一帧我有(简化)
procedure FirstFrame.ButtonClick(Sender: TObject)
Begin
if TButton(Sender).ModalResult = mrOK then
ChildFrame.DoOKStuff
else
ChildFrame.DoCancelStuff;
ChildFrame.Free;
end;
procedure FirstFrame.ShowFranme;
begin
ChildFrame := TFrameWithButtons.Create(Owner);
ChildFrame.Parent := self;
ChildFrame.OKButton.OnClick := ButtonClick;
ChildFrame.CancelButton.OnClick := ButtonClick;
ChildFrame.Visible := True;
end;
Run Code Online (Sandbox Code Playgroud)
在Childframe中,我无需处理按钮单击...按钮单击已设置为将控制权返回到第一帧.
使用某些第三方按钮时,这偶尔会导致AV.我理解为什么 - 在第三方代码处理中的某些时候返回到现在释放的帧或按钮但是被调用的代码在第一帧...恼人地它只有99.99%的时间工作:)
帧没有发布过程.
所以我的问题是处理这种情况的正确方法是什么?
同时使用Delphi 6和Delphi 2009.