InstallShield内部库函数全集十二-共享和锁定文件函数、字符串函数(中文版)

类别:编程语言 点击:0 评论:0 推荐:
12  共享和锁定文件函数
  一个共享文件是一个可以被多个应用程序使用的文件,如.dll,.vbx或驱动程序。InstallShield保护共享文件在卸载过程中不被删除。
  使用SHAREDFILE选项的函数把所有的文件都视为共享文件,因而为所有包含的文件递增注册表引用计数器。如果文件存在于目标目录并且它的注册表引用计数器大于0,则InstallShield将其注册表引用计数器增一。如果共享文件不存在于目标目录并且它没有引用计数器,InstallShield创建该计数器并设置它为1。如果共享文件已经存在于目标目录当没有引用计数器,InstallShield创建该计数器并初始化它为2,作为防止在卸载过程中意外删除的预防措施。
  共享文件当它们被锁定时不能被更新。一些InstallShield文件传输函数使用SHAREDFILE选项,因而在文件传输过程中被锁定的.dll和.exe文件可以被记录并在Windows 或系统重启时被更新。
  InstallShield将一个正被一个应用程序或系统使用的文件视为锁定。锁定文件不必要是共享文件。
下列函数处理共享和锁定文件:
Is
请参阅3.9。
RebootDialog
请参阅4.9。
SdFinishReboot
请参阅5.17。
VerUpdateFile
请参阅21.5。
XCopyFile
请参阅9.28。
13  字符串函数
  字符串函数提供处理字符串变量和文字的功能。字符串函数与标准C语言函数相似。返回值也遵守C语言的规定。
CopyBytes
从一个字符串中拷贝指定字节数到另一个。
GetDir
从一个路径名或全限定文件名中删除驱动器标识。
GetDisk
从一个路径名或全限定文件名中检索磁盘驱动器标识。
NumToStr
将一个数字转换为一个字符串。
ParsePath
从一个路径中检索驱动器,路径,文件名或扩展名。
StrCompare
将一个字符串和另一个比较。
StrFind
在另一个字符串中查找一个字符串。
StrGetTokens
基于指定定界符从一个字符串中得到一个令牌。
StrLength
返回一个字符串中的字节数。
StrLengthChars
返回一个字符串中的字符数。
StrRemoveLastSlash
删除一个路径字符串中的最后的反斜杠。
StrSub
从一个字符串中返回一个子串。
StrToLower
转换字符串中的所有字母字符为小写。
StrToNum
转换字符串为一个数字。
StrToUpper
转换字符串中的所有字母字符为大写。
13.1  CopyBytes
语法:CopyBytes (svDest, nIndexDest, svSrc, nIndexSrc, nCount);
说明:CopyBytes函数从一个字符串中拷贝指定的字节数到另一个字符串。你可以在源和目标字符串中指定偏移下标。
参数:
svDest
指定目标字符串。
nIndexDest
指定在目标字符串中的偏移下标(开始点),从这个位置开始插入这些字节。字符串的第一个字节是在位置0。
svSrc
指定源字符串。不要传递一个大小大于256个字符的自动调整大小的字符串。而应该用一个显式大小声明字符串。nIndexSrc
指定源字符串的偏移下标(开始点),从这个位置开始拷贝这些字节。字符串的第一个字节是在位置0。
nCount
指定你要从svSrc拷贝到svDest的总的字节数。该值必须不大于svSrc-1的大小。例如,如果svSrc被声明为大小为512(给它最大字符串长度511),则传递给nCount的值必须是511或更少。
返回值:
0:CopyBytes成功地从一个字符串拷贝指定数目的字节到另一个字符串。
< 0:CopyBytes没有能拷贝这些字节。
注解:
当你工作在二进制文件时,CopyBytes有用。
13.2  GetDir
语法:GetDir (szPath, svDir);
说明:GetDir函数从由szPath指定的全限定路径或文件名中删除驱动器指示符,并在参数svDir返回路径或文件名的余项。路径名必须包含一个驱动器指示符。它可以是一个UNC(通用导航计算机)路径。
在下面的例子中,全限定路径C:\Windows在svDir返回为\Windows。
   GetDir("C:\\Windows", svDir);
