Wiert角——不规则的东西流

Jeroen W.Pluimers继续。NET、C#、Delphi、数据库和个人兴趣

  • 我的徽章

  • Twitter更新

  • 我的Flickr流

  • 所有类别

  • 输入您的电子邮件地址以订阅此博客并通过电子邮件接收新帖子的通知。

    加入4267个其他订户

2009年12月存档

欢迎使用Classic Shell:Windows 7的Classic开始菜单和Classic资源管理器功能

发布者jpluimers公司2009年12月31日

可用性中的一件事是启用一直在使用的老skoop用户。

Windows7比WindowsVista更进一步,改变了自Windows95以来的开始菜单功能和资源管理器功能。
所以,那些已经工作了十多年的事情,突然停止了工作,或者更糟:工作方式不同。

你能想象当有人重新排序汽车的踏板(从左到右是离合器、制动器和油门)或重新分配其功能时发生了什么吗?

所以一些人聚集在一起写经典外壳.

现在,有人请将“退格”键盘行为重新设置为“在文件夹树中向上提升一级”,就像过去十多年一样…

–杰伦

发布于键盘和键盘快捷键,超级用户,可用性,用户体验(ux)|4条评论»

有人让Delphi 2010代码格式化程序使用匿名方法吗?

发布者jpluimers公司2009年12月24日

在默认设置下,Delphi 2010代码格式化程序将匿名方法折叠在一行中。

有没有人找到设置来规避这一点?
(你也可以对我的堆栈溢出问题,我将用相关答案更新博客)。

原始代码:

程序TUnit。追加定案(const StringBuilder:TStringBuilder);开始附加成员结果(StringBuilder,函数(成员:TGeneratableInUnit):IStringListWrapper开始结果:=成员。定案文本;结束);结束;程序TUnit。AppendMemberResults(常量StringBuilder:TStringBuilder;常量GetMemberText:TFunc<TGeneratableInUnit,IStringListWrapper>);

格式化代码:

程序TUnit。追加定案(const StringBuilder:TStringBuilder);开始AppendMemberResults(StringBuilder,function(Member:TGeneratableInUnit):IStringListWrapper begin Result:=Member。定案文本;结束);结束;程序TUnit。AppendMemberResults(常量StringBuilder:TStringBuilder;常量GetMemberText:TFunc<TGeneratableInUnit,IStringListWrapper>);

如您所见,匿名方法被格式化为一行。

我觉得我错过了一些设置…

–杰伦

发布于德尔福,德尔福2010,开发,软件开发|留言»

对于D2007之前的版本:CodeCentral 24535 Delphi SOAP Runtime and Importer Update

发布者jpluimers公司2009年12月23日

必须在一个旧项目中使用它,所以我把它作为参考(相当多的人都有它,它是在2007年底发布的,我只是把它放在这里作为自己的参考):
[返回路线]24535 Delphi SOAP运行时和导入程序更新.

它包含来自Delphi2007的SOAP运行时和WSDL导入程序,但随后为Delphi 7、Delphi 2005和Delphi 2006编译。
因此,如果您有一个项目被困在那些旧的Delphi版本中,那么您可以使用Delphi2007提供的SOAP/WDL支持。

–杰伦

发布于德尔福,开发,SOAP/Web服务,软件开发|1评论»

Delphi 2010内部版本号不会告诉您安装了什么

发布者jpluimers公司2009年12月17日

我应用了更新4和5以及增强更新。
由于我不知道Delphi 2010的确切状态,所以我查看了Help About框中的内部版本号和项目列表。
阅读本条剩余内容»

发布于德尔福,开发|11条评论»

Delphi–MD5:MessageDigest_5单元自Delphi 2007以来一直存在

发布者jpluimers公司2009年12月11日

我仍然看到很多人自己动手MD5公司实施。
许多现有的MD5实现在Delphi 2009和更高版本中无法很好地工作(因为它们需要适应Unicode)。
如果传递与AnsiString或UnicodeString相同的ASCII字符,那么许多现有实现的行为都会有所不同。

MessageDigest_5单元自Delphi 2007年起在Delphi中可用。
这是相对于安装目录的位置:源\Win32\soap\wsdlimporter\MessageDigest_5.pas

(编辑:20091223:自Delphi 7.01以来,Indy提供了IdHashMessageDigest单元,它也可以执行md5,请参阅下面的注释)

因此WSDL使用的这个单元,更重要的是:与Unicode一起工作(如果您传递一个带有Unicode字符的字符串,它将首先将其转换为UTF-8)。
该单元不在您的默认搜索路径中,并且没有得到很好的升级(Embarcadero站点上的唯一链接是Pawel Glowacki的文章),所以很少有人知道。

