410521a 发表于 2010-6-21 15:40:00

ini (IniReadSection)要怎么用`` 以前都可以直接用`附源代码[已解决]

本帖最后由 410521a 于 2010-6-22 17:32 编辑

已解决``非常感谢``不死鸟


晕打错了`` 对不起`` ` 是    不死草

410521a 发表于 2010-6-22 00:32:48

怎么没人帮忙看看`

afan 发表于 2010-6-22 00:35:07

以前帮你看过了……

410521a 发表于 2010-6-22 02:30:30

帮忙说说怎么用呀`` 为什么我以前不加数组`[][]用的就可以``现在不能用了`

afan 发表于 2010-6-22 03:05:32

回复 4# 410521a

你以前可以用并不证明你使用这个函数的代码正确,只是没有遇到报错的条件而已。
或者说这个函数你一直都是错误的在使用。
IniReadSection()从来就是返回数组的。

afan 发表于 2010-6-22 03:14:36

搞不懂你为什么要用“收银助手By:陈伟东QQ:36951881-此行勿删!-否则程序将无法正常运行!!”这么长又容易出错的字串做字段名,而且你居然用位置去判断,更增加了出错的几率

Hen5ei 发表于 2010-6-22 10:31:06

IniReadSection
--------------------------------------------------------------------------------

从某标准配置文件(*.ini)中读取某个节中的所有关键字或值.


IniReadSection ( "文件名", "字段名" )




参数

文件名 目标文件名.
字段名 INI文件中的某个字段名.



返回值

成功: 返回二维数组,其中 element 储存着关键字; 而 element 则储存则对应的数值.
失败: 如果不能读取字段, 将设置 @error=1 (INI文件不存在或者字段不存在).

Hen5ei 发表于 2010-6-22 10:33:18

;==============================================================
;比_FileReadToArray之类的读入数组的方法快N~N千倍…
; 说明: 原IniReadSection函数只有在字段中的前32767字符可以被正常返回,本函数无此限制(初衷在于此)。
;    原IniReadSection函数遇到某些文件特殊的回车及换行组合会停止继续而返回,本函数会完整读出。
;    其它与原IniReadSection函数不同:不返回无关键字的值;既无关键字又无值只有等号的也不被返回。
; 语法: _IniReadSection('ini文件路径', '字段名'[, '打开模式'])
; 参数: 可选参数'打开模式',某些ini文件由于编码问题直接FileRead读不到,加个打开参数(如32)就OK了。
; 返回值:成功: 返回一个二维数组,其中:元素=大小、元素=关键字、元素=对应的数值。
;    失败: 返回0。如INI文件读取错误或字段不存在将设置 @error=1;字段内容为空将设置 @error=2
; 作者: Afan -- http://www.autoitx.com
;==============================================================

或者使用Afan大大的 _IniReadSection UDF

410521a 发表于 2010-6-22 12:59:41

回复 8# Hen5ei


    搞不懂具体怎么使用`

410521a 发表于 2010-6-22 13:05:01

Func du()

      $userbh = GUICtrlRead($Input1_1,"")

      $mdb = IniReadSection($udata, $userbh)

      If $userbh = "" Or $userbh = "请输入18位用户编号" Then

            MsgBox(64, "提示", "代码项不能为空")

                ControlFocus($Form1, "", $Input1_1)

      ElseIf $userbh = $mdb Then

                duru()

      Else

      $tc = MsgBox(32 + 1, "提示", $userbh & @CRLF & "号码不存在" & @CRLF & "点确定添加新用户!!" & @CRLF & "点取消重新填写!!")

            If $tc = 1 Then

                   GUISwitch($Form2)

                   GUISetState(@SW_SHOW)

                   ControlSetText($Form2, "", $Input2_2, $userbh)

             EndIf

      EndIf      

EndFunc

;~ ==============================================================



现在主要是这个不知道怎么写

Hen5ei 发表于 2010-6-22 14:32:54

本帖最后由 Hen5ei 于 2010-6-22 14:41 编辑

ElseIf $userbh = $mdb Then
其中的$mdb = IniReadSection($udata, $userbh)
因为 IniReadSection 成功的返回值如下
成功: 返回二维数组,其中 element 储存着关键字; 而 element 则储存则对应的数值.
所以 $userbh = $mdb 就错了., 应该给为 $userbh = $mdb 或者 $userbh = $mdb

;;=====================以下为数据库=========================================

姓名=张小
性别=女
证件类型=身份证
证件编号=410100000000000000
地址=河南省
根据你提供的INI
$mdb = IniReadSection($udata, "123456")
$mdb = '姓名'$mdb = '性别' $mdb = '证件类型' $mdb = '证件编号' $mdb = '地址'
$mdb = '张小'$mdb = '女' $mdb = '身份证' $mdb = '410100000000000000' $mdb = '河南省'

这样说大概明白了吧

不死草 发表于 2010-6-22 14:53:41

Func du()
      $userbh = GUICtrlRead($Input1_1,"")
      $mdb = IniReadSection($udata,"123456")
      If $userbh = "" Or $userbh = "请输入18位用户编号" Then
            MsgBox(64, "提示", "代码项不能为空")
                ControlFocus($Form1, "", $Input1_1)
      ElseIf $userbh = $mdb Then
                duru()
      Else
      $tc = MsgBox(32 + 1, "提示", $userbh & @CRLF & "号码不存在" & @CRLF & "点确定添加新用户!!" & @CRLF & "点取消重新填写!!")
            If $tc = 1 Then
                   GUISwitch($Form2)
                   GUISetState(@SW_SHOW)
                   ControlSetText($Form2, "", $Input2_2, $userbh)
             EndIf
      EndIf      
EndFunc



其实上面的朋友已经回复了,主要就是IniReadSection()这个你用错了

410521a 发表于 2010-6-22 16:05:59

回复 12# 不死草

这后边的字段名是我要从 下边这个Input1_1 读到的数据呀`
$userbh = GUICtrlRead($Input1_1,"")

410521a 发表于 2010-6-22 16:11:10

$userbh = GUICtrlRead($Input1_1,"")   

难道是这个错了? 后边不应该加引号?》
GUICtrlRead ( 控件ID [, 高级] )

afan 发表于 2010-6-23 14:12:26

LZ不要删除1#问题内容,否则扣分删帖。
页: [1] 2
查看完整版本: ini (IniReadSection)要怎么用`` 以前都可以直接用`附源代码[已解决]