小编Jim*_*eth的帖子

Delphi中动态数组的最大长度?

我很好奇动态阵列有多长,所以我试过了

SetLength(dynArray, High(Int64));
Run Code Online (Sandbox Code Playgroud)

它的值为9,223,372,036,854,775,807,我认为这是我可以参考的最大索引数.它给了我一个:

带有消息'范围检查错误'的ERangeError.

所以我尝试过:

SetLength(dynArray, MaxInt); 
Run Code Online (Sandbox Code Playgroud)

并得到了同样的错误!

有趣的是我可以称之为

SetLength(dynArray, Trunc(Power(2, 32));
Run Code Online (Sandbox Code Playgroud)

这实际上是MaxInt大小的两倍!

我试过了

SetLength(dynArray, Trunc(Power(2, 63) - 1));
Run Code Online (Sandbox Code Playgroud)

这与High(Int64)相同,但也失败了.

没有继续尝试和错误,有人知道最大尺寸?它取决于数组中元素的大小吗?

我正在使用Delphi 2009.对于不同的版本会有所不同(显然当Commadore出来时它应该更大!)

delphi delphi-2009

5
推荐指数
2
解决办法
1万
查看次数

如何使用功能点估算任务?

使用功能点估算的步骤是什么?

有没有某种快速参考指南?

project-planning estimation

4
推荐指数
1
解决办法
4410
查看次数

在C中将控制台exe转换为dll

我有兴趣从另一个Windows GUI程序(自然地用Delphi编写)中调用SoX,一个开源控制台应用程序.我不想处理抓取和隐藏控制台窗口,而是将应用程序转换为可以从我的应用程序调用的DLL.

在我开始这条道路之前,我很好奇我应该期待多少工作?我们是在谈论一项重大事业,还是有直接的解决方案?我知道一些C,但绝不是专家.

我不期待SoX的具体细节,只是EXE控制台应用程序一般转换为DLL.如果有人熟悉SoX,那就更好了.

c delphi dll exe

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

ExceptProc没有在Windows中调用

我目前正在尝试创建一个内置在我的Windows服务中的异常处理程序,在未处理的异常中,它将消息发送到另一个程序.我已经构建了方法并使通信工作,但似乎每次我的程序抛出错误,(我在代码中有一个加注调用来强制它.)windows捕获它而不调用Handler.谁能解释我做错了什么?

简化代码解释:

procedure unhandled();
  begin
    raise Exception.Create('Unhandled');
  end;

procedure ExceptionHandler(ExceptObject: TObject; ExceptAddr: Pointer);
  begin
    WriteLn('Display: ' + Exception(ExceptObject).Message);
    //send Message Here
  end;
Run Code Online (Sandbox Code Playgroud)

我调用此代码来运行它:

WriteLn('Starting');    

ExceptProc := @ExceptionHandler;    

unhandled();
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

开始
显示:未处理

但它只是显示:

开始

然后Windows在大约5秒后返回命令提示符.

为什么处理程序没有被正确调用?

PS我一直在控制台应用程序中运行这些测试进行测试.

编辑:

以下是一些更多信息:

显然,当您有一个已分配的ExceptProc时,您的程序不应抛出正常的运行时217错误.我猜这是Windows正在捕捉的内容,但是我可以看到,我的程序正在抛出运行时错误,我也无法获得ErrorProc来捕获它.

delphi exception-handling exception

4
推荐指数
1
解决办法
741
查看次数

在哪里可以为Delphi Prism定义条件编译常量?

我刚刚将一个Web服务从Delphi.NET 2006移植到Delphi Prism 2009(在Visual Studio 2008 IDE中运行).但我无法找到我应该设置(或取消设置)条件编译常量的位置!

我是否瞎了,这个选项被遗漏了,还是VS不支持?

[编辑:感谢Mohammed Nasman的链接] MSDN告诉我使用Project Designer设置它们.首先,我花了一段时间才发现项目菜单仅在选择解决方案时才可见(而不是Web服务项目).然后,仍然无法在Project Designer中设置条件编译常量!

我只是找不到一种方法来获取ASP.NET项目中的项目选项 ...它真的不可能吗?

asp.net delphi oxygene visual-studio

4
推荐指数
1
解决办法
1442
查看次数

将TDateTime转换为另一个时区,无论本地时区如何

无论用户的本地时区设置为什么,使用Delphi 2007,我都需要确定东部时区的时间(TDateTime).

我怎样才能做到这一点?当然,需要节省时间的夏令时.

delphi timezone

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

Delphi 2009的通用链接列表

我正在寻找Generics.Collections并注意到没有链表.当然它们很容易制作,但我觉得奇怪的是没有一个(或者我只是错过了它).与新的现代数据结构相比,链接列表是否过时,还是需要通用的通用链表?有谁知道吗?

delphi generics linked-list delphi-2009 data-structures

4
推荐指数
1
解决办法
3175
查看次数

禁用XAML预览

在Visual Studio 2008中,当我从项目中打开XAML文件时,它会显示水平分割,顶部是预览,底部是XAML.大多数时候我们的XAML不会在预览中渲染,所以我只需要等待它尝试渲染,然后关闭预览.

有没有办法让它默认不显示XAML预览窗口,只是给我一个完整的XAML编辑窗口?谢谢!

silverlight xaml visual-studio-2008 visual-studio

4
推荐指数
1
解决办法
1943
查看次数

嵌入式文件到delphi exe应用程序(不作为应用程序的单独文件)

我想嵌入一个文件(任何类型的)到我的exe应用程序,并能够在远程提取使用它,我知道如何嵌入到资源,但我不想将文件放在app目录,我想将所有文件(如.rec)存储到我的exe中,在c#中可以存储为文本文件,然后通过FileStream读取它,但在Delphi中,资源文件与exe文件是分开的.有没有解决方案呢?非常感谢!

delphi delphi-7

4
推荐指数
1
解决办法
6896
查看次数

寻找记忆泡泡

这要么荒谬简单,要么太复杂....

在我们的应用程序中,有一个表单从数据库加载一些数据并将其显示在网格中(简单地说).刷新数据时,总内存使用量增加约50K(取决于显示的数据量无疑).听起来像内存泄漏,但是当我们关闭应用程序时,FastMM设置为ReportMemoryLeakOnShutDown:= True,并且它不报告任何异常内存泄漏.

所以看来我们有一个记忆泡泡或包.每次运行时累积更多内存的东西.就像一个TList不断添加新项目,但旧的项目永远不会被删除.然后在关机过程中,所有项目都被销毁.网格中显示的行不会增加,但是幕后有很多对象列表可以使这个工作,所以它可以在任何地方.

所以我的问题是,如果有人知道一个好的技巧,找出应用程序的哪些部分正在使用多少内存....我可以想到很多繁琐的方法(我正在做的事情 - 检查我能找到的每个列表),所以我希望有人有一个我没有想过的技巧或技巧.

提前致谢!

更新:每次刷新都会导致使用额外的10-50K内存.用户报告最终应用程序停止响应.它当然就像一个内存泄漏,但FastMM(内存管理器)看不到任何泄漏.我会尝试一些其他的记忆工具...

memory delphi profiling

3
推荐指数
2
解决办法
497
查看次数