我正在使用下面的变体记录.变量实例是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)
SET
TEST.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