如果所有业务逻辑都存在于数据模块(TSQLDataSets和TDataSetProviders)中,您将如何重构代码以使应用程序更适合单元测试?
我从Turbo Pascal 3开始,去了TP5,第二天买了TP6,叫做Borland,降级到TP5.5.买Delphi 3,现在有Delphi 5 Enterprise.由于两个原因,我对4-5年前编写代码失去了兴趣;
我在共享软件市场上有一些程序可靠,但需要认真更新.我喜欢Delphi,或者当它是Borland时(在Borland收购DBase和所有其他垃圾之前),我想尽可能多地挽救我的D5E代码,但我怀疑我能做到.我计划升级到Delphi 2010.
我的下一个软件版本需要与数据库进行交互.我非常精通MS Sql,并喜欢将所有数据库代码放在存储过程中.
什么是与Delphi良好交互的最佳数据库选择,允许存储过程并且易于部署,即使是Geico gecko也可以部署它?
我下载了Delphi 2010的试用版并解压缩了安装.我一直在阅读包中包含的安装文档.我从zip包中的install.htm开始.
install.htm明智地告诉你看到以下两篇文章:
发行说明声明如下......
MSSQL驱动程序需要安装SQL Native Client.dbxmss.dll需要SQL Native Client 2008.dbxmss9.dll需要SQL Native Client 2005
我检查了我的机器以查看是否安装了SQL Native Client.不.我没有读完文档所以我做了一个注释来安装SQL Native Client.
我搜索了dbxmss.dll和dbxmss9.dll,并在Embarcadero论坛上找到了一个非常有趣的帖子.在这里读线程.
在阅读了这个帖子并仔细思考后,我认为我不会使用Microsoft SQL Express.我不能依赖安装了正确驱动程序的客户.所以,我回来寻找一个不同的解决方案.
如果我向普通大众销售40美元的产品,我需要有一个防弹解决方案,不需要我的全新客户在我的软件工作之前更新他们的机器.
一些数据库应用程序开发人员更喜欢在主表单之前通过编辑项目源文件来创建数据模块
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TDM, DM);
Application.CreateForm(TMainForm, MainForm);
{...}
Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)
问题是 - 为什么?什么是利弊?
我有一个带ViewStyle的Delphi ListView:= vsReport.我正在显示数字数据,并希望将所有列设置为正确的justiied.我已经能够对除列[0]之外的所有列进行右对齐.由于某种原因,列[0]将不允许taRightJustify.它只允许taLeftJustify.
是否可以将列[0]设置为右对齐?如果是这样,你怎么做?
我正在尝试使用Delphi 2010中的Action Manager和Action Main Menu Bar,我不知道如何使这项工作.我试过看Delphi 2010附带的例子,我似乎无法弄清楚这一点.
我试过玩这些例子.我已经能够将图像添加到图像列表组件并将该项目设置为新项目索引.在设计时,它在运行时正确显示,它将恢复为原始状态.
我想学习如何使用Action Manager和Action Main Menu Bar,但我可以找到有关这些主题的任何帮助.是否有关于如何使用Action Manager和Action Main Menu Bar的教程?
假设我有三个独立的应用程序,分别是MyPasswordManager,MyToolManager和MyMovieManager.每个应用程序都使用Firebird嵌入式数据库.
如果客户购买我的所有三个应用程序并将其安装在他/她的计算机上.我的客户同时运行所有三个应用程序,会发生什么?
Firebird dll会有冲突吗?你在这种情况下做了什么?
我正在使用Delphi 2010重写一个旧的应用程序,我想在我的代码中放置占位符,以便将它移植到XE2.只是好奇FireMonkey是否与GetSystemMetrics相当.我特别感兴趣的是:
我收到几封带有 url 链接的营销电子邮件,这些链接从一个站点重定向到另一个站点。我想编写一个程序来使用 Delphi 和 Indy 跟踪每个 URL 重定向。我想遍历每个 URL,记录完整的 QueryString 和在此过程中可能已设置的任何 Cookie。
如何使用 D2010 随附的 Indy 组件执行此操作?
我正在尝试编写一个显示用户友好消息的异常处理程序.我不知道如何获得导致TDBGridInplaceEdit错误的" 新输入 "数据值.
例如:
我有一个DBGrid加载数据.当我故意将第1行的PartNo字段更改为非数字值以导致TDBGridInplaceEdit错误...(从:1313.3到:1313..3)...我捕获错误并显示消息,但我可以'弄清楚如何获得糟糕的'1313..3'值.

原文PartNo:1313.3

改变PartNo:1313..3(小数点后两位)

应用程序onException中显示的错误消息
procedure TMain.ApplicationEvents1Exception(Sender: TObject; E: Exception);
var
str : string;
begin
str := sender.ToString;
str := str + #10;
str := str + RzDBGrid2.SelectedField.FieldName;
str := str + #10;
str := str + VarToStr(RzDBGrid2.SelectedField.Value);
str := str + #10;
str := str + e.Message;
showmessage(str);
//Application.ShowException(E);
end;
Run Code Online (Sandbox Code Playgroud)
我想使用输入的错误"1313..3"值来格式化我自己的消息.你怎么得到这个价值?
我正在跟随Pawel Glowacki的Expert Delphi一书.在页98上,他有以下onClick事件处理程序:
procedure TFormFavJSON.btnReadDOMClick(Sender: TObject);
var
favs: TFavorites; valRoot: TJSONValue; objRoot: TJSONObject;
valFavs: TJSONValue; arrFavs: TJSONArray;
begin
favs := TFavorites.Create;
//
// Several lines of code omitted
//
favs.Free;
end;
Run Code Online (Sandbox Code Playgroud)
但是,当我键入.Cre并使用代码完成Ctrl + Space时,IDE将使用一组空括号完成代码.
favs := TFavorites.Create();
Run Code Online (Sandbox Code Playgroud)
那么以下哪项是最正确的?
favs := TFavorites.Create;
favs := TFavorites.Create();
Run Code Online (Sandbox Code Playgroud) delphi ×10
datamodule ×2
delphi-2010 ×2
database ×1
dbgrid ×1
delphi-xe4 ×1
dunit ×1
easy-install ×1
firebird ×1
firemonkey ×1
indy10 ×1
listview ×1
menu ×1
menubar ×1
query-string ×1
redirect ×1
unit-testing ×1
url ×1
vcl ×1