如何不安装VB5,直接在Delphi下使用MSCOMM32.OCX(50分)

W

Walone

Unregistered / Unconfirmed
GUEST, unregistred user!
问题如上。
请告诉说是用regsvr32来注册,我已试过n遍,没用。
设计态时,当把此控件放入窗体时,提示说,未找到
license information.
 
B

bluebird

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题,我正好遇到过
mscomm32.ocx需要一个.lic文件,你查找一下就会发现一些*.lic文件
在windows/system下有v*.LIC文件就是需要的(VB版本不同,名称也不同),
和mscomm.ocx一起copy到对应的目录中, lic必须在system目录中
然后再在DELPHI中注册,就OK了
推荐用spcomm控件,不用mscomm,mscomm很不好用.
spcomm在本论坛就有.
如果16位,用comm控件,也是FREE的,本论坛好象也有

 
Y

yifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
还是用spcomm把,总比ocx好
 
W

Walone

Unregistered / Unconfirmed
GUEST, unregistred user!

多谢两位!

在贴此问题之前,我已经开始用了Spcomm,是Pig Tail工作室那个吧。
但我正在调的一个程序中,却出了一点小问题。如下:

我正在调程序的机器上只有一个COM1口有效,当我改变串口设置时,
由COM2口(当前是无效状态)改为COM1,这次设置得出的COMM1.Handle
居然是0,再次设COM1时,才变为正常值。更为奇怪的是,我单步执行
时,结果却又是正确的,让我一时不着边际。
 
B

bluebird

Unregistered / Unconfirmed
GUEST, unregistred user!
如果程序不长,贴到这里吧.
 
W

Walone

Unregistered / Unconfirmed
GUEST, unregistred user!

...

procedure TForm_comm.comminitialize(commname:string)

//串行口初始化
Begin
comm1.CommName:=commname;
comm1.BaudRate:=2400;
comm1.StopBits:=_1;
comm1.Parity:=None;
comm1.StartComm;
end;

procedure TForm_comm.commsureClick(Sender: TObject);
var
changed,t:boolean;
baudrt:integer;
begin

if comm1.CommName<>comname.Items[comname.ItemIndex] //若COM口改变
then
begin
comm1.StopComm;
comminitialize(comname.Items[comname.itemindex]);
end;

if comm1.Handle>0
<font color=red> //出错位置,当由无效COM口换成有效时,无法进入,但单步时可进入

<font color="#0000A0">
then
begin
changed:=false;
if speedlist.ItemIndex=-1
then speedlist.ItemIndex:=4
//默认为2400
if comm1.BaudRate<>strtoint(speedlist.Items[speedlist.itemindex])
then changed:=true;

if changed //如果速率改变,则发送数据
then
begin
t:=comm1.WriteCommData(frame_data,write_num);
if t then
begin
//showmessage('write success');
comm1.BaudRate:=strtoint(speedlist.Items[speedlist.itemindex])

// set port Baud Rate
end;
end;
end;
form_comm.Visible:=false;
end;

...
 
L

LSS

Unregistered / Unconfirmed
GUEST, unregistred user!
是否需要延时
 
W

Walone

Unregistered / Unconfirmed
GUEST, unregistred user!

不错,确实是需要延时。
我在出错位置加了延时半秒的语名,结果就正常了。
但哪位能告诉我这是为什么?
在程序中哪些地方需要这类延时,一般需多长时间?
 
L

liuyj

Unregistered / Unconfirmed
GUEST, unregistred user!
只要把MSCOMM32.OCX拷贝到windows的system目录下,再选择delphi中的import
activex菜单,出现对话框,用add加入MSCOMM32.OCX,会出现mscom的类名,再
install就可以了。这个问题论坛中好象有。
 
W

Walone

Unregistered / Unconfirmed
GUEST, unregistred user!
liuyj:哥们儿,可能咱们俩的Delphi不一样,我都试了N遍了(N<5,没那么傻)

感谢各位的帮助,程序我已调完。
如果哪位对程序特定位置延时这个问题有高见,请一定教我两招!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部