我想知道如何将C struct转换为Delphi记录?
以下代码在C中.我想转换为Delphi.
typedef struct
{
Uint16 value1[32];
Uint16 value2[22];
Uint16 value3[8];
}MY_STRUCT_1;
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在探索 (.Res) 资源文件,并在 delphi.about.com 站点上找到了一个有用的教程。
教程链接:http : //delphi.about.com/od/objectpascalide/l/aa113099a.htm
下载测试项目:http : //delphi.about.com/library/aboutres.zip
我发现 Windows 资源管理器中的应用程序图标不同。申请表上的图标正确显示(参见图 2)。Windows 任务栏上的图标正确显示(参见图 3)。
但是当我浏览它时,Windows 资源管理器中的图标是错误的(请参阅图 1)。它不是来自 Res 文件的 MAINICON。
知道它有什么问题吗?我需要配置什么才能使用 .EXE 文件获得正确的应用程序图标?
图片编号 (1)

图片编号 (2)

图片编号 (3)

提前致谢
我遇到逻辑问题.我不知道如何将记录复制到Delphi中的另一条记录.
TypeA = record
value1 : word;
value2 : word;
value3 : word;
end;
TypeB = record
b1 : byte;
b2 : byte;
end;
Run Code Online (Sandbox Code Playgroud)
我有两个记录TypeA和TypeB.例如,我发现TypeA记录中的数据属于TypeB记录.注意:TypeA具有更长的数据长度.
问题:如何复制TypeA内存并将其放在TypeB记录中?
CopyMemory(@TypeA, @TypeB, Length(TypeB))
Run Code Online (Sandbox Code Playgroud)
当我尝试CopyMemory并得到一个错误(无法比较的类型).
PS:我不想像下面那样复制或分配它.
TypeB.b1:= TypeA.value1 && $ FF;
TypeA和TypeB只是示例记录.大多数情况下,记录TypeA和TypeB可能包含多个记录,并且分配表单TypeA并分配给TypeB记录将更加困难.
提前致谢
----加法问题:
有没有办法将Delphi记录复制到Byte数组以及如何?如果有,
这个逻辑会起作用吗?
我在Delphi中使用Indy的IdTCPclient.connected函数遇到问题。我正在使用Indy10和Delphi2010环境。我的问题是每次我检查与IdTCPclient.connected的TCP连接时,它都会引发这些错误EidSocketError,EidReadTimeOut的异常。有什么办法可以断开并重新连接?(如重置连接)。
注意:我设置了TCPClient.ReTimeout:= 30000;
重置连接的实现代码如下。
if IdTCPclient.connected then
begin
IdTCPclient.IOHandler.InputBuffer.Clear;
IdTCPclient.Disconnect;
end;
sleep(1000);
try
IdTCPclient.connect;
except
on E: Exception do
MessageDlg('Connecting Error: '+E.Message, mtError, [mbOk], 0);
end;
Run Code Online (Sandbox Code Playgroud)
但有一点,我遇到了异常,它根本无法连接。我不确定自己在做什么错。
我应该这样做吗?
如果是这样,有人可以为我提供一种正确执行方法的方法吗?
另外,在我的编码中还有另一个功能可以重新连接TCP。这也给了我例外。我向TCP发送消息之前先检查连接。如果没有连接,我将重新连接五次。
result := IdTCPclient.connected
if not result then
begin
for k:=0 to 4 do
beign
sleep(1000);
try
TCPclient.connect;
except
on E: Exception do
MessageDlg('Connecting Error: '+E.Message, mtError, [mbOk], 0);
end
result := TCPclient.connected;
if result then break;
end; …Run Code Online (Sandbox Code Playgroud) 我正在研究程序与一些记录的数据文件之间的接口。我的程序将加载数据文件并将其存储到数据库中。在记录的数据文件中,其格式结构包含其他程序(生成该文件)的不同版本号
处理版本号的最佳方法是什么?
Major_Minor_Build_Revision
12.03.04.142
我将在程序中使用它稍后加载指定版本(例如2.03.04.142)的所有数据
程式设计
在Delphi中,我们可以创建一条记录并处理版本号:
TVersion = Record
Major : integer;
Minor : integer;
Build : integer;
Revision : integer;
end;
Run Code Online (Sandbox Code Playgroud)
还是将其转换为Integer并将其存储会更好?如果是进行转换的最佳方法是什么?
数据库
在SQL数据库中,同样的事情,我们可以为[Major],[Minor],[Build],[Revision]创建每列作为整数来存储。
或者,如果使用版本转换,则只能在SQL [Version]中使用一列。
哪一种是最佳使用方式?还是有更好的方法来处理它?
提前致谢。
delphi ×5
record ×2
c ×1
copy ×1
delphi-2010 ×1
icons ×1
indy ×1
indy10 ×1
memory ×1
resources ×1
sql ×1
sql-server ×1
struct ×1
tcpclient ×1
versioning ×1