现在也知道:-)

注意,MD5通常用于散列二进制数据。
通过AnsiString和UnicodeString版本发送非ASCII字符串是不明智的:由于编码不同(因此二进制表示不同),您将根据使用的Delphi版本获得不同的结果。

显示上述AnsiString/UnicodeString问题的用法示例不适用于ASCII字符串,也不适用于ANSI字符串:这是因为在散列之前都使用UTF-8进行编码。
Delphi 2007没有进行UTF-8编码,因此您将在此处看到不同的结果。
您还将看到Writeln使用Console进行编码,这与代码编辑器不同。

编辑:20091216–添加了RawByteString示例,以表明转换无关紧要。

<br/>程序md5<br/><br/>{$APPTYPE CONSOLE}<br/><br/>使用SysUtils,<br/><%%KEEPWHITESPACE%%>“C:\Program Files\Embarcadero\RAD Studio\7.0\source\Win32\soap\wsdlimporter\MessageDigest_5.pas”中的MessageDiges_5<br/><%%KEEPWHITESPACE%%>//Vista/Windows 7:MessageDigest_5位于“C:\Program Files(x86)\Embarcadero\RAD Studio\7.0\source\Win32\soap\wsdlimporter\MessageDigets_5.pas”中<br/><br/>函数GetMd5(常量值:AnsiString):string;过载<br/>var<br/><%%KEEPWHITESPACE%%>哈希:MessageDigest_5.IMD5<br/><%%KEEPWHITESPACE%%>指纹:字符串<br/>开始<br/><%%KEEPWHITESPACE%%>哈希:=MessageDigest_5.GetMD5()<br/><%%KEEPWHITESPACE%%>哈希。更新(值)<br/><%%KEEPWHITESPACE%%>指纹:=哈希。AsString()<br/><%%KEEPWHITESPACE%%>结果:=较低案例(指纹)<br/>结束<br/><br/>函数GetMd5(常量值:UnicodeString):string;过载<br/>var<br/><%%KEEPWHITESPACE%%>哈希:MessageDigest_5.IMD5<br/><%%KEEPWHITESPACE%%>指纹:字符串<br/>开始<br/><%%KEEPWHITESPACE%%>哈希:=MessageDigest_5.GetMD5()<br/><%%KEEPWHITESPACE%%>哈希。更新(值)<br/><%%KEEPWHITESPACE%%>指纹:=哈希。AsString()<br/><%%KEEPWHITESPACE%%>结果:=较低案例(指纹)<br/>结束<br/><br/>var<br/><%%KEEPWHITESPACE%%>源AnsiString:AnsiString<br/><%%KEEPWHITESPACE%%>源Unicode字符串:Unicode字符串<br/><%%KEEPWHITESPACE%%>SourceRawByteString:原始字节字符串<br/><br/>开始<br/><%%KEEPWHITESPACE%%>尝试<br/><%%KEEPWHITESPACE%%>SourceAnsiString:='foobar'<br/><%%KEEPWHITESPACE%%>SourceUnicodeString:='foobar'<br/><%%KEEPWHITESPACE%%>SourceRawByteString:='foobar'<br/><br/>Writeln(GetMd5(SourceAnsiString))<br/><%%KEEPWHITESPACE%%>写入(GetMd5(SourceUnicodeString))<br/><%%KEEPWHITESPACE%%>写入(GetMd5(SourceRawByteString))<br/><br/><%%KEEPWHITESPACE%%>源AnsiString:='förobár'<br/><%%KEEPWHITESPACE%%>SourceUnicodeString:='förober'<br/><%%KEEPWHITESPACE%%>SourceRawByteString:='förobár'<br/><%%KEEPWHITESPACE%%>Writeln(SourceAnsiString,'',GetMd5(SourceAnsiString))<br/><%%KEEPWHITESPACE%%>写入(SourceUnicodeString,'',GetMd5(SourceUnicode String))<br/><%%KEEPWHITESPACE%%>Writeln(SourceRawByteString,'',GetMd5(SourceRaw Byte String))<br/><%%KEEPWHITESPACE%%>,E上的<br/><%%KEEPWHITESPACE%%>除外:写入(E.ClassName,“:”,E.Message)异常<br/><%%KEEPWHITESPACE%%>结束<br/>结束<br/>

–杰伦

发布于德尔福,开发,编码,散列,md5型,超级用户,安全性,软件开发,Unicode码,UTF-8型,UTF8标准|28条评论»