15. 06.

C#调用代码:
TcpChannel tc= new TcpChannel();
ChannelServices.RegisterChannel(tc);

remoteObject = (MyRemotableObject)Activator.GetObject(typeof(MyRemotableObject), "tcp://localhost:8080/HelloWorld");

textBox2.Text=  remoteObject.SetMessage(textBox1.Text);

DELPHI如何实现调用呀?

知道怎么调用了但是就是报错
INVALID UNICODE CHARACTER!
WS:= (HTTPRIO1 as MyRemotableObjectPortType);
s:=  ws.SetMessage('avshapek');

ws应该是TFMessageWindow型的变量吧

引用 2 楼 czyoooo 的回复:
知道怎么调用了但是就是报错
INVALID UNICODE CHARACTER!
WS:= (HTTPRIO1 as MyRemotableObjectPortType);
s:=  ws.SetMessage('avshapek');

编码不对?

好象是的,怎么处理呀?

好像有老外写了一套组件可以用。


15. 06.

  各位好,我想了解Delphi 未来发展,Delphi2009的以实现怎么样的开发,公司原用Delphi开发,现在要求我们去学C#,说要换开发工具,
真不知道为什么,Delphi的未来如何?我真不想离开这个开发工具,请各位说说吧!

引用 1 楼 luckyrandom 的回复:
若是C/S、桌面APP,DELPHI是王道
若是WEB,另选工具

web开发是趋势,哎,真是个阿斗啊。。。。。。。。。。。

不如此认为
VISTA和WIN7是趋势,那又如何。。。还是有绝大多数客户 <不管是正版还是盗版>在用WINXP
为什么?WIN XP满足客户需求,不仅仅是客户出不起升级VISTA/WIN7的钱

不是一切应用都适合或擅长在WEB里
C/S的应用多过B/S,这应该是现状,甚至未来几十年都如此,再未来就不知道了,世界变化、革命性技术很多

各有各的应用市场,不存在谁是趋势之说

恩,luckyrandom 说的对,未来还是一个求知数,

C/S的确有不如B/S的地方:如直接连数据库,版本更新(应该容易解决),通讯协议不如http(s)通行
但是,改为Client/WebServer,就是集中两者的优点了:
http://blog.csdn.net/sz_haitao/archive/2009/05/15/4190602.aspx

不过,本话题是delphi的前途,如果没有安德森这样的人,估计是很难有起色的了
——连这个问题也解决不了或不屑解决:http://topic.csdn.net/u/20090603/20/a3bc6025-a3da-414a-a43f-96a3aba8490a.html


15. 06.

delphi2009用tsqlstoredproc 调用mysql 存储过程,传入string参数后执行会报错(没有参数不报错):
dbexpres driver does not support the tdbxtypes.unknown data type

相关源码:
  with  StoredProc1 do    //StoredProc1 的各属性已经设置,连接也没有问题
  begin
      Params.ParamByName('funcname').AsString := funcname ;
    Prepared := true;
    ExecProc;            //到这一部报错
  end
存储过程:

CREATE DEFINER=`root`@`%` PROCEDURE `test`(funcname varchar(128) )
BEGIN
  select now();

END

StoredProc1 中的params属性的datatype=ftstring,precision=128
mysql中的funcname varchar(128)
mysql的版本是5.0
delphi2009的dbexpress driver应该是最新的吧,不知道哪位遇到过这个问题,请多指教^_^

可能不支持函数,但过程可以。结帖

不用tsqlstoredproc,用tsqlquery去执行sql存储过程,试试

建议使用corelab(devart)的mysql驱动


15. 06.

我在使用virtualstringtree控件时,用到了它的指定单元格的edit功能,在createEditor后,进入编辑框内,但是在编辑时我想对键盘输入的字符进行过滤,不能输入类似"/,*,"等字符,该如何往下进行,希望大家多多指教,先谢了!

在你create的Editor的KEYDOWN和CHANGE事件中过滤啊

引用 2 楼 yuyuhaso 的回复:
在你create的Editor的KEYDOWN和CHANGE事件中过滤啊

谢谢楼上,但是创建的editor的keydown事件要自己写吗?我找不到这个。


15. 06.

目的:在线程中,当某一变量到达设定值时,使用存储过程向数据表里插入该变量的数值。出现问题:数据表中插入很多行数据。不知道什么原因请各位帮忙解决。我的数据表中设了自增列。我使用的是adostoredproc,存储过程在存入一次记录后如何关闭,不再存第二条记录。

你先试试不用线程,插入数据是否报错,如果不报错就是线程控制的问题了

单独执行存储过程出错吗,看看线程部分的调用代码
存储过程执行成功了如果commit了就会自动结束了

我试过了单独运行存储过程是不出错的,问题已解决,是我的线程中的条件没控制好。现在又遇上了比较棘手的问题,程序中开了十个线程,2G内存的CPU竟然占用98%,怎么占用这么大的内存呢?我都freeonterminate:=true了,请大家帮忙,线程怎么及时地释放内存???请大家帮忙了,在线等待。。。。。


15. 06.

我用的这个TChart 控件,怎么这个数量是正确的,可是这个柱子显示的怎么是一样高,而且我发现 在700以下的没有问题,过了700以后全部是一个样了

可是我有的数据是10 有的是10000,有时候是-1 我能不能让这个控件自己控制大小啊
是不是有那个属性可以设置自己控制啊

2楼的说得很清楚了,如果Maximum值不固定的话,应该动态改变Maximum的范围大小,一般你可以取MAX值*0.2

你的应该是最大值上限不够了 正如楼上所说的 控件里面的属性全是可以通过代码动态的改变的
PS:700以下的没有问题过了700的都一样 你说是哪的问题呢?

