首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清除结构化文本中的整个结构的最佳方法是什么

清除结构化文本中的整个结构的最佳方法是什么
EN

Stack Overflow用户
提问于 2020-02-20 11:33:21
回答 2查看 1.1K关注 0票数 0

这就是我现在所拥有的

代码语言:javascript
复制
TYPE MyType: STRUCT
    name: STRING[20];
    input: INT;
    output: INT;
    END_STRUCT
END_TYPE
代码语言:javascript
复制
PROGRAM PLC_PRG:
    VAR
        struct:  MyType;
        struct_NULL:  MyType;
        error: BOOL;
    END_VAR

    IF error THEN
        struct := struct_NULL;
    END_IF
END_PROGRAM

是否有其他方法可以将结构设为空,而无需清除和使用struct_NULL

EN

回答 2

Stack Overflow用户

发布于 2020-02-24 16:59:20

只需使用SysMemSet (CODESYS库SysMem)、MemSet (CODESYS库MemoryUtils)或MEMSET (TwinCAT 3库Tc2_System)函数将所有数据设置为0即可。

代码语言:javascript
复制
SysMemSet(
    pDest       := ADR(TestStruct), 
    udiValue    := 0, 
    udiCount    := SIZEOF(TestStruct)
);

您可以为它编写一个简单的辅助函数:)

代码语言:javascript
复制
FUNCTION F_Clear : BOOL
VAR_INPUT
    Target : ANY;
END_VAR
VAR
END_VAR


SysMemSet(
    pDest       := Target.pValue, 
    udiValue    := 0, 
    udiCount    := Target.diSize
);

用法,适用于各种变量!

代码语言:javascript
复制
F_Clear(TestStruct);
票数 2
EN

Stack Overflow用户

发布于 2020-02-22 17:11:36

是的,这是可行的,但你能保证没有人会在代码中写下这样的代码吗:

代码语言:javascript
复制
struct_NULL.input := 7;

所以我更喜欢写一个简短的函数,把所有的值都设为默认值:

代码语言:javascript
复制
FUNCTION F_setToDefault_MyStruct : MyStruct
VAR
    DefaultStruct   : MyStruct;
END_VAR

F_setToDefault_MyStruct := DefaultStruct;

因此,在程序中,您可以调用:

代码语言:javascript
复制
//set struct to default values
TestStruct:=F_setToDefault_MyStruct();

我知道,有很多代码,但是没有人能改变struct_NULL中的初始值,而且我认为它更容易阅读和理解

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60312509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档