如何在Windows上的D语言程序中使用SQLite3库?
我在Ubuntu上发现了一个类似的问题,但在我的情况下它没有用.
import std.stdio, std.string, etc.c.sqlite3;
void main () {
sqlite3* db;
auto ret = sqlite3_open (toStringz("mydb.s3db"), &db);
writeln (ret);
}
Run Code Online (Sandbox Code Playgroud)
我假设,sqlite3.d是真正的SQLite3库的某种标头.我有一个sqlite3.dll,但我不知道如何将它与我的程序链接.pragma仅适用于lib formate(如pragma(lib, "sqlite3")).
也许我应该使用SQLite源代码,但是如何将它与D代码一起编译呢?或者找到将dll转换为lib的方法更好?
在D中解决这些问题的一般方法是什么?
我想要检查,如果类型是byte/short/int/long或它是ubyte/ushort/uint/ulong.第一个想法是使用建筑is(T1:T2),但是is(ulong:long)==is(long:ulong)==true,它不是那样的.
现在我正在使用类似的东西is(T:long) && (cast(T)(-1)<cast(T)(1)),但这段代码对我来说似乎很难看.
那么true只有当类型是无符号时才会返回更优雅的逻辑语句吗?
我知道,在dmd中可以这样做:
> cd ..\bin
> dmd ..\src\example.d
Run Code Online (Sandbox Code Playgroud)
或者像这样:
> dmd example.d -offilename ..\bin\example.exe
Run Code Online (Sandbox Code Playgroud)
但是在rdmd中这种方法不起作用.文件"example.exe"始终与"example.d"出现在同一文件夹中.
我试着这样做
> rdmd --build-only example.d ..\bin\example.exe
Run Code Online (Sandbox Code Playgroud)
, 这个
> rdmd --build-only example.d -offilename ..\bin\example.exe
Run Code Online (Sandbox Code Playgroud)
还有这个
> cd ..\bin && rdmd --build-only ..\src\example.d
Run Code Online (Sandbox Code Playgroud)
具有相同的否定结果.
插入和修改大量数据可能需要它.
说实话,我在输入问题时已经知道了答案.但是我找到它真的很难,所以我想,这个答案对其他人来说会有所帮助.
但如果你知道更好的方法,你可以自由回答.
来源:http://www.nxtbook.com/nxtbooks/cmp/msdnmag0407/index.php?startid = 27
__PRE__
来源:http://www.nxtbook.com/nxtbooks/cmp/msdnmag0407/index.php?startid = 28
__PRE__
我正在尝试使用以下代码动态更改Windows控制台中的输出:
for(int i = 0;; i++,Thread.sleep(dur!("msecs")(200)))
write("\r",i);
Run Code Online (Sandbox Code Playgroud)
但你必须等待很长时间才能看到屏幕上的内容.即使改为1毫秒,持续时间也足以将数字重写减慢到2-3秒.
输出会像这样(某处)变化:
23343
30948332
42048332
Run Code Online (Sandbox Code Playgroud)
看起来write()函数工作可以在进程中间中断.
如果我们write()改为writeln(),sleep()函数将正常工作.
为什么会这样呢?