找回密码
 加入
搜索
查看: 3665|回复: 14

关于 iniWrite 语句的问题

[复制链接]
发表于 2008-5-22 22:21:40 | 显示全部楼层 |阅读模式
[au3]        If GUICtrlRead($Tab2Input1) <> "" then
                IniWrite("C:\set.ini", "Run", "Soft1",$Tab2Input1)
        EndIf
        If GUICtrlRead($Tab2Input2) <> "" then
                IniWrite("C:\set.ini", "Run", "Soft2",$Tab2Input2)
        EndIf
        If GUICtrlRead($Tab2Input3) <> "" then
                IniWrite("C:\set.ini", "Run", "Soft3",$Tab2Input3)
        EndIf[/au3]

$Tab2Input 里是文件目录(例如 D:\soft1.exe),写入到 set.ini 里,soft= 后面却全部变成了数字!

怎样才能使他还是文件目录(字符串)?

[ 本帖最后由 陌上风 于 2008-5-23 18:34 编辑 ]
 楼主| 发表于 2008-5-23 10:31:34 | 显示全部楼层
自己顶上去。
前面要声明什么吗?
发表于 2008-5-23 10:39:25 | 显示全部楼层
尝试以下代码。。。

$var1=GUICtrlRead($Tab2Input1)
$var2=GUICtrlRead($Tab2Input2)
$var2=GUICtrlRead($Tab2Input3)

If  $var1<> "" then
        IniWrite("C:\set.ini", "Run", "Soft1",$var1)
    EndIf
If  $var2<> "" then
        IniWrite("C:\set.ini", "Run", "Soft2",$var2)
    EndIf
If  $var3<> "" then
        IniWrite("C:\set.ini", "Run", "Soft3",$var3)
    EndIf
发表于 2008-5-23 12:43:05 | 显示全部楼层
[au3]        If GUICtrlRead($Tab2Input1) <> "" then
                IniWrite("C:\set.ini", "Run", "Soft1",GUICtrlRead($Tab2Input1))
        EndIf
        If GUICtrlRead($Tab2Input2) <> "" then
                IniWrite("C:\set.ini", "Run", "Soft2",GUICtrlRead($Tab2Input2))
        EndIf
        If GUICtrlRead($Tab2Input3) <> "" then
                IniWrite("C:\set.ini", "Run", "Soft3",GUICtrlRead($Tab2Input3))
        EndIf[/au3]
 楼主| 发表于 2008-5-23 13:53:15 | 显示全部楼层
3 的方法不行,5楼的只能向 soft1 写入数据,后面的都不行,却是为何?

[ 本帖最后由 陌上风 于 2008-5-23 14:12 编辑 ]
 楼主| 发表于 2008-5-23 14:25:04 | 显示全部楼层
找到解决方法了,还必须先清空 set.ini 原有数据:
IniWrite("C:\set.ini", "Run", "Soft1","")
IniWrite("C:\set.ini", "Run", "Soft2","")
IniWrite("C:\set.ini", "Run", "Soft3","")

顺便再问个问题,写入的数据如何给它自动加入双引号 "" 呢?例如 Soft1=D:\abc.exe 自动变成  Soft1="D:\abc.exe"

如果不加双引号 "" 的话,我要用 runwait 调用 D:\abc.exe ,如何处理?

$soft1=IniRead("C:\set.ini","Run","Soft1","")
Runwait($soft1)
肯定是不行的

[ 本帖最后由 陌上风 于 2008-5-23 15:25 编辑 ]
发表于 2008-5-23 17:08:47 | 显示全部楼层
IniWrite("C:\set.ini", "Run", "Soft1",'"D:\abc.exe"')

这样写,关键就是,应该用单引号(')'来将双引号(")括起来
发表于 2008-5-23 17:14:28 | 显示全部楼层
但是你在7楼的疑问是没有必要的,你试过了没有:
$soft1=IniRead("C:\set.ini","Run","Soft1","")
Runwait($soft1)
肯定是不行的

就我自己试验,绝对的没有问题……
 楼主| 发表于 2008-5-23 18:26:03 | 显示全部楼层
回复九楼:
假设 set.ini 里是这样的:
Soft1=D:\abc.exe

那么用这个调用是不行的:
$soft1=IniRead("C:\set.ini","Run","Soft1","")
Runwait($soft1)

因为此时 $soft1 的值是D:\abc.exe
那么 Runwait($soft1) 实际执行的是 Runwait(D:\abc.exe),肯定会错啦,必须是  Runwait("D:\abc.exe") 才行

也就是说 set.ini 里必须这样写才行:
Soft1="D:\abc.exe"
 楼主| 发表于 2008-5-23 18:31:50 | 显示全部楼层
向 set.ini 写入引号的方法已解决(用 "" 扩住单引号 ' ,再加 2 个连接符& ):
这样就可以用 runwait($soft1)直接调用了

[au3]If GUICtrlRead($Tab2Input1) <> "" then
        IniWrite("C:\set.ini", "Run", "Soft1","'"&GUICtrlRead($Tab2Input1)&"'")
Endif[/au3]

[ 本帖最后由 陌上风 于 2008-5-23 18:37 编辑 ]
发表于 2008-5-23 20:05:52 | 显示全部楼层
原帖由 陌上风 于 2008-5-23 18:26 发表
回复九楼:
假设 set.ini 里是这样的:
Soft1=D:\abc.exe

那么用这个调用是不行的:
$soft1=IniRead("C:\set.ini","Run","Soft1","")
Runwait($soft1)

因为此时 $soft1 的值是D:\abc.exe
那么 Runwait( ...

OK,请问你自己实地测试了没有?不要主观想像,我客观上用代码运行过,证明我是对的
 楼主| 发表于 2008-5-23 20:16:21 | 显示全部楼层
回复 12 楼:
我当然是测试过的啦,否则我也不会问后面的问题了。我这里测试的那样写会出错。
发表于 2008-5-24 12:27:47 | 显示全部楼层
原帖由 陌上风 于 2008-5-23 20:16 发表
回复 12 楼:
我当然是测试过的啦,否则我也不会问后面的问题了。我这里测试的那样写会出错。

请告知autoit的版本号
发表于 2008-5-24 13:51:59 | 显示全部楼层

runwait("$soft1")
发表于 2012-12-5 11:21:48 | 显示全部楼层
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 09:29 , Processed in 0.147020 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表