我有一个传输二进制数据的设备.要解释我定义struct的数据与数据格式匹配.该struct有一个StuctLayoutAttribute带LayoutKind.Sequential.这按预期工作,例如:
[StructLayout(LayoutKind.Sequential)]
struct DemoPlain
{
public int x;
public int y;
}
Marshal.OffsetOf<DemoPlain>("x"); // yields 0, as expected
Marshal.OffsetOf<DemoPlain>("y"); // yields 4, as expected
Marshal.SizeOf<DemoPlain>(); // yields 8, as expected
Run Code Online (Sandbox Code Playgroud)
现在我希望处理一个类似于其他结构的结构,所以我尝试了实现接口的结构:
interface IDemo
{
int Product();
}
[StructLayout(LayoutKind.Sequential)]
struct DemoWithInterface: IDemo
{
public int x;
public int y;
public int Product() => x * y;
}
Marshal.OffsetOf<DemoWithInterface>("x").Dump(); // yields 0
Marshal.OffsetOf<DemoWithInterface>("y").Dump(); // yields 4
Marshal.SizeOf<DemoWithInterface>().Dump(); // yields 8
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,偏移和大小DemoWithInterface保持相同DemoPlain …
我正在创建一个图像提取工具,我能够用完整路径检索图像..
例如:
我需要从路径中剪切文件名(rss)...
我搜索帖子并尝试以下
//1.
//string str = s.Split('/', '.')[1];
//2.
string s1;
// string fileName = "abc.123.txt";
int fileExtPos = s.LastIndexOf(".");
if (fileExtPos >= 0)
s1 = s.Substring(0, fileExtPos);
//3.
//var filenames = String.Join(
// ", ",
// Directory.GetFiles(@"c:\", "*.txt")
// .Select(filename =>
//4.
// Path.GetFileNameWithoutExtension(filename)));
Run Code Online (Sandbox Code Playgroud)
似乎没有工作
我想要“图像”和“png”之间的名称..确切的代码是什么?
任何建议都会有所帮助
我想从我的程序中将一些数据发送到通过执行的进程uiop:run-program.
以下作品:
(require :asdf)
(asdf:load-system :uiop)
(uiop:with-temporary-file (:stream dot-program-stream
:pathname dot-program-file)
(format dot-program-stream "digraph g { n1 -> n2; }")
(finish-output dot-program-stream)
:close-stream
(uiop:with-temporary-file (:pathname png-data)
(uiop:run-program '("/usr/bin/dot" "-Tpng") :input dot-program-file
:output png-data)
(uiop:launch-program '("/usr/bin/display") :input png-data)))
Run Code Online (Sandbox Code Playgroud)
这似乎相当复杂.
一个更简单的版本,我只使用了一个流没有,finish-output并且没有使用:close-stream标签导致产生dot一个空的0字节文件.
如何执行一个进程并将我的lisp程序生成的数据作为标准输入传递?
如何让swank忘记以前评估的所有定义?
我希望它取消定义通过评估定义的所有宏,函数和变量(例如,b评估缓冲区).让它恢复到我重新启动电脑并重新启动swank服务器时的状态.
我试过了:
所述slimv清除-REPL( ,-)命令:
这只会清除屏幕(缓冲区).
CL-USER> (swank:restart-server)(来自REPL缓冲区):
服务器重新启动但仍记得我的旧defun定义和其他定义.
CL-USER> (slime-restart-inferior-lisp)和`(slimv-restart-inferior-lisp)
两者都未定义.
运行从[/ edit] HttpClient示例复制的Cpp-netlib(版本0.11-rc1)[编辑(添加)] 代码时,无法完成.
我认为是因为连接处于打开状态.1.我的假设是否正确?2.是否必须手动关闭连接?3.如果是,如何访问连接?
我正在使用Visual Studio 2015在C#中编写PowerShell Cmdlet.调试它工作正常,但在关闭PowerShell窗口之前我无法重建DLL.DLL似乎正在使用中,因此无法删除(不在命令行上,也不能使用资源管理器).我试过删除模块.这成功删除了我的Cmdlet,但我仍然无法删除/覆盖它.
关闭PowerShell,重建DLL然后重新打开新的PowerShell,cd到DLL路径(通常是深度嵌套),再次重新导入它,启动命令调试等等,这对于每个调试会话都是非常不方便的. ..
卸载DLL有没有更好的解决方案?
我的程序创建虚拟数据.这些虚拟数据的一部分是符号形式的键:( fixnum值以其罗马数字作为符号作为键).程序将这些虚拟键值对存储在我正在开发的数据结构中.(lambda (i) (make-symbol(format nil"~@r"i)))
我尝试使用REPL中的这些符号来测试按键检索值.然而:
(equal (make-symbol "IX") (make-symbol "IX"))
Run Code Online (Sandbox Code Playgroud)
零
(equal (make-symbol "IX") 'IX))
Run Code Online (Sandbox Code Playgroud)
零
有没有办法输入先前make-symbol在REPL中创建的符号,以便两者都是equal?
c# ×3
common-lisp ×3
c++ ×1
cpp-netlib ×1
graphviz ×1
inheritance ×1
path ×1
powershell ×1
sbcl ×1
slimv ×1
swank ×1
vim ×1
vtable ×1