C#的静态变量调用用问题

Dephi调用C#编写的WebService的一些问题与解决 - icelander - ITeye技术网站
问题1:服务端接收的所有中文都是"?????"(乱码)
解决:设置HTTPRIO控件的HTTPRIO.HTTPWebNode.UserUTF8InHeader属性为true
问题2:Dephi编写的客户端在windows2003下调用WebService提示"Access violation at address 00E59195. Write of address 00E59195"
解决:我的电脑属性-&高级-&性能-&设置-&数据执行保护。选中"只为关键 Windows 程序和服务启用数据执行保护。当然你可以选择另一个选项,并添加我们的客户端作为例外处理。有二点比较奇怪的,一、并不是每一台windows2003的机器都需要这样设置;二、有问题的2003机器使用.net写的客户端却能正常访问WebService。
问题3:从服务端得到的XML字符串,一分析就出错
解决:先使用WideString变量保存返回的XML字符串。再利用这个变量分析。string不能识别换行符。
问题4:服务端得到的参数都为空值
解决:检查一下引入的WebService单元的最后三行是否如下
initialization
InvRegistry.RegisterInterface(TypeInfo(YourWebServiceSoap), 'http://tempuri.org/', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(YourWebServiceSoap), 'http://tempuri.org/%operationName%');
InvRegistry.RegisterInvokeOptions(TypeInfo(YourWebServiceSoap), ioDocument);//这一行有时会没有
这一行 InvRegistry.RegisterInvokeOptions(TypeInfo(YourWebServiceSoap), ioDocument);有时候没有的。举个例子,当我们的WebService的其中一个方法有参数的类型为DataSet时,单元文件的最后几行是这样的
initialization
InvRegistry.RegisterInterface(TypeInfo(YourWebServiceSoap), 'http://tempuri.org/', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(YourWebServiceSoap), 'http://tempuri.org/%operationName%');
RemClassRegistry.RegisterXSClass(GetDataSetResult, 'http://tempuri.org/', GetDataSetResult);
RemClassRegistry.RegisterXSClass(updateSet, 'http://tempuri.org/', 'updateSet');
这时,服务端接收到的所有参数都为null;这里你所手工在中间加入上面所提到的那一行。
问题5:服务端方法返回的DateTime,Delphi取得的时间不对。
解决:引用后,delphi是用TXSDateTime来接收C#的DateTime变量的。TXSDateTime有两个属性AsDateTime、AsUTCDateTime都是TDateTime,也就是Delphi用的日期变量了,但这两个属性得到的时间是不对的。放断点可以观察到TXSDateTime的年、月、时各变量都是正确的,所以解决的方式是取年月时分各变量重新组合成时间变量。
在这个过程,我碰到一个有趣的情况。看下面的C#代码
[WebMethod(EnableSession=true)]
public DateTime MyTime()
DateTime cur = DateTime.N
[WebMethod(EnableSession=true)]
public DateTime YourTime(DateTime pTime)
return pTime.AddDays(1);
Delphi调用后者,TXSDateTime中的AsDateTime属性保存的时间是对的。调用MyTime(),AsDateTime保存的时间就不对! 我以为AsUTCDateTime的情况可能会有所不同,但其实这里他与AsDateTime是一样的。另外,.net能不能再做些什么呢?我注意到.net的DateTime有这么一个方法ToUniversalTime;我在MyTime中尝试应用这个方法,结果更遭,delphi得到的年时分各变量的值不对了;期待AsUTCDateTime会给我惊喜,结果他还是与AsDateTime非常的一致;结果都不对。
浏览: 34948 次
来自: 深圳
oyprunner 写道楼主java转C++了 ?
我是09届 ...
楼主java转C++了 ?
我是09届毕业生,今年7月份进一家 ...
很有用!我的程序测试通过了!感谢!老问题,JS如何调用ASP变量???
[问题点数:50分,结帖人aryou]
老问题,JS如何调用ASP变量???
[问题点数:50分,结帖人aryou]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2005年4月 Web 开发大版内专家分月排行榜第一
2005年2月 硬件使用大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。.net中前台javascript与后台c#相互调用
  .net中C#代码与javaScript函数的相互调用问题。
  1.如何在JavaScript访问C#函数?
  2.如何在JavaScript访问C#变量?
  3.如何在C#中访问JavaScript的已有变量?
  4.如何在C#中访问JavaScript函数?
  问题1答案如下:
  javaScript函数中执行C#代码中的函数:
  方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
  2、在前台写一个js函数,内容为document.getElementById("btn1").click();
  3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
  方法二:1、函数声明为public
  后台代码(把public改成protected也可以)
public&string&ss()   {   return("a");   }
  2、在html里用可以调用
  前台脚本
&script&language=javascript&&  var&a&=&"&%=ss()%&";&  alert(a);&&/script&
  方法三:1、
