标签: delphi-2010

将函数转换为delphi 2009/2010(unicode)

我正在慢慢将现有代码转换为Delphi 2010,并阅读Embarcaedro网站上的几篇文章以及MarcoCantú白皮书.

还有一些我还没有理解的东西,所以这里有两个函数来举例说明我的问题:

function RemoveSpace(InStr: string): string;
var
  Ans     : string;
  I       : Word;
  L       : Word;
  TestChar: string[1];
begin
  Ans := '';
  L := Length(InStr);
  if L > 0 then
  begin
    for I := 1 to L do
    begin
      TestChar := Copy(InStr, I, 1);
      if TestChar <> ' ' then Ans := Ans + TestChar;
    end;
  end;
  RemoveSpace := Ans;
end;

function ReplaceStr(const S, Srch, Replace: string): string;
var
  I: Integer;
  Source: string;
begin
  Source := S;
  Result := …
Run Code Online (Sandbox Code Playgroud)

delphi unicode delphi-2009 delphi-2010

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

不区分大小写的Bob Jenkins哈希?

Bob Jenkins哈希函数是否存在不区分大小写的变体?

Generics.Defaults.BobJenkinsHash
Run Code Online (Sandbox Code Playgroud)

提供快速哈希函数.不幸的是,它不能与不区分大小写的比较函数结合使用

TCustomStringComparer = class (TEqualityComparer <String>)
  function Equals(const Left, Right: String): Boolean; override;
  function GetHashCode(const Value: String): Integer; override;
end;
function TCustomStringComparer.Equals (const Left, Right : String) : Boolean;
begin
  Result := CompareText (Left, Right) = 0;
end;
function TCustomStringComparer.GetHashCode (const Value : String) : Integer;
begin
  Result := Generics.Defaults.BobJenkinsHash (Value [1], Length (Value) * SizeOf (Char), 0);
end;
Run Code Online (Sandbox Code Playgroud)

这是因为TDictionary首先比较哈希码,然后在检查相等性时使用提供的比较器.

当然我可以在我的GetHashCode函数中使用UpperCase ,但我想知道如果我能以某种方式修改哈希函数本身会更快.

delphi hash delphi-2010

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

检测陈旧的互斥锁

是否有任何技术或工具可用于在运行时检测此类死锁?

在工作线程(几个中的一个,通常是4-6)中描绘这个

try
   WaitForSingleObject(myMutex);
   DoSTuffThatMightCauseAnException;
except
   ReleaseMutex(myMutex);
end;
Run Code Online (Sandbox Code Playgroud)

或者更普遍的是有一种设计模式来避免这些错误吗?

经过长时间的黑客攻击,我在上面的代码中编写了上面的代码

delphi debugging multithreading delphi-2010

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

Delphi 2010迁移项目中的Rave BE"代码报告"是什么?

我想将Delphi 7项目迁移到Delphi 2010.

我们正在使用Rave BE的TReportShell和TDetailShell组件构建"代码报告".Rave BE 7.7中不再存在这些组件.

此外,似乎在Rave BE中打破了unicode支持(在Delphi 2009上的Rave Reports中显示unicode文本).

将此项目移植到Delphi 2010的最佳解决方案是什么?

  1. 重新实现编写aruond TReportShell和TDetailShell的代码以使用新的TRvNDRWriter组件?
  2. 迁移到快速报告?
  3. 还有其他建议吗?

delphi reporting rave-reports delphi-2010

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

Delphi Ansistrings

我有一个情况在这里,我将迁移到2011德尔福XE德尔福7,让我吃惊的许多组件将由于ansistrings问题,他们看起来像日本/中国文字德尔福XE,现在我用的单位是一个PCSC连接器,似乎已停止/放弃原始开发人员.

基本上我想要的是一个简单的方法来再次阅读字符串与尽可能少的原始代码修改..

如果有任何关于如何使用makae组件ansistring准备好2009年的更好的教程,那么更新也会帮助我

delphi delphi-7 ansistring delphi-2010

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

是否可以在运行时将最小化,最大化和关闭按钮附近的TForm标题添加到自定义按钮?

可能重复:
Windows Aero Glass和Compositing(DWM)的资源将
按钮插入窗口标题栏

我正在使用Delphi 2010.

我想知道是否有办法在最小化,最大化和关闭按钮的左侧添加自定义按钮.分配了onClick事件的按钮?

这将用于模态和非模态形式.

感谢名单!

delphi delphi-2010

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

delphi中的TOleServer ...等效的.NET类?

我有一些delphi代码,我需要迁移/ port /重写到.NET

