小编Jef*_*eff的帖子

PHP函数到Delphi函数

我正在尝试创建一个PHP脚本,以及一个与它"交谈"的Delphi程序.为了保证安全,我想加密来自双方的传出文本,因此它在两端使用相同的加密功能.

这是我为PHP找到的功能:

function convert($str,$ky=''){
  if($ky=='')return $str;
  $ky=str_replace(chr(32),'',$ky);
  if(strlen($ky)<8)exit('key error');
  $kl=strlen($ky)<32?strlen($ky):32;
  $k=array();
  for($i=0;$i<$kl;$i++){
    $k[$i]=ord($ky{$i})&0x1F;
  }
  $j=0;
  for($i=0;$i<strlen($str);$i++){
    $e=ord($str{$i});
    $str{$i}=$e&0xE0?chr($e^$k[$j]):chr($e);
    $j++;
    $j=$j==$kl?0:$j;
  }
  return $str;
} 
Run Code Online (Sandbox Code Playgroud)

我似乎无法将其转换为Delphi.帮助很大!谢谢,杰夫

php delphi encryption

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

美国和欧盟PC的日期/时间不同 - 德尔福不喜欢这样

我在我的程序中使用DateTime值.在使用它们时,我的丹麦Windows 7上的一切正常 - 但是,当我将我的应用程序发送给拥有美国PC(具有不同日期/时间格式)的人时,它会爆炸.我得到那些xx-xx-xx不是一个有效的日期和时间值"(或类似的东西).

我尝试在我的程序启动时设置LongDateFormat和DateSeparator值,但是那也不起作用?

我该怎么办,以便我的应用程序具有相同的日期/时间格式,无论它在哪里运行?

编辑:这是我创建DateTime值的方法:

// David's Suggestion:
dtLastOnline := dedtLastOnline.Date + tpLastOnline.Time;
Run Code Online (Sandbox Code Playgroud)

谢谢

  • 杰夫

delphi datetime

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

控制在顶部,像TPanel一样可以吗?

我的程序正在执行一项耗时的任务,我想在应用程序窗口中间显示一个TImage,但它不会保持在最顶层 - 我的VST始终位于顶部.但是,当我使用TPanel时,它会保持在顶部?如何让我的TImage做到这一点?

事实上,适用于所有控件的解决方案将是出色的:)

谢谢!

delphi vcl timage tpanel stayontop

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

使用WM_GETTEXT - 设置大小的内容是什么?

Var
 PText : array[0..512] of Char;
 Handle, Child : HWND;
begin
 FillChar(PText,512,0);
 Handle := FindWindow('Notepad',nil);
 Child := FindWindowEx(Handle,0,'Edit',nil);

 Caption := IntToStr(Handle)+' - '+IntToStr(Child);

 SendMessage(Child,WM_GETTEXT,512,Integer(@PText[0]));

 ShowMessage(PText);

end;
Run Code Online (Sandbox Code Playgroud)

我只是想知道 - 在使用WM_GETTEXT时,我通常应该将大小(目前为512)设置为什么?我猜它与源代码管理中的文本数量有什么不同?

在处理相当大的文本时,您建议将其设置为什么?

有没有办法做同样的事情(从句柄获取文本)而不必设置大小等?

arrays delphi size window-handles

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

在 vista 之前使用 DwmIsCompositionEnabled (JwaDwmApi) 会导致错误

尝试使用以下代码来检查 Windows Aero 是否已启用:

function AeroEnabled: boolean;
var
  enabled: bool;
begin
 // Function from the JwaDwmapi unit (JEDI Windows Api Library)
 DwmIsCompositionEnabled(enabled);
 Result := enabled;

end;

 ...

 if (CheckWin32Version(5,4)) and (AeroEnabled) then
 CampaignTabs.ColorBackground   := clBlack
 else begin
 GlassFrame.Enabled             := False;
 CampaignTabs.ColorBackground   := clWhite;
 end;
Run Code Online (Sandbox Code Playgroud)

但是,在 Vista 之前的计算机上执行此操作会导致应用程序崩溃,因为缺少 DWMApi.dll。我也尝试过这段代码,但是它连续生成 2 个 AV。我怎样才能做到这一点 ?我正在使用 Delphi 2010。:)

delphi aero dwm jedi-code-library

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