小编WeG*_*ars的帖子

如何检测32/64平台?

我需要检测应用程序是否在Win32/64上运行.

更新:人们报告依赖[HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0]键并不是一个好主意.

delphi 32bit-64bit delphi-xe7

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

消息"读取超时"[Indy-IdFTP]的异常类EIdReadTimeout

我想从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.

delphi ftp indy indy10

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

如何从外部文件加载导航菜单?(没有 Wamp,所有代码都必须是“浏览器端”)

我有一个静态 HTML 网站。我想将导航(顶部)菜单存储在外部文件中,因此当我更改菜单时,我想查看所有页面中的更改。
我真的真的需要能够在本地查看网页(普通 Windows 用户无需安装其他软件:Apache、PHP、Wamp、特定浏览器等)。

有两个类似的 StackOverflow 问题使用 PHP、SSI和 ... 框架部分解决了这个问题。没有一个解决方案对我有好处:

  • 框架显然不在讨论范围内(从 SEO POV 来看很糟糕,在 HTML5 中也已过时)。
  • PHP 和 SSI 仅在站点上传到服务器后才能工作,因此在本地无法工作。

我看到的解决方案是将所有菜单放在一个外部 JS 文件中。但是,我发现的所有 JS 示例在 HTML 文件中仍然有菜单的一些“部分”

那么,是否可以在 JS 文件中包含所有菜单,而在我的 HTML 文件中只调用(并且没有实际的菜单项)该文件?我只有基本的 JS 知识。但足以适应我的需要的通用示例。

html javascript css menu web

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

TTimer实际上如何在内部运作?

间隔设置为1秒的TTimer每1秒发送一条消息.此消息在应用程序的消息循环中处理,这会导致触发OnTimer事件.
如果应用程序繁忙且没有时间处理消息循环,则会跳过OnTimer事件.

我知道TTimer使用内部SetTimer.

我的问题是:

  1. TTimer是否使用内部/单独的线程(通过SetTimer)?
  2. 为什么如果模态MessageDlg"阻塞"表单,那么持有计时器(及其OnTimer偶数)的表单仍可以执行操作?(见下面的代码)
  3. 文件称SetTimer要求Win2000最低限度.如何在Win98中实现TTimer?

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)

windows delphi winapi ttimer rad-studio

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

如何使用TCustomTransparentControl创建透明控件?

我想创建一个透明面板,其中包含一个透明的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

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

德尔福。如何阻止编辑器自动插入评论?

在 Delphi 10.4 Sydney 中,例如,如果您选择一个评论,//xxx然后按下{键盘上的press ,编辑器将自动将所选文本/评论替换为{//xxx}.

预期的行为是只{在屏幕上显示,而不是{//xxx}.

我如何停止这种行为?

我禁用了我所有的 IDE 专家,所以这必须来自 IDE 本身。

delphi delphi-10.4-sydney

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

调整大小不会执行,直到我手动调用ClientHeigh或直到我手动调整大小

我想创建一个从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

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

如何将经典的Delphi字符串保存到磁盘(并将其读回)?

我想在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(太小车有用)

delphi unicode delphi-xe7

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

Delphi Lazarus找不到Uses Generics

我为什么不能使用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使用的泛型.

delphi generics tobjectlist lazarus

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

设计日志系统

我有一个需要批量处理文件的程序。而不是在屏幕上的消息框中显示错误(这将暂停程序的执行),我需要在用户可以在程序执行时看到的日志中显示这些错误消息。

所以我不需要这样的程序执行日志哪个日志库更好?

我现在正在使用从 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)

delphi logging delphi-xe7

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

JavaScript中的%运算符是什么?

我试图破译一段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)

javascript modulo

-3
推荐指数
1
解决办法
128
查看次数