先求出你的数据中的最大和最小值,然后把这两个数值写到上面的代码中。如果最大最小值是固定的,就手工指定,如果不固定,就在程序中通过比较得出,然后在代码中动态指定

通知们啊,我刚开始用DELPHI 7开发的,运行的很好,一点问题都没有,可是现在换成了delphi 2007就变成那个样子了,这个需要改程序的吗?

问题已经解决了,原来是有一个叫做 Automatic 属性没有设置成 true 
还是要谢谢各位了


14. 06.

数据库为sql server 2005 express版本 D2009

数据库肯定是作为一个实例来安装的

我设定的params 如下

SchemaOverride=sa.dbo
DriverName=MSSQL
HostName=My133-PCSQLEXPRESS
DataBase=LZDB
User_Name=sa
Password=1234568
BlobSize=-1
ErrorResourceFile=
LocaleCode=0000
MSSQL TransIsolation=ReadCommited
OS Authentication=False
Prepare SQL=False

这样的时候是可以连接成功的

把My133-PC换成ip地址之后就怎么办都连不上了
请问下 这个是怎么个情况, 有没有办法继续是用ip

如果不能用ip地址的话, 接入公网之后, 是否要申请域名才能使用

谢谢谢您的回答

楼上的  不知道你是故意的还是什么意思  我已经说明白了用主机名是没有问题的 关键问题就在于为什么不能直接是用ip地址,  请大家继续讨论一下 


14. 06.

刚下载了一个网络抓包的程序,从程序运行的情况来看,抓取的都是UDP连接的包,请问一下,这样的程序能否同时也可以抓取TCP的包? UDP 和TCP,可以共存么?还是只能选一种方式?

一个网上很常见的截获IP包的小软件,名字是“cap_ip”,我大概看了一下代码,没用三方控件。只不过我对网络抓包不懂,所以上来问问


14. 06.

刚才的一位仁兄给出了最小二乘算法,如下: 
  procedure  MinSqrMul(m,  n:  Integer;  A:  TMatrix;  b:  array  of  Double;  var  x:  array  of  Double);   
  var   
      i,  j,  k:  Integer;   
      ATA:  array  of  array  of  Double;   
      ATb:  array  of  Double;   
      Elem:  Double;   
  begin   
      SetLength(ATA,  n,  n);   
      SetLength(ATb,  n);   
      for  i  :=  0  to  n  -  1  do   
          for  j  :=  0  to  n  -  1  do  begin   
              ATA[i,  j]  :=  0;   
              for  k  :=  0  to  m  -  1  do   
                  ATA[i,  j]  :=  ATA[i,  j]  +  A[k,  i]  *  A[k,  j];   
          end;   
      for  i  :=  0  to  n  -  1  do  begin   
          ATb[i]  :=  0;   
          for  j  :=  0  to  m  -  1  do   
              ATb[i]  :=  ATb[i]  +  A[j,  i]  *  b[j];   
      end;   
      for  i  :=  0  to  n  -  1  do  begin   
          Elem  :=  ATA[i,  i];   
          for  j  :=  i  to  n  -  1  do   
              ATA[i,  j]  :=  ATA[i,  j]  /  Elem;   
          ATb[i]  :=  ATb[i]  /  Elem;   
          for  k  :=  i  +  1  to  n  -  1  do  begin   
              Elem  :=  -ATA[k,  i];   
              for  j  :=  [red]i  +  1[/red]  to  n  -  1  do   
                  ATA[k,  j]  :=  ATA[k,  j]  +  ATA[i,  j]  *  Elem;   
              ATb[k]  :=  ATb[k]  +  ATb[i]  *  Elem;   
          end;   
      end;   
      x[n  -  1]  :=  ATb[n  -  1];   
      for  i  :=  n  -  2  downto  0  do  begin   
          for  j  :=  i  +  1  to  n  -  1  do   
              ATb[i]  :=  ATb[i]  -  ATA[i,  j]  *  x[j];   
          x[i]  :=  ATb[i];   
      end;   
  end;   
   
   
  以下是调用 
  procedure  TForm1.FormClick(Sender:  TObject);   
  var   
      A:  TMatrix;                                 
  //系统提示[Error]  UnitPump.pas(67):  Undeclared  identifier:  'TMatrix' 
      b:  array  [0..2]  of  Double;   
      x:  array  [0..1]  of  Double;   
  begin   
      SetLength(A,  3,  2);   
      A[0,  0]  :=  1;  A[0,  1]  :=  2;  b[0]  :=  3;   
      A[1,  0]  :=  1;  A[1,  1]  :=  2;  b[1]  :=  4;   
      A[2,  0]  :=  2;  A[2,  1]  :=  1;  b[2]  :=  3;   
      MinSqrMul(3,  2,  A,  b,  x);   
      ShowMessage(Format('%f,  %f',  [x[0],  x[1]]));   
  end;   
   

这段代码里的A[0,  0]  :=  1;  A[0,  1]  :=  2;  b[0]  :=  3;   
      A[1,  0]  :=  1;  A[1,  1]  :=  2;  b[1]  :=  4;   
      A[2,  0]  :=  2;  A[2,  1]  :=  1;  b[2]  :=  3;  什么含义。为什么要不这个值。这个最小二乘法怎么用呀。

那些值应该是测试用的吧。

Mark

up


14. 06.

以前是通过LPT1口向打印机发送命令打印小票的,在笔记本上使用时,因为没有LPT1口,只有USB口,所以就用USB转并口线,然后接25孔针式打印机。 问题就如题所示

(有人说直接选择打印机打印就好了,但是纸张的类型好像没有小票吧????所以还是要自己控制布局,切纸等操作。)

解决问题,分可再加!!!! 谢谢!

自定义纸张大小没有吗?

ljmanage 说的对。

谢谢你们的关注!