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

📄 9935.txt

📁 关于编程技术技巧的文章
💻 TXT
📖 第 1 页 / 共 4 页
字号:
略加注意,此时在JScript中应该象调用一个不带参数的JScript函数一
样调用它,如用foo()调用VBScript Sub foo过程。 

   三、数据共享 

   在某些情形下混合运用VBScript和JScript函数是非常有用的,但
在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简
单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引
用。 

   对象的使用方法也相似,可以任意选用合适的语言读取、修改属性
或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的
语言所定义的。正如上例VBScript的过程调用,当从JScript中调用一个
不带参数的VBScript对象的方法时,其调用方法也遵从JScript的调用规
则,反之亦然。 

   四、数组管理 

   数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不
同语言脚本之间共享,但必须注意兼容方面的问题。 

   VBScript数组在JScript下可以用VBScript的符号引用,即用
myArray(2)引用数组元素而不是JScript的数组元素引用符号myArray[2]。
此外,还可以使用一个特殊的JScript对象——VBArray对象将VBScript数
组转换为JScript数组。下面的代码从VBScript数组myVBArray创建JScript
数组myJSArray: 
 var Temp = new VBArray(myVBArray)
 var myJSArray
 myJSArray = Temp.toArray()
   上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()
方法将自己转换为JScript数组。此后就可以象普通JScript数组一样使
用myJSArray,如myJSArray[1]。但应当注意的是,toArray()方法将把
一个多维的VBArray转换为一维的JScript数组。 

   从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们
可以直接访问JScript数组相关的方法和属性,但没有直接访问JScript
数组的单个元素的方法。也就是说,我们可以在VBScript脚本中读取
JScript数组的长度属性,如下所示: 
   x = myJSArray.length 
   但无法直接读取该数组的单个元素,下面的VBScript代码是不正确的: 
   x = myJSArray(3) 
   解决该问题的一个可行的方法是执行一个转换过程,如下面的代码所
示,此处假定VBScript是缺省的脚本语言: 
< %
 Dim Temp
 Dim myVBArray
 Temp = myJSArray.join(", ")
 myVBArray = Split(Temp, ", ")
%>
   此处的JScript join()方法将数组myJSArray元素转换到一个以逗号
为分割符的字符串,VBScript Split()函数将字符串转换为VBScript数组。
注意这里我们是在VBScript环境下调用JScript的join方法。依照此例,我
们可以通过自定义VBScript函数来模拟JScript的VBArray对象的toArray()
方法以实现JScript数组到VBScript数组的转换。 

   五、小结 

   在同一个ASP工程内灵活选用不同脚本语言具有许多优点,这些脚本
之间的交互能力更为开发者集成不同语言所提供的内置函数和其它功能带
来了更多的机会,同时也使得实现既可用于VBScript也可用于JScript环
境的通用脚本库成为可能。

****************************************************************
****************************************************************

◆下载专区◆

OGL ActiveX Control 1.0.2.4  (61K)
可以直接用支持ActiveX控件的开发工具来使用OpenGL API的功能。
OGL的ActiveX控件使你可以往你的应用程序中增加三个量。OpenGL API中
的每个功能都作为控件中的一种方法而生效 。这些方法的名称与OpenG中
的保持一致,因为那些开发者们不熟悉Active X控件的使用。在这个控件
中并不是所有的API功能都可以实现。
下载地址: http://www.softoholic.bc.ca/opengl/oglprel.zip 
相关地址: http://www.softoholic.bc.ca/opengl/

TX Text Control 6.0  (7494K)
这是一个强大的字处理软件,其组件是可以重复使用的。
TX Text Control为您提供了完全的字处理程序,一个Intranet应用程序,
一个包含了自由文件定位和自由文件流的desktop publisher,和一个数
据库程序。TX Text Control具有如下功能:一个扁平的工具条;字符和
段落的格式化;邮件合并;放大功能;查找和替换;用于Word和HTML的
过滤器。
它还支持数据库,制表,统一的字符编码标准,外部的源文件,多种语
言,图片和OLE对象。
下载地址: ftp://ftp.textcontrol.com/textcontrol/demo/txtrial.exe
相关地址: http://www.textcontrol.com/

