【问题标题】:clips 6.3 CLIPSDLL.h How to modify a fact from c?剪辑 6.3 CLIPSDLL.h 如何从 c 中修改一个事实?
【发布时间】:2018-07-04 01:42:00
【问题描述】:

我使用剪辑 6.3。 (CLIPSDynamic32) 共享 dll

#include "CLIPSDLL.h"
#include "cstrcpsr.h"
#include <locale.h>
#include <stdio.h>
#include "clips.h"
Environment *theEnv;

void main(int argc, char** argv)
{
    int ret;
    theEnv = __CreateEnvironment();
    int status = __Load(theEnv, "H:\\ClipsIntegrationExample\\clips1.clp");

    __Reset(theEnv);
    __AssertString(theEnv, "(templ1(name1 yes))");
    __Run(theEnv,-1);


    __DestroyEnvironment(theEnv);
    getch();
}

这是剪辑文件 clp

(deftemplate MAIN::templ1
    (slot name1))

如何从 c 中修改事实?

【问题讨论】:

    标签: clips


    【解决方案1】:

    检索由 AssertString 创建的事实的事实索引,然后构造一个字符串,该字符串可以传递给 Eval 函数以修改事实。例如:

    "(do-for-fact ((?f templ1)) (= (fact-index ?f) 2) (modify ?f (name1 xyz)))"
    

    另见When embedding CLIPS into C Language, what function can used to modify the fact from C program

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 2013-03-31
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多