小编Ami*_*ack的帖子

使 Windows 11 的 Application.Messagebox 外观现代化

有没有一种方法可以使Application.MessageBox()Win11 中的对话框外观现代化?也许通过创建清单文件或其他东西来使经典桌面应用程序看起来更新?

delphi messagebox delphi-7 windows-11

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

从 Delphi 6 上的 Indy 9 升级到 Delphi 11 上的 Indy 10 后获取空间

我已经从 Delphi 6 迁移到 Delphi 11(64 位版本),并且我正在使用 Indy 和 ZLib 组件。我已经从 Indy 9 迁移到 Indy 10,使用组件发布 API,在此之前我通过以下方式将字符串写入流:

var 
  XML: String; 
  stream: TStream;
begin
  ...
  stream.WriteBuffer(XML[1], Length(XML) * 2);
Run Code Online (Sandbox Code Playgroud)

然后使用 ZLib 组件对其进行压缩。但当它到达服务器时,它会包含消息中每个字母的空格:

< h t m l > u s e r < / h t m l >
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题有什么想法吗?

xml delphi indy tstream delphi-11-alexandria

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

如何在 Delphi 中的多行字符串中使用变量?

Delphi 12 引入了多行字符串,我试图弄清楚它是如何工作的,来自 JavaScript 背景。在那里我可以直接在多行字符串中包含变量,例如:

const myName = 'Martin';
const myString = `Hi ${myName},
Say hello to 
multi-line
strings!`;
Run Code Online (Sandbox Code Playgroud)

这将替换${myName}为变量的内容。在 Delphi 中如何使用新的'''多行字符串来实现这一点?

delphi string-interpolation multilinestring delphi-12-athens

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

以 TStringList 形式返回所有枚举项

我的函数EnumToStringList()本身可以编译,但我无法使用应用程序中的任何枚举类型调用它:

[dcc64 错误] Unit_test.pas(119): E2029 '(' 预期但 ')' 找到

我的方法有什么问题吗?

function EnumToStringList(const TypeInfo: pTypeInfo): TStringlist;
var  i : Integer;
begin
  Result := TStringList.Create;
  for i := GetTypeData(TypeInfo)^.MinValue to GetTypeData(TypeInfo)^.MaxValue do
    begin
      result.add (GetEnumName(TypeInfo, i));
    end;
end;
        
function EnumToString(const TypeInfo: pTypeInfo; Ix: Integer): string;
begin
  result := GetEnumName(TypeInfo, Ix);
end;
    
type
  TProjectTypes = (low,hot,skip,pause,others);

// test code:
MyProjectStrings := EnumToStringList (TProjectTypes);
Run Code Online (Sandbox Code Playgroud)

delphi enums tstringlist typeinfo

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