小编Raf*_*cci的帖子

Delphi 64位?

每个人都知道Delphi 64位(每个delphi程序员至少).除了代码集关于64位Delphi应用程序(以及代码设备没有多说)的好处之外,我还能从64位Delphi应用程序中获益吗?一旦codegear发布它,将我的应用程序移植到64位真的是一个好主意吗?

编辑:

我只是问它,因为我想要所有的意见.现在,我可以说我真的需要更多可用于我的应用程序的内存,因为它消耗了大量资源.如果可能的话,我真的可以使用更快的速度.我不需要shell扩展插件.

我的客户也问我关于我的应用程序的x64版本,但我真的不明白他们为什么要求它,因为他们实际上是不知道什么是64位应用程序的律师.

编辑

我实际上并没有直接参与应用程序开发.我是一个技术团队的一员,我创建了我工作的公司中的其他开发人员用来真正开发最终应用程序的东西.所以,我的工作是做技术工作,将应用程序移植到x64是我做的事情,但我需要解释为什么我这样做对我的上级.

delphi 64-bit

21
推荐指数
5
解决办法
3129
查看次数

使用2列进行表分区

是否可以使用2列而不是仅1为分区函数对表进行分区?

考虑一个包含3列的表

    ID (int, primary key, 
    Date (datetime), 
    Num (int)

我想将这个表分为2列:DateNum.

这是我使用1列(日期)对表进行分区的方法:

create PARTITION FUNCTION PFN_MonthRange (datetime)
AS
RANGE left FOR VALUES ('2009-11-30 23:59:59:997',
                       '2009-12-31 23:59:59:997',
                       '2010-01-31 23:59:59:997',
                       '2010-28-02 23:59:59:997',
                       '2010-03-31 23:59:59:997')
go
Run Code Online (Sandbox Code Playgroud)

partitioning sql-server-2008

17
推荐指数
2
解决办法
4万
查看次数

Delphi XE2 Firemonkey示例应用程序未在MAC上运行

我试图在Mac上运行示例Firemonkey应用程序,但我在mac中收到此消息:

dyld: Library not loaded: @rpath/libcgunwind.1.0.dylib
  Referenced from: /Users/nobre/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-Nobre/Project37.app/Contents/MacOS/Project37
  Reason: image not found
dyld: Library not loaded: @rpath/libcgunwind.1.0.dylib
  Referenced from: /Users/nobre/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-Nobre/Project37.app/Contents/MacOS/Project37
  Reason: image not found
dyld: Library not loaded: @rpath/libcgunwind.1.0.dylib
  Referenced from: /Users/nobre/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-Nobre/Project37.app/Contents/MacOS/Project37
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

我使用本教程添加OSX平台:

新Mac和Rad Studio XE2

编辑

有关错误的更多信息:

Process:         Teste2 [34270]
Path:            /Users/User/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-VM/Teste2.app/Contents/MacOS/Teste2
Identifier:      Teste2
Version:         ??? (???)
Code Type:       X86 (Native)
Parent Process:  launchd [94]

Date/Time:       2011-09-01 19:36:26.246 +0100
OS Version:      Mac OS X 10.6.8 (10K540)
Report Version:  6

Interval Since Last Report:          3908 …
Run Code Online (Sandbox Code Playgroud)

delphi macos delphi-xe2 firemonkey

17
推荐指数
3
解决办法
1万
查看次数

Delphi编辑器配色方案

我想知道是否有人可以发布Delphi IDE编辑器配色方案,而不是Delphi附带的配色方案.我厌倦了这种白色/黑色的颜色,我正在互联网上寻找好的例子,但到目前为止我一无所获.有没有人可以发布.reg(delphi在注册表中存储ide颜色)和delphi IDE的屏幕截图,以便可以复制它?

ide delphi colors

13
推荐指数
3
解决办法
1万
查看次数

Delphi threadvar问题

当我们threadvar声明了,当这个变量被初始化时(创建了对象)?是否在var的第一次赋值时发生?例如:

threadvar
  myThreadVar : string;

......

//inside a thread
  ...
  myThreadVar := 'my value'; // In this point the var will be initialized?
Run Code Online (Sandbox Code Playgroud)

如果我在线程设置了var的值之后尝试在线程外部使用此var会发生什么?例如:

//at the main thread (application)
  ...
  //Call the thread;
  //thread finishes execution
  //thread is destroyed
  ShowMessage(myThreadVar); // what happens here?
Run Code Online (Sandbox Code Playgroud)

delphi multithreading

13
推荐指数
2
解决办法
3572
查看次数

依赖注入 - 当你有很多依赖项时该怎么办?

我有一个A级,取决于其他10个类.根据依赖注入模式,我应该通过其构造函数传递A的所有依赖项.

所以我们假设这个构造函数(当然这不是一个工作或真实的代码,因为我不允许在这里发布真正的代码)

public ClassA(ClassB b, ClassC c, ClassD d, ClassE e, ClassF f, ClassG g, ClassH h, ClassI i) {
  this.b = b;
  this.c = c;
  this.d = d;
  this.e = e;
  this.f = f;
  this.g = g;
  this.h = h;
  this.i = i;
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了Martin Fowler关于重构的书,即有一个带有大量参数的方法是一种代码气味,不应该发生.

我的问题是:当我们谈论DI时,这样可以吗?是否有更好的方法可以在不违反Martin Fowler规则的情况下注入依赖关系?

我知道我可以通过属性传递依赖项,但这可能会导致错误,因为没有人真正确定应该传递什么才能使类工作.

编辑

谢谢你的所有答案.我现在将尝试演示一些A类依赖项:

1 - 访问数据库
2的类 - 访问另一个数据库的另一个类(是的,我需要在两个数据库上执行操作)
3 - 通过电子邮件发送错误通知的
类4 - 加载配置
的类5 - 一个类将作为某些操作的计时器(也许这可以避免)
6 - 具有业务逻辑的类

我试图摆脱任何其他许多其他人,但这些是非常必要的,我没有看到任何避免它们的方法.

编辑

经过一些重构后,我有7个依赖项(从10开始).但我有4个DAO对象:

CustomerDAO
ProcessDAO
ProductsDAO
CatalogDAO

是否正确创建另一个名为MyProjectDAO的类并将其注入其中?这样我只有一个DAO类聚合我项目的所有DAO对象.我不认为这是一个好主意,因为它违反了单一责任原则.我对吗?

c# refactoring design-patterns dependency-injection

13
推荐指数
2
解决办法
3917
查看次数

如何测试连接到FTP服务器的类?

我正在为我的应用程序开发实时更新.到目前为止,我已经创建了几乎所有单元测试,但我不知道如何测试连接到FTP服务器并下载新版本的特定类.

要测试这个类,我应该创建一个FTP测试服务器并在我的单元测试中使用它吗?如果是这样,我如何确保此FTP服务器始终与我的测试保持一致?我应该在测试开始之前手动创建我需要的每个文件,还是应该在我的测试类中自动执行此操作(拆除和设置方法)?

这个问题也适用于连接任何类型服务器的单元测试类.

编辑

我已经在模拟我的ftp类,所以我不需要在其他测试中连接到ftp服务器.

让我看看沃伦在评论中所说的话我是否正确:

我认为,一旦你通过TCP/IP与一个单独的应用程序交谈,我们就应该称之为"集成测试".一个是不再测试一个单元或方法,而是一个系统.

当单元测试需要与另一个应用程序(可以是HTTP服务器或FTP服务器)通信时,这不再是单元测试而是集成服务器吗?如果是这样,我是否通过尝试使用单元测试技术来创建此测试?说我不应该对这个班级进行单元测试是否正确?这对我来说很有意义,因为单元测试似乎需要做很多工作.

delphi ftp unit-testing delphi-2010

12
推荐指数
2
解决办法
4806
查看次数

Delphi中用于SQL Server的SQL解析器

我在Delphi(2010)中为SQL Server寻找一个好的SQL解析器.我需要解析查询并提取:select list,where和order by子句.无论是商业解决方案还是开源解决方案都无关紧要.它也可以是一个DLL(当然用任何语言编写)但我更喜欢VCL组件而不是DLL.

sql-server delphi parsing

10
推荐指数
1
解决办法
3645
查看次数

WM_COPYDATA SendMessage - 它可以发送大字符串吗?

我将不得不WM_COPYDATA在2个应用程序之间实现IPC.我似乎在互联网上的样本,但他们都只发送少于255个字符的字符串.

我想发一个大字符串(超过1k)到另一个进程使用WM_COPYDATA.可能吗?有什么限制?我应该发送流而不是字符串或记录吗?

这两个应用程序都是由我使用Delphi 2010开发的.

delphi string ipc wm-copydata

10
推荐指数
1
解决办法
889
查看次数

下载大文件时,SendAsync和CopyToAsync无法正常工作

我有一个小应用程序,它接收来自浏览器的请求,复制收到的标头和发布数据(或GET路径)并将其发送到另一个端点.

然后它等待结果并将其发送回浏览器.它像反向代理一样工作.

一切正常,直到它收到下载大文件的请求.像30MB这样的东西会在浏览器中引起奇怪的行为.当浏览器达到大约8MB时,它会停止从我的应用程序接收数据,并在一段时间后中止下载.其他一切都很好.

如果我改变SendAsync使用HttpCompletionOption.ResponseContentRead它的线就可以了.我假设等待流和/或任务有什么问题,但我无法弄清楚发生了什么.

该应用程序使用C#,.net Core(最新版本)编写.

这是代码(部分)

private async Task SendHTTPResponse(HttpContext context, HttpResponseMessage responseMessage)
{
    context.Response.StatusCode = (int)responseMessage.StatusCode;

    foreach (var header in responseMessage.Headers)
    {
        context.Response.Headers[header.Key] = header.Value.ToArray();
    }

    foreach (var header in responseMessage.Content.Headers)
    {
        context.Response.Headers[header.Key] = header.Value.ToArray();
    }

    context.Response.Headers.Remove("transfer-encoding");

    using (var responseStream = await responseMessage.Content.ReadAsStreamAsync())
    {
       await responseStream.CopyToAsync(context.Response.Body);
    }

}

public async Task ForwardRequestAsync(string toHost, HttpContext context)
{

    var requestMessage = this.BuildHTTPRequestMessage(context);
    var responseMessage = await _httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead, context.RequestAborted);
    await this.SendHTTPResponse(context, responseMessage);
}
Run Code Online (Sandbox Code Playgroud)

编辑

更改了SendHTTPResponse以等待responseMessage.Content.ReadAsStreamAsync …

c# reverse-proxy .net-core asp.net-core

10
推荐指数
1
解决办法
975
查看次数