C#中是否有标准委托,我只能用于调用.我是否必须为每个必须调用的新函数签名声明一个新委托?
现在我只有那些签名.但是,如果我可以使用本机委托来获得任何复杂的返回和参数,那将是很好的.
public bool isDone()
{...}
public void doStuff()
{...}
public void doMoreStuff(object o)
{...}
public void doEvenMoreStuff(string str)
{...}
// I'm declaring my "custom" delegates like this:
private delegate bool delegate_bool();
private delegate void delegate_void(string line);
// and calling via
if (InvokeRequired)
Invoke(new delegate_void(doStuff), new object[] { });
else
{...}
Run Code Online (Sandbox Code Playgroud)
if (InvokeRequired)
return Invoke(new Func<bool>(isDone), new object[] { });
else
{...}
if (InvokeRequired)
BeginInvoke(new Action(doStuff), new object[] { });
else
{...}
if …
Run Code Online (Sandbox Code Playgroud) 我有2个表,每个表都有一列MNR
.我想和他们一起加入这个专栏.
以下两个SQL语句失败.最后一个显示我的日期格式正在运行(更改了会话格式).DB是Oracle.
有人可以告诉我我做错了什么吗?我怎么称呼这个加入?
// fails
select a.CREATEDATE, a.BELEGNRRECH, a.MNR, a.UTNR, a.KTXT, b.ANR
from INFOR.RELFBR as a, INFOR.RELXDB as b
where (a.SAINT = '90') and (a.MNR = b.MNR) and (b.SAINT = '10')
and (a.CREATEDATE >= '01.01.2014 00:00:00')
order by a.CREATEDATE
// fails as well
select a.CREATEDATE, a.BELEGNRRECH, a.MNR, a.UTNR, a.KTXT, b.ANR
from INFOR.RELFBR as a, INFOR.RELXDB as b
where (a.SAINT = '90') and (a.MNR = b.MNR) and (b.SAINT = '10')
order by a.CREATEDATE
// all fine
select CREATEDATE, …
Run Code Online (Sandbox Code Playgroud) 我详细阐述了这段小代码,开始了我的宝贝步骤.连接很好.简单的OdbcDataReader
选择工作正常.但我无法测试任何PL/SQL函数.它是如何工作的 ?我是否需要额外安装或者我做错了什么?
using System;
using System.Data.Odbc;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string connectionString = "dsn=TEST;uid=read;pwd=___";
OdbcConnection con = new OdbcConnection(connectionString);
con.Open();
try
{
OdbcCommand cmd = new OdbcCommand("begin end;", con);
int result = cmd.ExecuteNonQuery();
cmd.Dispose();
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
con.Close();
con.Dispose();
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
PL/SQL程序显然是:
begin
end;
Run Code Online (Sandbox Code Playgroud)
错误消息如下:
System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] [Oracle][ODBC][Ora]OR
A-06550: line 1, column 7:
PLS-00103: Encountered the symbol "END" when expecting one of …
Run Code Online (Sandbox Code Playgroud) 我必须安全地释放一个数组:char** a;
它就像一个字符串列表.我知道char*
我有多少人.但我无法释放所有内存.有没有像我可以用来释放20个字节的功能?我试过了:
for (int i = 0; i < length; i++)
if (a[i] != null)
free(a[i]); // some of a[i] ARE null, non-null have different sizes
free(a); // crashes here
Run Code Online (Sandbox Code Playgroud)
但我通过asm
调试得到运行时错误.a中的所有东西都已经过了.对于一个I malloced 5个字符串(每个指针4个字节) - > 20个字节.我如何解放整个char**
?
如何覆盖字符串?例:
string text = "abcdefghijklmnopqrstuvwxyz".OverwriteWith("hello world", 3);
// text == "abchello worldopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)
当然这种方法不存在.但