小编War*_* P的帖子

从任何文件中获取缩略图,甚至是不在thumbs.db中的缩略图

我需要从文件夹中的文件中提取缩略图.我试过这个例子,但它并不总是有用.它为我提供了图像和PDF文件的缩略图,但没有Word,Excel,Text,OpenOffice等文件.

编辑:我的意思是"它不起作用"是"它不会返回我期望的图像.它返回用于打开文件的应用程序的图标.

编辑2:Windows资源管理器确实显示我提到的"不工作"(.xls,.doc ,, .ppt,.odt,.ods)文件的缩略图

delphi api thumbnails

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

具有代码完成功能的python IDE,包括参数对象类型推断

我已经测试了各种Python IDE的代码完成功能.是否存在可以在以下情况下执行代码完成的代码:

def foo(x):
    print x.read()  // remove this line, and type in "print x."

def main():
    n = open("c:\\python27\\test.py");
    foo(n)
Run Code Online (Sandbox Code Playgroud)

IDE必须弄清楚foo是在当前模块的某个地方调用的,参数是一个调用open()的返回值,它必须假定它是一个调用file.open,因此返回一个文件对象.因此,x.Ctrl + Space后面会调用代码完成并显示x作为文件对象,可以支持任何文件对象方法,包括read().

我发现PyScripter可以做到这一点:

    n = open("c:\\python27\\test.py");
    n. // hit <ctrl+space> after n.
Run Code Online (Sandbox Code Playgroud)

上面的代码完成方案是有效的,因为PyScripter做了一些特殊的代码完成逻辑来确定n是一个文件对象,但是似乎没有办法从静态分析中推断出可以推导出类型的对象类型或可用方法参数.

其次,如果Python 2.x中没有这样的东西,在Python 3.x中,现在有静态类型提示,是否有任何IDE支持它们?

   def foo(x:'file'):
        print x.read()  // remove this line, and type in "print x." and hit ctrl+space
Run Code Online (Sandbox Code Playgroud)

ide type-inference code-completion python-2.7 python-3.x

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

当你在TortoiseHG版本2.1.2中时,如何显示"hg head"输出?

我最近从TortoiseHG 1.x升级到TortoiseHG 2.x,Tortoise HG的用户界面也发生了巨大变化.

我仍然没有在tortoisehg 2.x中找到任何这样的单选按钮来显示头部.

mercurial tortoisehg-2.0

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

如何在delphi中与HID USB设备通信

我一直在研究这个问题一段时间,我似乎无法做到正确.我有一个C++版本的软件我想在delphi中制作,但我不能让它在delphi中工作.我需要一些教程或指南,可以告诉我如何连接,读取和写入HID USB设备的数据.

delphi usb hid

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

新的Delphi XE2自动生成的内部版本号是否链接到1.1.2000 00:00:00?

在Delphi XE2中,自动生成的构建号功能现在使用某种日期和时间生成的值,如下所示:

2.4.4386.838

每次构建时最后两个数字都会更改,并且基于当前日期和时间:

Major = 2 (user defined)
Minor = 4 (user defined)
Release = 4386 (number of days since Jan 1 2000)
Build = 838 (number of seconds since 00:00:00)
Run Code Online (Sandbox Code Playgroud)

我想这个发布和构建数字的新格式是从.NET实现中借用的,它实现了非常相似的功能.在.net中,最后一个数字(Build)等于自当地时间午夜以来的秒数除以2.有关.net实现的详细信息,请参阅此链接:艰难地确定构建日期

如果可以依靠这种方式保持这种方式,那么现在我们有更好的方法来确定编译时间而不是

  1. 使用IDE插件

  2. 使用PE Headers hacks

问题不在于如何返回旧的自动增量版本号功能.

问题 XE2是否确实使用了上面显示的日期和时间,从2010年1月1日开始,在Build和Release数字中添加了几天和几秒?

delphi parsing auto-versioning compilation-time delphi-xe2

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

如何在Delphi中打印表单?

在网上搜索了大约半个小时后,我决定寻求帮助.目前我正在使用此代码:

procedure TViewSalesActivity.btnPrintClick(Sender: TObject);
begin
  with TPrintDialog.Create(nil) do
  ViewSalesActivity.PrintScale:= 1.5
  try
   if Execute then
     ViewSalesActivity.Print;
 finally
   Free;
 end;
end;
Run Code Online (Sandbox Code Playgroud)

打印整个表单.表单包括按钮,文本,标题和编辑框等.

唯一的问题是打印输出是计算机窗口的缩放; 这太小了.它也卡在页面的左上角.有没有办法让它填满整页/大部分页面?

printing delphi

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

在VCL中禁用DbGrids.pas中键盘布局的自动更改

