⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c980301.gb_

📁 ASPWeb数据库范例总览
💻 GB_
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
   <TITLE>ActiveX篇: 哪一种参数传递的方式比较节省时间?</TITLE>
   <META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (Win95; I) [Netscape]">
   <META NAME="Author" CONTENT="KJ Wang">
</HEAD>
<BODY TEXT="#202020" BGCOLOR="#FFFFFF" LINK="#FF0000" VLINK="#000080" ALINK="#FF0000">

<H2 ALIGN=CENTER><A HREF="vbax.htm">VB5 与 ActiveX 程式设计</A></H2>

<H3 ALIGN=CENTER><A HREF="../vbweeks.htm">每周一问</A>: 挑战您的 VB 功力 (初级篇, 98/03/01) </H3>

<H2>
<HR WIDTH="100%"></H2>

<TABLE WIDTH="100%" >
<TR VALIGN=TOP>
<TD NOWRAP>Q:</TD>

<TD>同样的副程式, 只有参数的定义不相同, 问何者比较节省呼叫时间? 
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=4 WIDTH="80%" >
<TR VALIGN=TOP>
<TD>Sub SubX( <FONT COLOR="#FF0000">ByVal S As String</FONT> )<BR>
...<BR>
End Sub</TD>

<TD>Sub SubX( <FONT COLOR="#FF0000">S As String</FONT> )<BR>
...<BR>
End Sub</TD>
</TR>
</TABLE>

<P>如果说副程式与呼叫程式位於同一个程式中, 则「S As String」的传递方式较快,
原因请参阅 <A HREF="../ba/A980208.htm">98/02/08 的每周一问</A>。但如果被呼叫的副程式位於
ActiveX code component 之中的, 而呼叫程式位於另一个独立的程式, 结果又如何呢?</P>
</TD>
</TR>

<TR VALIGN=TOP>
<TD>A:</TD>

<TD>ActiveX code component 分成 ActiveX DLL 及 ActiveX EXE 两种。 
<P>对 ActiveX DLL 而言, 如果被程式 A 所引用, 则 ActiveX DLL 之中的变数将与程式
A 的变数使用相同的「定址空间」, 而「S As String」的传「位址」工作模式在
ActiveX DLL 与应用程式之间并不會有任何问题。</P>

<P>但如果是 ActiveX EXE, 由於 ActiveX EXE 本身是独立的执行档, 所以与应用程式之间的「定址空间」是各自独立的,
简单地说, 传位址在 ActiveX EXE 与应用程式之间是有问题的。 而 VB 为了让应用程式能够以「S
As String」的方式传递参数到 ActiveX EXE 的副程式中, 所采用的方法如下:</P>

<CENTER><P><IMG SRC="C980301.gif" HEIGHT=120 WIDTH=478></P></CENTER>

<P>可以发现 传递参数的过程中, 含有两次复制资料的动作, 反而比「ByVal S
As String」(只有传递时复制一次资料) 多了一次。</P>

<P>所以当我们呼叫的是 ActiveX EXE 的副程式时, 「S As String」反而是执行效能较低的。</P>
</TD>
</TR>
</TABLE>

<P>
<HR WIDTH="100%"></P>

</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -