有没有一种方法可以使Application.MessageBox()Win11 中的对话框外观现代化?也许通过创建清单文件或其他东西来使经典桌面应用程序看起来更新?
我已经从 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 组件对其进行压缩。但当它到达服务器时,它会包含消息中每个字母的空格:
Run Code Online (Sandbox Code Playgroud)< h t m l > u s e r < / h t m l >
关于如何解决这个问题有什么想法吗?
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
我的函数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 ×4
delphi-7 ×1
enums ×1
indy ×1
messagebox ×1
tstream ×1
tstringlist ×1
typeinfo ×1
windows-11 ×1
xml ×1