我正在尝试更新一个遗留应用程序,该应用程序在一个黑客攻击的BDE Paradox文件系统中完成所有数据存储.该程序在某些狭窄的条件下运行良好,但它有严重的性能问题.
我想通过更新到更好的数据库系统来尝试改进.我需要的是一个本地数据库,最好是我可以将整个东西存储在一个文件中,而不是当前的"每个表一个或多个文件"系统.它必须支持外键关系和表索引,并且必须能够从具有数十万个元素的表的查询中快速返回结果.
最后一个很重要.当前系统已编入索引,但这似乎并不重要.所有查询似乎都在O(N)时间内运行,其中N是表的总大小,当表开始变大时,它会变得非常慢.我不确定为什么,但这必须消失.
它必须在D2009及更高版本下工作.有人可以提供一些建议吗?
我有一堆PNG图像,我正在寻找一种识别重复的方法.通过重复,我的意思是,具体地说,两个PNG文件的未压缩图像数据是相同的,不一定是其文件相同.这意味着我不能像比较CRC哈希值那样简单.
我认为这可以实际上可靠地完成,因为PNG使用无损压缩,但我担心速度.我知道我可以通过首先测试相同尺寸来稍微减少一些东西,但是当实际比较图像时,有没有什么方法可以合理有效地做到这一点?(也就是说,比"双重循环检查像素值相互比较"的暴力方法更快?)
我正在尝试构建一个rtl140.bpl的调试版本,以便更轻松地使用运行时包调试应用程序.我构建了DPK并在其上运行了DCC32,然后它就进入了,然后就死了.
C:\ Program Files(x86)\ Embarcadero\RAD Studio\7.0\source\Win32\rtl\sys\Variants.pas(1072)致命:F2092程序或单位'Variants'递归使用自身
但是看看Variants.pas,我看不出怎么样.它只在接口部分使用SysUtils和Types,它们都不使用Variants,也不使用任何使用Variants的东西.
有谁知道为什么这会破坏?
我有三张桌子,我们打电话给他们GRANDPARENT,PARENT然后CHILD. PARENT有一个FK列GRANDPARENT的PK,并CHILD有一个FK列PARENT的PK.到现在为止还挺好.
现在我想设置一个包含所有信息的视图CHILD,以及来自的PK GRANDPARENT.所以:
CREATE VIEW CHILD_VIEW
(
ID,
PARENT_ID,
OTHER_STUFF,
GRANDPARENT_ID
)
AS
SELECT
C.ID,
C.PARENT_ID,
C.OTHER_STUFF,
C.GRANDPARENT_ID
FROM CHILD C
join PARENT P on P.ID = C.PARENT_ID;
Run Code Online (Sandbox Code Playgroud)
不是太难.但这里有一个棘手的部分:我希望能够INSERT或者UPDATE能够看到这个视图,并将所有相关数据写入CHILD表中,并且GRANDPARENT_ID应该忽略值(如果有的话).
我已经做了一些谷歌搜索,显然应该可以设置一个像"通过使用触发器"这样的可更新视图,但它没有解释我应该做什么与触发器来实现这种效果.我想我或多或少知道如何处理INSERT案件,但UPDATE案件呢? UPDATE语句包含WHERE子句,并且可以包含或不包含表中的任何列.
例如,我如何使用触发器来变换像update CHILD_VIEW set (blah blah blah) where ID = 5为update CHILD set (blah blah …
我正在研究JIT编译器,并试图找出如何为托管类型(如字符串)输出正确的清理块.
对于具有一个类型的局部变量的函数,清理块的反汇编string如下所示:
0044333C 648910 mov fs:[eax],edx
0044333F 6854334400 push $00443354
00443344 8D45FC lea eax,[ebp-$04]
00443347 E81834FCFF call @UStrClr
0044334C C3 ret
0044334D E9062BFCFF jmp @HandleFinally
00443352 EBF0 jmp $00443344
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有什么好办法来获得的地址,@UStrClr并@HandleFinally让我的抖动插入.它们在System.Pas中声明为_UStrClr和_HandleFinally,在接口部分,但显然有一些"魔术"正在进行,因为尝试使用这些标识符会导致编译器错误.
所以我尝试了一个ASM例程,在那里我声明了一个全局指针并说mov func_ustr_clear, @UStrClear.这次我没有得到未声明的标识符错误; 我得到一些更奇怪的东西:
[DCC Error]: E2107 Operand size mismatch
Run Code Online (Sandbox Code Playgroud)
所以有人知道如何做到这一点吗?
我有一个用TeeChart创建的饼图,它在我开发的系统上看起来很好,但是当我在另一台机器上运行它时,"馅饼"出来都被压成椭圆形而不是圆形.
我确保该Circled属性(应确保绘制的内容始终是圆形,而不是椭圆形)在TPieSeries设置为True并且不会在任何地方更改.
我检查确保这不是不同屏幕分辨率的工件.不是; 另一个系统与我的开发盒的分辨率相同.
另一个系统关闭了Aero.我通过在我的开发盒上关闭Aero测试了一些东西,并且图表没有被压扁.
在这一点上,我基本上没有想法.有谁知道什么可以导致饼图被设置Circled = true为绘制为椭圆形而不是圆形?
好:
坏: 
这是完全相同的程序,在两台不同的计算机上以完全相同的屏幕分辨率处理完全相同的数据.
编辑: 正如评论中所讨论的,我对此进行了测试,发现两个系统不仅具有相同的分辨率,而且具有相同的DPI.
我有一个TSpeedButton,并且有一个TImageList包含各种字形.其中一个有一个alpha通道,当它被绘制到UI的某些部分时看起来非常好......但是当在a上绘制该字形时TSpeedButton,它不会使alpha通道生效.
查看相关代码TButtonGlyph.DrawButtonGlyph,它将被传递true给Transparent参数,但Transparent在if FThemesEnabled代码路径中根本没有考虑; 它只在else部分引用.由于此程序启用了主题,这是否意味着无法将alpha混合图像绘制为TSpeedButton?
有什么方法可以解决这个问题吗?
编辑:更仔细地看一下,它似乎需要考虑透明度......有点儿.完全透明的像素根本不会被绘制,这是正确的行为.但是边缘周围的抗锯齿(部分透明)被绘制为完全不透明.
我有一个 Python 2 包,我正在尝试升级到 Python 3。它是由曾经在我现在所在的同一团队工作但不再在公司工作的人编写的,不幸的是没有人离开团队能够提供帮助。
在包的文件上运行 2to3 后,我跑去python setup.py sdist创建一个包,将包放在本地存储库中,然后尝试使用pip install来安装包。它最终出现以下错误:
Exception:
Traceback (most recent call last):
File "/home/user/project/lib/python3.5/site-packages/pip/basecommand.py", line 223, in main
status = self.run(options, args)
File "/home/user/project/lib/python3.5/site-packages/pip/commands/install.py", line 297, in run
root=options.root_path,
File "/home/user/project/lib/python3.5/site-packages/pip/req/req_set.py", line 622, in install
**kwargs
File "/home/user/project/lib/python3.5/site-packages/pip/req/req_install.py", line 808, in install
self.move_wheel_files(self.source_dir, root=root)
File "/home/user/project/lib/python3.5/site-packages/pip/req/req_install.py", line 1003, in move_wheel_files
isolated=self.isolated,
File "/home/user/project/lib/python3.5/site-packages/pip/wheel.py", line 340, in move_wheel_files
assert info_dir, "%s .dist-info directory not found" % req
AssertionError: my-package-name .dist-info directory …Run Code Online (Sandbox Code Playgroud) 我有一个 .NET Framework 控制台应用程序,我正在尝试更新到 .NET 5,但它在需要来自 .NET 的数据的某些点上失败app.config。
关于配置如何工作的相关 文档现在非常有帮助,将其所有示例都作为控制台应用程序...直到您真正查看示例为止,这些示例完全没有帮助。它们都基于一个Main如下所示的块:
static async Task Main(string[] args)
{
using IHost host = CreateHostBuilder(args).Build();
// Application code should start here.
await host.RunAsync();
}
Run Code Online (Sandbox Code Playgroud)
控制台应用程序不是 WinForms 应用程序。应用程序代码不会在 Main 中“启动”;Main是程序的主体,这意味着将使配置真正起作用的行放在方法的末尾意味着在程序准备终止之前它永远不会被命中!
我缺少什么?这些文档示例看起来完全没有意义。我不想提供任何服务;我只是希望现有的配置app.config在启动时被读取并可供配置系统使用,这与它在 .NET Framework 中的工作方式完全相同。恢复旧行为的正确方法是什么?
在 Delphi 7 中,当我运行多个 Find In Files 搜索时,每个搜索结果都会生成一个单独的选项卡。我们已经升级到 Delphi 2010,现在当我在每次触发时运行多个 Find In Files 搜索时,它会替换该选项卡,而不是使用连续搜索的结果创建一个新选项卡。有没有办法恢复旧功能,某个地方的设置?
谢谢,
布赖恩
delphi ×7
delphi-2010 ×3
.net-5 ×1
algorithm ×1
assembly ×1
basm ×1
c# ×1
database ×1
delphi-2009 ×1
delphi-xe4 ×1
firebird ×1
pip ×1
png ×1
python ×1
python-2to3 ×1
sql ×1
teechart ×1
vcl ×1