SafeSerial OCX 2.2.8  (1254K)
你是不是经常为别人未经注册就使用你的软件而感到烦恼?那么这个程
序可以帮你的忙。
它在你的用户的系统中锁定了一个程序,这样你的软件就只能以一个注
册过的版本的形式运行在他的机器上了。
SafeSerial OCX对软件的保护非常简便,只需撤销窗体中的组件,修改
一些属性,再编写三、四行代码就可以了。
SafeSerial是完全基于软件的。使用者可以通过将代码加密来进行远程
注册。如果你想运送软件,SafeSerial支持key disks的使用,而且无法
被复制。
它还包括其它的功能:可以生成评测版本;你可以租用你的软件而无须
出售;可以设置限制使用天数。他还可以让你的软件只工作在demo版本
下,除非你用代码解锁;如果你的软件被拷贝了,那么新的拷贝就变成
了一个demo版了。
SafeSerial还可以通过使用不固定的许可证来保护网络应用程序,这样
你的程序就不是用于某一特定的计算机,而是用于整个网络的驱动。
下载地址: http://www.sikandersoft.com/sase22.exe
相关地址: http://www.sikandersoft.com/products.html

GFC Cab Control  (826K)
这是一个ActiveX控件,可以让你创建和摘录CAB文件。
它包括一个稳定快速的搜索引擎,用于压缩和解压缩。GFC Cab控件支持
如下的压缩模式:MSZIP,LZX,或不压缩。此外,因为CAB文件的扩展名
可以是任意的,你可以使用该控件来编写数据文件的代码。该控件最大
压缩量是100MB。
下载地址: http://www.gfcsoftware.com/cabctl.zip
相关地址: http://www.gfcsoftware.com/cabcontrol.htm


如果想要更多的编程工具、程序源码和控件的话,请来我的主页看看吧。
http://person.zj.cninfo.net/~yao

****************************************************************
****************************************************************

◆有问必答◆

★本期回答★

●136. 回答请mailto: yaozheng@kali.com.cn?subject=136
对于《编程技术》第33期中第114号问题解答,我认为是答非所问(请包
涵),可能是我的说明不够清楚,现在再作详细说明,希望各位高手不
吝赐教。
完整例子:
class PACKAGE TMyObject : public TComponent
{
private:
    AnsiString FFileName;
 
public:
    __fastcall TMyObject( TComponent *aOwner ) : TComponent( aOwner ) {}
 
__published:
    __property AnsiString FileName = { read = FFileName, write = FFileName };
 
};
 
另外写一个 TFileNameProperty 的属性编辑器类。
 
#include <Dsgnintf.hpp>
 
class PACKAGE TFileNameProperty : public TStringProperty //或TPropertyEditor, ...
{
public:
    __fastcall TFileNameProperty( const _di_IFormDesigner aDesigner, int aPropCount );
    virtual TPropertyAttributes __fastcall GetAttributes()
    {
        return TPropertyAttributes() << paDialog; // 编辑该属性时会出现一个"..."的按钮
    }
 
    virtual void __fastcall Edit() //按下按钮时会执行该函数。
    {
        ... //这里的代码比较长,略过。主要是打开一个“TOpenDialog",取得文件的完整路径。
    }
 
    ... //略过。
        
};
 
// 注册 TMyObject 类
namespace Test
{
    void __fastcall PACKAGE Register()
    {
         TComponentClass Classes[ 1 ] = { __classid( TMyObject ) };
 
         RegisterComponents( "Test", Classes, 0 );
 
         // 下面就是问题之处
         // 方法一:编译不通过,原因是 __typeinfo 仅支持 VCL 类
         RegisterPropertyEditor( __typeinfo( AnsiString ), 
                                 __classid( TMyObject ),
                                 "FileName",
                                 __classid( TFileNameProperty ) );  
 
        // 方法二:这种情况没有错误,但却没有注册该属性编辑器。
        TTypeInfo ti;
        ti.Kind = tkString;          // 或 tkLString、tkWString、...
        ti.Name = "AnsiString";      // 或 String、...
        RegisterPropertyEditor( &ti, 
                                __classid( TMyObject ), 
                                "FileName", 
                                __classid( TFileNameProperty ) ); 
    }
}
 
其实除了 AnsiString 类,其它基本类型 int, char ... 都会有相同问
题。如果用 Delphi就不会有这种问题,我想这就是 CB 不如 Delphi 的
地方之一吧。我目前的解决办法是自己写一个TString类替代AnsiString,
但效果并不理想,原因是 VCL 类一定要用指针的方式使用。对于Delphi我
并不熟,因此希望有仅用CB就可解决问题的好办法。  fslz@cmmail.com
答:
C++Builder的__typeinfo的确不适用于简单类型。
向工程中添加一个Pascal的Unit,例如types.pas,包含如下代码:
unit Types;
interface
uses TypInfo;
function GetStringTypeInfo : PTypeInfo;
implementation
function GetStringTypeInfo : PTypeInfo;
begin
    Result := TypeInfo(String);