、&script&language="javascript"&&  &!--&  function&__doPostBack(eventTarget,&eventArgument)&  {&  var&theForm&=&document.Form1;&//指runat=server的form&  theForm.__EVENTTARGET.value&=&eventT&  theFrom.__EVENTARGUMENT.value&=&eventA&  theForm.submit();&  }&  --&&  &/script&&  &input&id="Button1"&type="button"&name="Button1"&value="按钮"&onclick="javascript:__doPostBack('Button1','')"&
  方法四:
&script&language="javascript"&&  function&SubmitKeyClick()&  {&  if&(event.keyCode&==&13)&  {&  event.cancelBubble&=&&  event.returnValue&=&&  document.all.FunName.value="你要调用的函数名";&  document.form[0].submit();&  }&  }&  &/script&&  &INPUT&onkeypress="SubmitKeyClick()"&id="aaa"&type="text"&&  &input&type="hidden"&name="FunName"&&〈!--用来存储你要调用的函数&--〉
  在.CS里有:
public&Page_OnLoad()   {   if&(!Page.IsPost())   {   string&strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";   //根据传回来的值决定调用哪个函数   switch(strFunName)   {   case&"enter()":   enter()&;&//调用该函数      case&"其他":   //调用其他函数      default:   //调用默认函数      }   }   }   public&void&enter()   {   //……比如计算某值   }
  问题2.如何在JavaScript访问C#变量?
  答案如下:
  方法一:1、通过页面上隐藏域访问
&input&id="xx"&type="hidden"&runat="server"&&
  方法二:1、如后台定义了PUBLIC STRING N; 前台js中引用该变量的格式为''或"++"
  方法三:1、或者你可以在服务器端变量赋值后在页面注册一段脚本
"&script&language='javascript'&var&temp="&+&tmp&+&"&/script&"&
  tmp是后台变量,然后js中可以直接访问temp获得值。
  问题3.如何在C#中访问JavaScript的已有变量?
  答案如下:
  方法一:1、前台使用静态文本控件隐藏域,将js变量值写入其中;2、后台用request["id"]来获取值;
  方法二:可以用cookie或session
  问题4.如何在C#中访问JavaScript函数?
  答案如下:
  c#代码中执行javaScript函数:
  方法一:1、
Page.RegisterStartupScript("ggg","&");
  方法二:使用Literal类,然后
private&void&Button2_Click(object&sender,&System.EventArgs&e)   {   string&   str="&";   //Literal1.Visible=   Literal1.Text=   }
最新五条评论
?用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
?本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
?请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为四个问题轻松解决Asp.net中前台javascript和后台c#相互调用
& & & & 相信只要学习过Asp.net的同学应该都会遇到,前台javascript与后台c#相互调用的问题。这其中又包含这个小问题,分别是如何在JavaScript访问C#函数;如何在JavaScript访问C#变量如何在C#中访问JavaScript的已有变量如何在C#中访问JavaScript函数。想要知道答案的同学,就跟着一起学习吧!   问题1.如何在JavaScript访问C#函数?   方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;   2、在前台写一个js函数,内容为document.getElementById("btn1").click();   3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;   方法二:1、函数声明为public   后台代码(把public改成protected也可以)   public string ss()   {   && return("a");   }   2、在html里用&%=fucntion()%&可以调用   前台脚本   &script language=javascript&   && var a = "&%=ss()%&";   && alert(a);   &/script&   方法三:1、&script language="javascript"&   &!--   function __doPostBack(eventTarget, eventArgument)   {   var theForm = document.Form1; //指runat=server的form   theForm.__EVENTTARGET.value = eventT   theFrom.__EVENTARGUMENT.value = eventA   theForm.submit();   }   --&   &/script&   &input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack('Button1','')"&   方法四:&script language="javascript"&   function SubmitKeyClick()   {   && if (event.keyCode == 13)   && {   && &&& event.cancelBubble = &&& &&&   event.returnValue =   && &&& document.all.FunName.value="你要调用的函数名";   && &&& document.form[0].submit();   && }   }   &/script&   &INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text"&   &input type="hidden" name="FunName"& 〈!--用来存储你要调用的函数 --〉   在.CS里有:   public Page_OnLoad()   {   && if (!Page.IsPost())   && {   && string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";   && //根据传回来的值决定调用哪个函数   && switch(strFunName)   && {   && &&& case "enter()":   && &&& enter() ; //调用该函数   && &&&   && &&& case "其他":   && &&& //调用其他函数   && &&&   && &&& default:   && &&& //调用默认函数   && &&&   && }   && }   }   public void enter()   {   //……比如计算某值   }   问题2.如何在JavaScript访问C#变量?   方法一:1、通过页面上隐藏域访问&input id="xx" type="hidden" runat="server"&   方法二:1、如后台定义了PUBLIC STRING N; 前台js中引用该变量的格式为'&%=n%&'或"+&%=n%&+"   方法三:1、或者你可以在服务器端变量赋值后在页面注册一段脚本   "&script language='javascript'&var temp=" + tmp + "&/script&"   tmp是后台变量,然后js中可以直接访问temp获得值。   3.如何在C#中访问JavaScript的已有变量?   方法一:1、前台使用静态文本控件隐藏域,将js变量值写入其中;2、后台用request["id"]来获取值;   方法二:可以用cookie或session   4.如何在C#中访问JavaScript函数?   答案如下:   c#代码中执行javaScript函数:   方法一:1、Page.RegisterStartupScript("ggg","&script&SetVisible(1); &/script&");   方法二:使用Literal类,然后   private void Button2_Click(object sender, System.EventArgs e)   {   &&   && str="&script language='javascript'&";   && str+="selectRange()";   && str+="&/script&";   && //Literal1.Visible=   && Literal1.Text=   }
相关资讯:    & & & & & & & & & & & &  & &C#动态调用数据库报错(必须声明表变量&表值函数对象)
[问题点数:40分,结帖人jshuzi]
C#动态调用数据库报错(必须声明表变量&表值函数对象)
[问题点数:40分,结帖人jshuzi]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 c语言函数调用 的文章

 

随机推荐