该代码使用TOleServer.能告诉我这个特定类的任何.NET等效实现吗?

它是否可以通过非托管代码获得?

谢谢

delphi delphi-7 delphi-2010

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

主表单delphi上的未声明标识符

我在我创建的名为submit的程序中得到了"Undeclared identifier".

procedure submit;
begin
if ebMain.Text='exit' then
fmMain.Close;
end;
Run Code Online (Sandbox Code Playgroud)

真的很简单.编译器告诉我ebMain是未声明的.我可以通过添加"fmMain"来解决这个问题.在它前面,但我从来没有在delphi 7中这样做.编辑框(ebMain)在主窗体上(fmMain).过程标题位于"使用"下方.怎么了?

delphi delphi-2010

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

德尔福与indy

我刚刚开始在Delphi 2010中使用indy10(今天),在阅读了每一个我设法使其工作后,我可以使用gmail发送电子邮件,它在我的计算机上工作正常,但是当我在我的笔记本电脑上安装应用程序(用于测试)时,它没有发送电子邮件,我的应用程序停止工作,我是否必须在我的笔记本电脑上安装其他东西或如何让它在我安装我的程序的每台计算机上工作,到目前为止我必须在6台不同的计算机上安装它,一些使用Windows XP和一些Windows 7,我希望有一种方法可以使它成为多平台或其他东西.

这是我的代码:

procedure SendIndyMail;
begin

    Form_final.IdSMTP1 .IOHandler := Form_final.IdSSLIOHandlerSocketOpenSSL1;
    Form_final.IdSMTP1.Host:= 'smtp.gmail.com';
    Form_final.IdSMTP1.Password:= 'xxxxxx';
    Form_final.IdSMTP1.Port := 587;
    Form_final.IdSMTP1.UseTLS := utUseExplicitTLS;
    Form_final.IdSMTP1.Username := 'xxxxxx';

    Form_final.IdSSLIOHandlerSocketOpenSSL1.Destination := 'smtp.gmail.com:587';
    Form_final.IdSSLIOHandlerSocketOpenSSL1.Host := 'smtp.gmail.com';
    Form_final.IdSSLIOHandlerSocketOpenSSL1.Port := 587;
    Form_final.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
    Form_final.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
    Form_final.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode := [];
    Form_final.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 0;

    Form_final.IdMessage1.Subject:=conect.Q_selec_info_generalDescripcion.Text+' '+DateToStr(Date);
    Form_final.IdMessage1.Recipients.EMailAddresses:=conect.Q_config_seleccorreo.Text;
    TIdAttachmentFile.Create(Form_final.IdMessage1.MessageParts, conect.Q_config_selecfolder.Text+'\reporte_'+FormatDateTime('dddd d of mmmm yyyy', Date)+' Inventario '+Form_inventario.Edit_id_inventario.Text+'.pdf');

    Form_final.IdSMTP1.Connect;
    Form_final.IdSMTP1.Send(Form_final.IdMessage1);
    Form_final.IdSMTP1.Disconnect;
end;
Run Code Online (Sandbox Code Playgroud)

我在笔记本电脑上运行了proyect,它说:

无法加载SSL库,现在,我做了很多事情让它工作,下载了很多东西并尝试了很多其他的东西,现在我不知道那些库是什么以及如何检索它们,我想知道一种加载方法他们与安装,所以我的安装程序与所需的一切.

提前致谢.

delphi delphi-2010 indy10

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

CreateProcess并获取句柄

我正在使用CreateProcess API将RealVNC与我的exe集成...我只需要为创建的vnc客户端处理句柄,但到目前为止我还没有成功.代码非常简单:

procedure TForm1.VncAuth;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: string;
  title: string;
  ProcHandle: THandle;
begin
  FillChar(StartInfo,SizeOf(TStartupInfo),#0);
  FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
  StartInfo.cb := SizeOf(TStartupInfo);
  CmdLine:= 'vnc.exe';
  UniqueString(CmdLine);
  CreateProcess(NIL ,PChar(CmdLine), NIL, NIL, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS
                                  , NIL, NIL, StartInfo, ProcInfo);
  ProcHandle:= ProcInfo.hProcess;
  GetWindowText(ProcHandle, PChar(title), 255);
  ShowMessage(title);
end;
Run Code Online (Sandbox Code Playgroud)

标题var中没有返回任何内容... GetWindowText函数只是一个测试,看看我是否有正确的句柄,如果是,我应该看到vnc客户端标题是正确的?谢谢!

delphi winapi delphi-2010

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