在下一个例子中,UNC路径\\TheServer\TheSharedDevice\Programs在svDir返回为\Programs。
   GetDir("\\\\TheServer\\TheSharedDevice\\Programs", svDir);
参数:
szPath
指定包含一个驱动器指示符的路径。
svDir
返回没有驱动器指示符的路径。如果szPath是一个UNC路径,GetDir将返回没有服务器名和共享设备名的路径。
返回值:
0:表明函数成功返回没有驱动器指示符的路径名。
<0:表明函数未能返回没有驱动器指示符的路径名。
13.3  GetDisk
语法:GetDisk (szPath, svDisk);
说明:GetDisk函数从由szPath指定的全限定路径或文件名中析取磁盘驱动器指示符。
参数:
szPath
指定一个包含一个驱动器指示符的全限定路径或文件名。如果不包含一个驱动器指示符,GetDisk将失败。传递给szPath的值可以是一个UNC路径。
svDisk
返回驱动器指示符(包含冒号)。如果szPath是一个UNC路径,GetDisk以”\\服务器\共享设备”格式返回服务器名和共享设备名。
返回值:
0:表明函数成功返回驱动器指示符。
< 0:表明函数未能返回驱动器指示符。
13.4  NumToStr
语法:NumToStr (svString, nValue);
说明:NumToStr函数将一个数字转换为一个字符串。
参数:
svString
返回nValue的字符串等价值(等效字符串)。
nValue
指定要转换为一个字符串的数字。
返回值:
0:表明函数成功将数字转换为一个字符串。
< 0:表明函数未能将数字转换为一个字符串。
13.5  ParsePath
语法:ParsePath (svReturnString, szPath, nOperation);
说明:ParsePath函数检索一个存在路径的指定部分。函数可工作于任何有效路径,包括短路径,长路径和UNC路径,它们可能包含或不包含一个具体文件名。下面是可以用该函数分析的一些路径样本:
\Path1\Path2\Filename.exe
Filename
Filename.exe
\Path1\Path2\Filename
D:
D:\
\\Server Name\Share Name\Share Directory
其它任何合法DOS路径。
参数:
svReturnString
返回参数szPath中的路径由参数nOperation所指定的部分。
szPath
指定要分析的路径。当指定一个不包含一个文件名的路径时,你必须在把它传递给ParsePath之前在路径结尾添加一个反斜杠;否则路径的最后部分会被解释为一个文件名。
nOperation
指定返回路径的哪个元素。在该参数位置传递下列预定义常量之一:
DIRECTORY:表明必须在svReturnString返回路径中去除磁盘驱动器字符和文件名。当该选项使用在一个UNC路径时,ParsePath返回没有服务器和共享设备名的路径,并且没有文件名(可能被指定)。例如,UNC路径\\TheServer\TheSharedDevice\TheApp\TheFile.exe在svReturnString返回\TheApp\。
DISK:表明必须在svReturnString返回磁盘驱动器指示符(驱动器字符后随一个冒号)。当该选项使用在一个UNC路径时,ParsePath返回服务器名和共享设备名。例如,UNC路径\\TheServer\TheSharedDevice\TheApp\TheFile.exe在svReturnString返回\\TheServer\TheSharedDevice。
EXTENSION_ONLY:表明必须在svReturnString返回文件扩展名。它不包括句点。
FILENAME:表明必须在svReturnString返回完整的文件名(也就是说,包括它的文件扩展名)。
FILENAME_ONLY:表明必须在svReturnString仅返回文件名(也就是说,不包括它的文件扩展名)。
PATH:表明必须在svReturnString返回路径中去除文件名。该选项和DIRECTORY不同,因为驱动器指示符(如果在szPath中被指定)包括在返回路径中。当szPath指定一个UNC路径时,服务器名和共享设备名被包括在返回路径中。例如,UNC路径\\TheServer\TheSharedDevice\TheApp\TheFile.exe在svReturnString返回\\TheServer\TheSharedDevice\TheApp\。
返回值:
0:表明函数成功分析路径字符串。
< 0:表明函数未能分析路径字符串。
13.6  StrCompare
语法:StrCompare (szStringA, szStringB);
说明:StrCompare函数比较两个字符串。比较不区分大小写。
参数:
szStringA
指定要比较的第一个字符串。
szStringB
指定要比较的第二个字符串。
返回值:
< 0:表明szStringA的字符串的值小于szStringB的字符串的值。
= 0:表明两个字符串相等。
> 0:表明szStringA的字符串的值大于szStringB的字符串的值。
注解:
·StrCompare函数比较两个字符串,通过检验每个字符串中的第一个字符,然后每个字符串中的第二个字符,以次类推,直到它找到一个不相等的字符或到达了字符串结尾。
·你选择的语言的语言驱动程序确定哪个字符串大或字符串相等。如果你不使用一个语言驱动程序,Windows使用一个内部函数。对于一个双字节字符集(DBCS)版本的Windows,该函数可以比较两个DBCS字符串。
13.7  StrFind
语法:StrFind (szString, szFindMe);
说明:StrFind函数确定传递给参数szFindMe的字符串能否在传递给参数szString的字符串中找到。如果szFindMe 在szString 中找到,StrFind返回szFindMe的第一个字符在 szString 中的位置。注意 szString 中第一个字符的位置是0。该函数不区分大小写并且只可以用来找到szFindMe 在szString中首次出现。
下面的例子中,StrFind将返回值13。
   nStartPos = StrFind("Scripting is fun","fun");
