我正在尝试创建一个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.帮助很大!谢谢,杰夫
我在我的程序中使用DateTime值.在使用它们时,我的丹麦Windows 7上的一切正常 - 但是,当我将我的应用程序发送给拥有美国PC(具有不同日期/时间格式)的人时,它会爆炸.我得到那些xx-xx-xx不是一个有效的日期和时间值"(或类似的东西).
我尝试在我的程序启动时设置LongDateFormat和DateSeparator值,但是那也不起作用?
我该怎么办,以便我的应用程序具有相同的日期/时间格式,无论它在哪里运行?
编辑:这是我创建DateTime值的方法:
// David's Suggestion:
dtLastOnline := dedtLastOnline.Date + tpLastOnline.Time;
Run Code Online (Sandbox Code Playgroud)
谢谢
我的程序正在执行一项耗时的任务,我想在应用程序窗口中间显示一个TImage,但它不会保持在最顶层 - 我的VST始终位于顶部.但是,当我使用TPanel时,它会保持在顶部?如何让我的TImage做到这一点?
事实上,适用于所有控件的解决方案将是出色的:)
谢谢!
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)设置为什么?我猜它与源代码管理中的文本数量有什么不同?
在处理相当大的文本时,您建议将其设置为什么?
有没有办法做同样的事情(从句柄获取文本)而不必设置大小等?
尝试使用以下代码来检查 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。:)