我正在使用下面的变体记录.变量实例是Kro_Combi.SizeOf(Kro_Combi)报告7812个字节.SizeOf(Kro_Combi.data)报告7810个字节.构成变体记录的"非直接模式"情况的所有其他数据结构的SizeOf的总和也增加到7810字节.
为什么有两个字节的区别?我想让两个变体完全相互叠加.
TKro_Combi = record
case directmode:boolean of
true : (
data : array[0..7809] of byte
);
false : (
Combi_Name : array[0..23] of char; //24
Gap1 : array[0..63] of byte; // 24-87 (64)
Ins_Effect_Group : array[1..12] of TIns_Effect_Params; //74 each, (Ins_Effect_Data=9 bytes) 74*12 = 888
Mast_Effect_Params : array[0..229] of byte; // 976-1205 : 230 bytes
Vect_Aud__Drum_Params : array[0..97] of byte; //1206-1303 : 98 bytes
Karma_Common : array[0..509] of byte; //1304-1813 : 510 bytes
Karma_Module : array[0..3] of TKarma_Module; //1814-2557 …Run Code Online (Sandbox Code Playgroud) 本声明(在Delphi 7中)
writeln(logfile,format('%16.16d ',[FileInfo.size])+full_name);
Run Code Online (Sandbox Code Playgroud)
得到这个输出
0000000021239384 C:\DATA\DELPHI\sxf_archive10-13.zip
Run Code Online (Sandbox Code Playgroud)
这个说法
writeln(logfile,format('%17.17d ',[FileInfo.size])+full_name);
Run Code Online (Sandbox Code Playgroud)
得到这个输出
21239384 C:\DATA\DELPHI\sxf_archive10-13.zip
Run Code Online (Sandbox Code Playgroud)
当精度说明符大于16时,带前导零的填充变为前导空格.帮助说"如果格式字符串包含精度说明符,则表示结果字符串必须至少包含指定的位数;如果值数字较少,结果字符串左边用零填充."
是否有另一种方法来格式化带有前导零的20个字符的整数?
我有一个设置环境变量的 Windows 控制台可执行文件(称为 SetEnvX.exe)。它SetEnvironmentVariable在内部调用Windows API。那个调用成功了。
在执行 SetEnvX.exe 的父 CMD 实例中,如果SET在 SetEnvX.exe 之后运行,它创建的环境变量不存在。
如果我用这些行创建一个 TEST.CMD
SetEnvX.exe
set
Run Code Online (Sandbox Code Playgroud)
SETTEST.CMD 中命令的输出也没有显示由 SetEnvX.exe 创建的环境变量。
SetEnvX.exe 等程序如何创建存在于交互式 CMD shell 或批处理文件范围内的环境变量?换句话说,我不想把环境变量放到全局的、持久化的环境中。
我在 NodeMCU 环境中使用 Lua。我看到了这个问题中提出的空白修剪方法。
答案建议采用以下形式:
str = string.gsub(str, "%s+", "")
Run Code Online (Sandbox Code Playgroud)
我发现它没有任何影响。这是交互式命令的输出(使用 LuaLoader)。
> print("|",part1,"|")
| 172.16.0.19 |
> part1a = string.gsub(part1, "%s+", "")
> print("|",part1a,"|")
| 172.16.0.19 |
>
Run Code Online (Sandbox Code Playgroud)
如果我检查十六进制字符串,我会看到有一些选项卡。显然 %s (空白模式)不认为制表符是空白。是否存在导致 %s 匹配选项卡 (0x09) 的设置?
我有以下一点Delphi 7代码将TDateTime值增加一个小时.由于某种原因,它不起作用.
StatusMemo.Lines.Add('prior '+DateTimeToStr(dtval));
IncHour(dtval,1); // add an hour for DST
StatusMemo.Lines.Add('after '+DateTimeToStr(dtval));
Run Code Online (Sandbox Code Playgroud)
代码运行后StatusMemo的内容:
prior 6/24/2009 5:35:40 AM
after 6/24/2009 5:35:40 AM
Run Code Online (Sandbox Code Playgroud)
它的行为就像IncHour不起作用.我尝试使用IncMinute(dtval,60),得到了相同的结果.我错过了什么?
我正在使用Delphi 7.我正在尝试在非VCL单元中添加一个调用"application.processmessages"的过程.我收到错误"未声明的标识符:应用程序".
如何从非vcl单元引用TApplication类?在文档中的哪个位置描述了这个?由于广泛使用"应用"一词,很难找到.
delphi ×4
delphi-7 ×2
batch-file ×1
cmd ×1
datetime ×1
formatting ×1
lua ×1
record ×1
string ×1
windows ×1