我使用ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);Delphi XE2来加载波斯语键盘布局,但有时我点击TextBox或DbGrid控件键盘会自动更改为英文布局.

如何禁用键盘布局的自动更改?

delphi keyboard-layout delphi-xe2

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

有没有办法在 TRttiField 中 FieldType 为零的结构中获取 real48 和短字符串变量的 RTTI 提示?

我发现 Delphi 中的扩展 RTTI 功能有一个奇怪的疏忽(可能是故意的)。

我想转储包含大约 1500 个不同字段的记录类型中的所有字段。是的,认真的。

其中一些是 real48 类型,一些是短字符串,对于这两种类型,在运行时这些类型的 FieldType 似乎为零:

function TRttiField.GetValue(Instance: Pointer): TValue; 
var
  ft: TRttiType;
begin
  ft := FieldType;
  if ft = nil then
    raise InsufficientRtti; // This fires!
  TValue.Make(PByte(Instance) + Offset, ft.Handle, Result);
end;
Run Code Online (Sandbox Code Playgroud)

如果我愿意假设所有 nil-fieldtype 字段实际上都是 real48 字段,我可以简单地使用偏移量并(如果字段宽度为 6)获取 real48 值。

然而,第二个复杂之处是所有短字符串(即string[30])类型都受到类似的困扰。

有人让这两种古代 Pascal 类型与现代扩展 RTTI 一起使用吗?现在我正在使用最佳猜测方法,如果失败,我会按字段名称对规则进行硬编码,但如果有某种技术我可以使用,那么我就可以到达那里,而无需编写大量代码来提取来自我正在现代化的所有这些旧的帕斯卡记录文件中的信息,我将不胜感激更好的想法。

delphi rtti

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

如何手动将HTML帮助文件注册到Delphi(RAD Studio)XE6在线文档中?

当运行诸如Developer Express组件之类的delphi组件安装程序时,它将使用h2reg和INI文件以及一些宏魔术函数将html帮助文件注册到Delphi IDE中。如果我是Delphi组件的开放源代码或商业作者,并且想提供一个注册html-help的安装程序,我该怎么做?

在非常旧的Delphi版本(2007之前)中,有一个用于注册额外的winhelp内容的工具。但是近年来,尽管许多大型供应商(如开发人员Express)仍在为他们的组件提供帮助,可以使用IDE上下文帮助(按F1键)进行访问,但是在Delphi 2007及更高版本(包括XE6)中似乎并没有完成此过程的过程已得到充分记录,因此组件作者通常会忽略内置在帮助中的Delphi IDE。

我发现一个名为的第三方实用程序h2reg可能与此有关,但是我无法发现在此处显示内容的秘密:

在此处输入图片说明

我相信我知道难题的其中几个,而且我有一个来自Developer Express组件的工作中的.ini文件示例,但是我无法弄清楚如何将它们拼在一起。我认为这对于所有Delphi组件开发人员来说都是一个有用的事实,因此我在这里提出这个问题。

一个相关的问题询问如何修复内置的东西。我想进一步询问如何注册自己的html帮助(.hxs, .hxc,*。hxt)文档。

更新:

解决方案的一部分似乎是了解H2REG的语法,如下所示:

   c:\path\to\H2Reg.exe -r cmdfile=c:\path\to\MyH2Reg_Cmd.ini
Run Code Online (Sandbox Code Playgroud)

该INI文件中保留的内容仍然未知,因此它会显示在Delphi XE6中。

delphi html-help delphi-xe6

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

什么是Delphi/AppMethod BindSourceDB范围映射以及如何使用它们?

我正在使用Delphi/AppMethod XE6,并将Firemonkey Mobile HD表单添加到空白项目中.

在表单上,​​我删除了一个BindSourceDB组件,并在结构窗口中查看它,在那里,我可以看到一个ScopeMappings子属性.我还可以ScopeMappingsObject Inspector窗口中看到该属性,它显示了它的TScopeMappings类型.

对于我的生活,我无法弄清楚这个属性是什么/做什么,以及ScopeMappings到底是什么.

我从Embarcadero文档中找到的全部内容如下:http: //docwiki.embarcadero.com/Libraries/XE6/en/Data.Bind.DBScope.TBindSourceDB.ScopeMappings

Data.Bind.DBScope.TBindSourceDB.ScopeMappings

ScopeMappings属性指定一个拥有的集合,其元素是范围映射.ScopeMappings用于添加可以由引用此源组件的表达式引用的名称/值对.

显然,这不是非常有用.

我在网上到处搜索,包括这里的SO,找不到任何东西.请帮忙.

delphi bindingsource delphi-xe6 appmethod

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