我需要检测应用程序是否在Win32/64上运行.
更新:人们报告依赖[HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0]键并不是一个好主意.
我想从FTP下载文件.如果文件很小(通常低于1000MB),它可以工作.但是,如果文件很大,我会得到一个EIdReadTimeout.为什么?我应该保持连接活着吗?据我所知,读取数据有自己的通道,所以我不必保持连接存活.
奇怪的是,异常出现在Get的结尾(Get成功下载整个文件之后):FTP.Get(Name,TempGzFile,TRUE,FALSE)!!!!
文档:
TIdFTP.ReadTimeout - 等待FTP协议响应的毫秒数.
TIdFTP.TransferTimeout - FTP客户端数据通道上读取操作的超时值.
默认情况下,ReadTimeout设置为60秒,TransferTimeout设置为10秒.
我使用Delphi XE7(我猜使用Indy 10).我的IdFTP的被动属性设置为false.
我有一个静态 HTML 网站。我想将导航(顶部)菜单存储在外部文件中,因此当我更改菜单时,我想查看所有页面中的更改。
我真的真的需要能够在本地查看网页(普通 Windows 用户无需安装其他软件:Apache、PHP、Wamp、特定浏览器等)。
有两个类似的 StackOverflow 问题使用 PHP、SSI和 ... 框架部分解决了这个问题。没有一个解决方案对我有好处:
我看到的解决方案是将所有菜单放在一个外部 JS 文件中。但是,我发现的所有 JS 示例在 HTML 文件中仍然有菜单的一些“部分”。
那么,是否可以在 JS 文件中包含所有菜单,而在我的 HTML 文件中只调用(并且没有实际的菜单项)该文件?我只有基本的 JS 知识。但足以适应我的需要的通用示例。
间隔设置为1秒的TTimer每1秒发送一条消息.此消息在应用程序的消息循环中处理,这会导致触发OnTimer事件.
如果应用程序繁忙且没有时间处理消息循环,则会跳过OnTimer事件.
我知道TTimer使用内部SetTimer.
我的问题是:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Caption = i;
i++;
MessageDlg(stuff); <----- we "block" application here but form's caption is still updated.
}
Run Code Online (Sandbox Code Playgroud) 我想创建一个透明面板,其中包含一个透明的PNG图像.我想把这个面板放在其他面板的顶部并看到低谷.
我有下面的代码,但它不接受控件.如果我取消注释注释行,当我将控件放在窗体上时,IDE会引发异常.
unit TransparentPanel5;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Vcl.Controls, ExtCtrls;
type
TTransparentPanel5 = class(TCustomTransparentControl)
private
public
constructor Create(AOwner: TComponent); override;
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure Register;
implementation
constructor TTransparentPanel5.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
//ControlStyle := ControlStyle - [csSetCaption]+ [csAcceptsControls];
end;
procedure TTransparentPanel5.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
// Params.ExStyle := Params.ExStyle + WS_EX_Transparent;
// ControlStyle := ControlStyle - [csOpaque] + [csAcceptsControls]
end;
procedure Register;
begin
RegisterComponents('His', [TTransparentPanel5]);
end;
end.
Run Code Online (Sandbox Code Playgroud) 在 Delphi 10.4 Sydney 中,例如,如果您选择一个评论,//xxx然后按下{键盘上的press ,编辑器将自动将所选文本/评论替换为{//xxx}.
预期的行为是只{在屏幕上显示,而不是{//xxx}.
我如何停止这种行为?
我禁用了我所有的 IDE 专家,所以这必须来自 IDE 本身。
我想创建一个从TPanel派生的自定义控件,其中包含一个图像和一堆其他控件.编写代码后,我的程序中有一些奇怪的行为.我意识到一些应该在TDisplay.Resize(override)中初始化的变量从未被初始化,因为从未执行过Resize.
为了"解决它",我在一个表单上放了一个按钮并调用了LoadSample函数,该函数调用ClientHeight,它第一次调用Resize!
constructor TDisplay.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Ready := FALSE;
Parent := Owner as TWinControl;
Width := 200;
Height := 86;
Color := clSilver;
Caption := '';
DoubleBuffered:= TRUE;
InternalDisplay:= TImage32.Create(Self);
with Display DO
begin
Parent := Self;
Bitmap.Width := 1;
Bitmap.Height := 1;
RepaintMode := rmOptimizer;
Align := alClient;
SetupBitmap(TRUE, clBlack32);
Visible := TRUE;
OnMouseDown := DMouseDown;
end;
...
end;
Run Code Online (Sandbox Code Playgroud)
更新:
在我在运行时手动调整表单(控件)之前,InternalDisplay也不会与其父级大小对齐.只有这样它才会按照它应该采取的行动(与alClient保持一致).
更新2:
Resize声明如下:procedure Resize; 覆盖;
更新3:
我从我的construnctor中删除了ClientHeight行并将其移到此处:
procedure TDisplay.LoadSample(VAR Obj: TMySample; CONST bReleaseOnExit: boolean)
begin
ClientHeight; <--------- …Run Code Online (Sandbox Code Playgroud) 我想在Delphi中实现一个非常基本的任务:将字符串保存到磁盘并加载回来.这似乎是微不足道的,但是自从我升级到IOUtils之后我做了这个TWICE就遇到了问题(之前还有一次......这就是为什么我把'辉煌'的决定升级到IOUtils).
我使用这样的东西:
procedure WriteToFile(CONST FileName: string; CONST uString: string; CONST WriteOp: WriteOperation);
begin
if WriteOp= (woOverwrite)
then IOUtils.TFile.WriteAllText (FileName, uString) //overwrite
else IOUtils.TFile.AppendAllText(FileName, uString); //append
end;
Run Code Online (Sandbox Code Playgroud)
简单吧?怎么可能出错?好吧,我最近在IOUtils中遇到了另一个(另一个)错误.所以,TFile是错误的.该缺陷详述这里.
任何人都可以分享一个不是基于IOUtils的替代方案(或仅仅是你的想法/想法)并且它已知可行吗?嗯......上面的代码也为我工作了一段时间......所以,我知道如果难以保证一段代码(无论多小)将真正起作用!
另外,我真的希望让我的WriteToFile过程在可能的情况下将字符串保存到ANSI文件(uString仅包含ANSI字符),否则为Unicode.
然后ReadAFile函数应自动检测编码并正确读回字符串.
我们的想法是,仍有文本编辑器会错误地打开/解释Unicode/UTF文件.因此,只要有可能,请向用户提供一个好的旧ANSI文本文件.
所以:
- 覆盖/追加
- 尽可能保存为ANSI
- 内存效率(当加载文件为2GB时不要吃4GB内存)
- 应该使用任何文本文件(最多2GB,显然)
- 没有IOUtils(太小车有用)
我为什么不能使用Generics.Collections或者Generics.Default甚至只是Generics在拉撒路?
Uses
Generics.Collections;
Run Code Online (Sandbox Code Playgroud)
Uses
System.Generics.Default;
Run Code Online (Sandbox Code Playgroud)
Uses
System.Generics.Collections;
Run Code Online (Sandbox Code Playgroud)
Uses
System.Generics.Default,
System.Generics.Collections;
Run Code Online (Sandbox Code Playgroud)
Uses
SysUtils,
Generics;
Run Code Online (Sandbox Code Playgroud)
找不到项目检查员的uTest使用的Generics.Collections.
找不到项目检查员的uTest使用的Generics.Defaults.
找不到项目检查员的uTest使用的泛型.
我有一个需要批量处理文件的程序。而不是在屏幕上的消息框中显示错误(这将暂停程序的执行),我需要在用户可以在程序执行时看到的日志中显示这些错误消息。
所以我不需要这样的程序执行日志哪个日志库更好?
我现在正在使用从 TRichEdit 派生的东西。基本上,一个带有一些额外方法的丰富编辑,如 AddError(s)、AddWarn(s)、AddVerbose(s) 等。
TRichLog = class(TMyRichEdit)
private
protected
Indent: Integer; { Indent new added lines x spaces }
public
constructor Create(AOwner: TComponent); override;
procedure AddBold (CONST Mesaj: string);
procedure AddMsg (CONST Mesaj: string);
procedure AddMsgLvl (CONST Mesaj: string; MsgType: Integer);
procedure AddColorMsg (CONST Mesaj: string; Culoare: TColor);
procedure AddVerb (CONST Mesaj: string);
procedure AddHint (CONST Mesaj: string);
procedure AddInfo (CONST Mesaj: string);
procedure AddPath (CONST Mesaj: string);
procedure AddWarn (CONST Mesaj: string);
procedure AddError (CONST …Run Code Online (Sandbox Code Playgroud) 我试图破译一段JS代码(显然)我的JS知识是空的.
以下代码中的%运算符是多少?
m[p1%2][q1] = 0.0;
for(j=q1+1; j <= q2; j++)
m[p1%2][j] = m[p1%2][j-1] + 1;
Run Code Online (Sandbox Code Playgroud) delphi ×9
delphi-xe7 ×3
javascript ×2
32bit-64bit ×1
css ×1
ftp ×1
generics ×1
html ×1
indy ×1
indy10 ×1
lazarus ×1
logging ×1
menu ×1
modulo ×1
rad-studio ×1
tobjectlist ×1
ttimer ×1
unicode ×1
web ×1
winapi ×1
windows ×1