如果只需要一个TRUE或FALSE的返回值来指示一个字符串是否包含另一个字符串,(也就是,如果子串的位置是不重要的),使用字符串查找操作符(%),如下所示:
   if (szString % szFindMe) then ...
在if语句中可以被解析的布尔表达式中,你可以只使用字符串查找操作符。你不能在repeat语句或while语句中使用它。
参数:
szString
指定要查找的字符串。
szFindMe
指定要在szString中查找的字符串。
返回值:
X:如果szString包含szFindMe,X是szFindMe中第一个字符的数值位置。SzString中第一个字符是在位置0。
< 0:表明szString不包含szFineMe。
13.8  StrGetTokens
语法:StrGetTokens (listID, szString, szDelimiterSet);
说明:StrGetTokens函数从szString指定的字符串中析取子串(称为令牌)并且把它们放置到listID指定的列表中。SzString中的子串必须被由szDelimiterSet指定的一个或多个字符分隔(相互分隔)。
    例如,如果你调用StrGetTokens,字符串"One;Two;Three;Four;Five"作为第二个参数,";"为第三个参数,"One", "Two", "Three", "Four", 和 "Five"这五个字符串将被返回到listID。使用列表函数,如ListGetFirstString和 ListGetNextString来访问列表中的每个令牌。
    如果szString中的第一个字符与szDelimiterSet中的一个字符匹配,一个空字符串将被插入为列表的第一个元素。同样,如果szString中的最后一个字符与szDelimiterSet中的一个字符匹配,一个空字符串将被插入为列表的最后一个元素。
参数:
listID
返回令牌列表。由listID标识的字符串列表必须已经通过对ListCreate的调用而初始化。
szString
指定要被分析的字符串。
szDelimiterSet
指定一个或多个分隔符的集合。每个分隔符是一个字符(1字节)。如果你在该参数传递一个空字符串,该函数以空字符为分隔符来查找。当你使用GetProfString函数时有用。
当一个空格被指定为分隔符,StrGetTokens将连续的空格处理作一个单独的分隔符。
返回值:
0:表明函数成功分隔字符串并把令牌(token)插入到指定列表中。
< 0:表明函数未能分隔字符串并把令牌插入到指定列表中。
13.9  StrLength
语法:StrLength (szString);
说明:使用StrLength函数得到一个字符串中的字节数。为确定一个字符串中的字符数,使用StrLengthChars。
参数:
szString
指定要确定其大小的字符串。
返回值:
X:X是字符串中的字节数。
< 0:表明函数未能确定字符串中的字节数。
13.10  StrLengthChars
语法:StrLengthChars (szString);
说明:使用StrLengthChars函数得到一个字符串中的字符数。为确定一个字符串中的字节数,使用StrLength。
参数:
szString
指定要确定其大小的字符串。
返回值:
X:X是字符串中的字符数。
< 0:表明函数未能确定字符串中的字符数。
13.11  StrRemoveLastSlash
语法:StrRemoveLastSlash (svPath);
说明:StrRemoveLastSlash函数从一个路径说明中删除结尾反斜杠。
参数:
svPath
指定一个字符串,其值必须是一个路径说明;返回没有结尾反斜杠的路径。注意如果路径不包含一个反斜杠,它不作修改就被返回。
返回值:
0:表明函数成功删除结尾反斜杠或路径不包含一个结尾反斜杠。
< 0:表明函数未能删除结尾反斜杠。
注解:
·StrRemoveLastSlash给将AskPath 或ParsePath返回的路径剪裁掉结尾反斜杠提供了一个便利的途径。因为它的目的是产生一个有效路径名,StrRemoveLastSlash不从一个根目录说明中删除反斜杠,如"A:\"或 "C:\";这样做可将一个有效路径名转换到一个驱动器说明(标识)。你是否需要在任何情况下剪裁掉一个路径的结尾反斜杠,可参考下面的脚本片段。
    AskPath("", "", svPath);
    if (StrLength(svPath) = 3)
       && (svPath[1] = ":")
       && (svPath[2] = "\\") then
       svTempString = svPath;
       StrSub(svPath,svTempString,0,2);
    else
       StrRemoveLastSlash(svPath);
    endif;