end;
end.
就可以
        RegisterPropertyEditor(
            GetStringTypeInfo(), 
            __classid( TMyObject ),
            "FileName",
            __classid( TFileNameProperty ) );
了(BCB可以直接编译Delphi的代码)。注意,别忘了
#include "types.hpp"
(该文件在你将.pas加入工程时自动生成)。

●135. 回答请mailto: yaozheng@kali.com.cn?subject=135
我现在在用DELPHI4编写一个人事管理程序,在处理个人档案的照片时不
知如何在DELPHI中操作扫描仪,来将照片引入程序中或改变程序中的照
片。斌斌 binbin@ynmail.com
答:
见本期《在Delphi中控制扫描仪》一文。

_______________________________________________________________

★本期提问★

137. 回答请mailto: yaozheng@kali.com.cn?subject=137
我用PVB6.0编一个工控的监控程序时,想利用一个别人编好的DLL文件,但
没有相关的说明,有什么办法使用它?
另外,我在装入一老文件时,会出现以下的提示:“ 不能加载控件SSPanel2; 
许可证未找到。”,请问如何解决? ylsw@mail.nn.gx.cn

138. 回答请mailto: yaozheng@kali.com.cn?subject=138
我想使用Visual InterDev所提供的可视化数据库工具来方便的将Web应用
程序与数据库连接。根据正规的步骤,创建数据库连接(Data Connection)
和数据库命令(Data Command)后,Global.asa文件将自动生成数据库连
接的信息。其中有这么几句:
    '--Project Data Environmant
    Set DE = Server.CreateObject("DERuntime.DERuntime")
    Application("DE") = DE.Load(Server.MapPath("Global.asa"),"_pri
    vate/DataEnvironment/DataEnrironment.asa")
    '== Visual InterDev Generated - endspan ==
然后利用数据绑定控件生成asp网页。
浏览此网页。在单机状况下(用Personal Web Server模拟服务器)顺利看
到数据库的内容。但将网站放到局域网中(服务器安装了Windows NT 4.0, 
IIS 4.0),从浏览器上看到以下错误信息:
    服务器对象错误. 'ASP 0177:800401f3'
    Server.CreateObject 失败
    /Project3/grobal.asa 行32
    无效的类字串
查看MSDN,说是在SQL Server Runing 的情况下安装ASP。但我用的是Access,
没用SQL Server。
于是重装NT,再装SQL Server,关闭SQL Server服务后,安装NT Options 
Pack 4.0。但情况依旧。恳求何解。 zhang.gx@263.net

139. 回答请mailto: yaozheng@kali.com.cn?subject=139
请问在powerbuilder6.5中,是否能调用ActiveX控件?能简单的说明一下
方法么? 回答请mailto: mikewolf@163.net

140. 回答请mailto: yaozheng@kali.com.cn?subject=140
请问如何用将带有可视控件和窗体的应用程序编译成ActiveX DLL, 以便在
ASP中通过CreateObject方法调用。目前看到的例子都是不带可视控件的。
谢谢 iagis@netease.com

141. 回答请mailto: yaozheng@kali.com.cn?subject=141
我用VB5.0的Data控件打开一个.DBF数据库,想添加新记录时出现错误,提
示数据库只读不能更新(更改Readonly属性无效),为什么?如何解决?
liukai1111@263.net


提问信箱: yaozheng@kali.com.cn?subject=question
如果您有什么疑难问题,请发到上面的信箱里,我会及时把您的问题放在
杂志上的,希望编程高手们能不吝赐教,也希望这个栏目能成为大家交流
的场所,请在回答时同时抄送一份给提问者,谢谢。

****************************************************************
****************************************************************

◆编者的话◆


本刊已加入【CHINA-EZL】中国电子杂志联盟
联盟主页地址 http://china-ezl.yeah.net

◆欢迎光临我的个人主页

●《编程技术》 http://person.zj.cninfo.net/~yao
本刊的同名主页,主要以收集各类编程工具控件和程序源代码为主。

●《C++ Builder世界》 http://cppbuilder.myrice.com
本人最新制作的个人主页,是一个探讨C++ Builder编程的专题
网站,为广大的C++ Builder爱好者搜集关于C++ Builder的一切。
                                                

◆《编程技术》订、退方法:

请到本刊主页进行订退工作 http://person.zj.cninfo.net/~yao

如果您觉得这份刊物还不错的话,欢迎把它介绍给您的朋友.
不知道您看了这期刊物有什么想法或者是意见,欢迎向我提出来.
本人感激不尽,我的联系方法如下:
E-mail:yaozheng@kali.com.cn
ICQ#:  43260473

**************************THE END**************************

⌨️ 快捷键说明

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