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

📄 rwi-ni.bas

📁 无线传感器网络节点的定位引擎程序
💻 BAS
字号:
Attribute VB_Name = "Module2"
Option Explicit

'/************************************************************/
'/*                      == 模块说明 ==                      */
'/*                                                          */
'/*     这个程序中有几个功能能否得到正确的结果, 关键就在于声 */
'/* 明方式是否正确。程序中对API的声明语句中, 有三个API函数是 */
'/* 被注释了的,它们分别和它上面的函数是相同的,只是参数类型 */
'/* 有所不同,请仔细阅读。这三条被注释了的声明语句是VB中自带 */
'/* 的API浏览器原始声明,但这不能使我们程序中所有的语句都得到 */
'/* 正确的结果,于是我修改了它们的声明方式。                 */
'/*                                           2002.11.15     */
'/* ======================================================== */
'/*                     ★ 本站声明 ★                       */
'/*                                                          */
'/*     本站所写的代码中加上了大量的注释信息,由于每个程序员 */
'/* 对VB的设置不尽相同,如果代码(尤其是注释部分)的显示零乱无 */
'/* 顺,请在VB的选项中将代码字体设置为"Fixedsys"。           */
'/*                                                          */
'/*     作者不承诺该本例是解此类问题的唯一方案,只是为了演示 */
'/* 而作。                                                   */
'/*                                                          */
'/*     如果您要转摘本代码,请保留原代码中的所有内容,包括注 */
'/* 释部分,以示对作者劳动的尊重,谢谢!如发现代码有问题,可 */
'/* 与作者联系。                                             */
'/*     本代码作者:VB超市站长-宋耀武                     */
'/*     http://vbsupermarket.yeah.net                        */
'/*     E-Mail: songyaowu0001@sohu.com                       */
'/*             renhengsoft@hotmail.com                      */
'/************************************************************/

'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'%%     注意下面被注释的三个声明语句与新的声明有何不同      %%
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long
'Public Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
'Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As Any, ByVal lpKeyName As Any, ByVal lpDefault As Any, ByVal lpReturnedString As Any, ByVal nSize As Long, ByVal lpFileName As String) As Long
'Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

'*******************************************
'   从*.ini文件中读一个条目
'*******************************************
Public Function ReadProFileString(Section As String, Key As String, iniFile As String) As String
    Dim X As Long, buff As String, i As Integer
    
    buff = String(255, 0)
    
    X = GetPrivateProfileString(Section, Key, "", buff, 255, iniFile)

    ReadProFileString = Left(buff, X)
End Function

'*****************************************************
'   读取*.ini文件中的所有项目
'=====================================================
'   lpFilename - *.ini文件名
'   SectionArry() - 存储返回的项目
'=====================================================
'   函数返回数组的最大下标值。(数组最小下标值为0)
'   若没有找到任何值则函数返回-1
'*****************************************************
Public Function GetPrivateProfileAllSection(SectionArry() As String, lpFileName As String) As Long
    Dim s As String
    Dim i, Max As Integer
    
    s = Space(1024)
    GetPrivateProfileString 0&, 0&, "", s, 1024, lpFileName
    
    SectionArry = Split(s, Chr(0))
    Max = UBound(SectionArry) - 2
    If Max >= 0 Then
        ReDim Preserve SectionArry(Max)
    End If
    GetPrivateProfileAllSection = Max
End Function

'***********************************************************************************
'   读取*.ini文件中指定小节下的所有关键字和值,每个关键字和值在数组中的位置一一对应
'===================================================================================
'   pFile - *.ini文件名
'   KeyString - 小节名
'   KeyArry() - 存储返回的所有关键字
'   ValueArry() - 存储返回的所有键值
'===================================================================================
'   函数返回关键字和键值数组的最大下标值。(数组最小下标值为0)
'***********************************************************************************
Public Function GetPrivateProfileSectionKeyValue(SectionName As String, pFile As String, KeyArry() As String, ValueArry() As String) As Long
    Dim TempStr As String
    Dim i, j, Max As Integer
    Dim Rcode As Integer
    Dim StringArry() As String
    Dim l As Long
    
    TempStr = Space(32676)

    l = GetPrivateProfileSection(SectionName, TempStr, 32676, pFile)
    
    If l <> 0 Then
        TempStr = RTrim$(TempStr)
        TempStr = Replace(TempStr, "=", Chr(0))
        StringArry = Split(TempStr, Chr(0))
        Max = UBound(StringArry) - 2
        Rcode = (Max - 1) / 2
        
        ReDim KeyArry(Rcode)
        ReDim ValueArry(Rcode)
        j = 0
        For i = 0 To Rcode
            KeyArry(i) = StringArry(j)
            j = j + 1
            ValueArry(i) = StringArry(j)
            j = j + 1
        Next
        Erase StringArry
    Else
        Rcode = -1
    End If
    GetPrivateProfileSectionKeyValue = Rcode
End Function

⌨️ 快捷键说明

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