13.12  StrSub
语法:StrSub (svSubStr, szString, nStart, nLength);
说明: StrSub函数拷贝szString指定的字符串的部分,从nStart指定的位置开始。参数nLength指定要拷贝的字符数。
参数:
svSubStr
返回从szString拷贝的子串。
szString
指定要从中拷贝子串的字符串。
nStart
指定一个szString中的偏移量来标识要被拷贝的第一个字符。注意szString中的第一个字符的位置是0。如果传递给nStart的值等于或大于szString的长度,在svSubStr返回一个空字符串。
nLength
指定从szString拷贝的字符数。如果该值指定了多于nStart和szString结尾之间的字符数,在svSubStr返回从nStart到字符串结尾的所有字符。
返回值:
X:X等于svSubStr的字符数。
13.13  StrToLower
语法:StrToLower (svTarget, szSource);
说明:StrToLower函数将一个字符串中的所有字母转换为小写。该函数不影响非字母字符。
参数:
svTarget
返回szSource中的字符串,其所有字符均已转换为小写。
szSource
指定均要转换为小写字符的字符串。
返回值:
0:表明函数成功修改了字符串的大小写。
< 0:表明函数未能修改了字符串的大小写。
13.14  StrToNum
语法:StrToNum (nvVar, szString);
说明:StrToNum函数将一个字符串转换为一个数字,与C函数atol()相似。它检查svString,从位置0的字符开始,在字符串中继续直到它到达字符串结尾或遇到一个不在"0".."9"范围内的一个字符。(字符串中的第一个字符可能是一个加号或减号。)将出现下列处理过程:
如果字符串中的所有字符在"0".."9"范围中,由字符串代表的数字赋给nvVar。
如果字符串以一个或多个"0".."9"范围内的字符开始但也包含一个或多个非数字字符,则将出现的第一个非数字字符的左边的所有字符赋给nvVar。例如,如果szString是 "-123ABC456", nvResult将是 –123。
如果字符串的第一个字符不在"0".."9"范围内并且不是一个加号或减号,该函数失败。
如果字符串的第一个字符是一个加号或减号,并且第二个字符不在"0".."9"范围内,该函数失败。
参数:
nvVar
返回从szString的字符串生成的数字。
szString
指定要转换为一个数字的字符串。
返回值:
0:表明函数成功将字符串转换为数值型值。
< 0:表明函数未能将字符串转换为数值型值。
13.15  StrToUpper
语法:StrToUpper (svTarget, szSource);
说明:StrToUpper函数将一个字符串中的所有字母转换为大写。该函数不影响非字母字符。
参数:
svTarget
返回szSource中的字符串,其所有字符均已转换为大写。
szSource
指定均要转换为大写字符的字符串。
返回值:
0:表明函数成功修改了字符串的大小写。
< 0:表明函数未能修改了字符串的大小写。

本文地址:http://com.8s8s.com/it/it29503.htm