找回密码
 加入
搜索
查看: 6145|回复: 9

[AU3基础] 文本内行的写入与删除

  [复制链接]
发表于 2012-5-2 08:37:53 | 显示全部楼层 |阅读模式
悬赏10金钱已解决
本帖最后由 xyhqqaa 于 2012-5-2 08:41 编辑

,关于在文本内的写入与删除。。当我选择某项的时候,就自动在文本相应行内写入相应数据。当我去掉某项的时候,自动从文本内删除相应数据。但是现在遇到的问题是,文本为空,比如当我添加完第三项跟第四项,相应的,我删除第三跟四的时候却没删除,,主要原因估计是参数只能删除对应行,但是我写入的时候,却是没法根据行写入。。。。。说的有点乱、。。希望有大哥能看懂,,代码如下。。。测试有错
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 226, 251, 430, 206)
$Check1 = GUICtrlCreateCheckbox("Checkbox1", 80, 32, 97, 17)
$Check2 = GUICtrlCreateCheckbox("Checkbox2", 80, 64, 97, 17)
$Check3 = GUICtrlCreateCheckbox("Checkbox3", 80, 104, 97, 17)
$Check4 = GUICtrlCreateCheckbox("Checkbox4", 80, 136, 97, 17)
$Button1 = GUICtrlCreateButton("写入", 80, 176, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        _check()
        EndSwitch
WEnd
Func _check()
        If GUICtrlRead($check1) = $GUI_CHECKED Then
                _FileWriteToLine("c:\test.txt", 1, "Checkbox1", 1)
        ElseIf GUICtrlRead($check1) =$GUI_UNCHECKED  Then
                _FileWriteToLine("c:\test.txt", 1, "", 1)
        EndIf 
        If GUICtrlRead($check2) = $GUI_CHECKED Then
                _FileWriteToLine("c:\test.txt", 2, "Checkbox2", 1)
        ElseIf GUICtrlRead($check2) = $GUI_UNCHECKED Then
                _FileWriteToLine("c:\test.txt", 2, "", 1)
        EndIf
        If GUICtrlRead($check3) = $GUI_CHECKED Then
                _FileWriteToLine("c:\test.txt", 3, "Checkbox3", 1)
        ElseIf GUICtrlRead($check3) = $GUI_UNCHECKED Then
                _FileWriteToLine("c:\test.txt", 3, "", 1)
        EndIf
        If GUICtrlRead($check4) = $GUI_CHECKED Then
                _FileWriteToLine("c:\test.txt", 4, "Checkbox4", 1)
        ElseIf GUICtrlRead($check4) = $GUI_UNCHECKED Then
                                _FileWriteToLine("c:\test.txt", 4, "", 1)
        EndIf
EndFunc   ;==>_check
附件: 您需要 登录 才可以下载或查看,没有账号?加入

最佳答案

查看完整内容

[au3]#include #include #include #include #region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 226, 251, 430, 206) $Check1 = GUICtrlCreateCheckbox("Checkbox1", 80, 32, 97, 17) $Check2 = GUICtrlCreateCheckbox("Checkbox2", 80, 64, 97, 17) $Check3 = GUICtrlCreateCheckbox("Checkbox3", 80, 104, 97, 17) $Check4 = GUICtrlCreateCheckbox("Checkbox4", 80, 136, 97, 17) $Button1 = GUICt ...

评分

参与人数 1金钱 +20 收起 理由
user3000 + 20 鼓励及时改标题为'已解决'

查看全部评分

发表于 2012-5-2 08:37:54 | 显示全部楼层
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 226, 251, 430, 206)
$Check1 = GUICtrlCreateCheckbox("Checkbox1", 80, 32, 97, 17)
$Check2 = GUICtrlCreateCheckbox("Checkbox2", 80, 64, 97, 17)
$Check3 = GUICtrlCreateCheckbox("Checkbox3", 80, 104, 97, 17)
$Check4 = GUICtrlCreateCheckbox("Checkbox4", 80, 136, 97, 17)
$Button1 = GUICtrlCreateButton("写入", 80, 176, 75, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        _check()
        EndSwitch
WEnd

Func _check()
        Local $string = ""
        
        For $i = 1 To 4
                If BitAND(GUICtrlRead(Eval("Check" & $i)), $GUI_CHECKED) Then
                        $string &= "Check" & $i & @CRLF
                EndIf
        Next
        _FileWrite("c:\test.txt", $string, 2)
EndFunc   ;==>_check

Func _FileWrite($file, $str, $flag)
        ;$str = StringRegExpReplace($str, '\r\n(?=$)', '')
        Local $open = FileOpen($file, $flag)
        FileWrite($open, $str)
        FileClose($open)
EndFunc   ;==>_FileWrite

评分

参与人数 1金钱 +10 贡献 +10 收起 理由
xyhqqaa + 10 + 10 相对上面的大哥们写的。。对比下,。这写的 ...

查看全部评分

发表于 2012-5-2 09:45:59 | 显示全部楼层
未清楚 _FileWriteToLine 的工作原理, 经多次测试, 最后一行总无法实现重写!
现在采取迂回战术. 在 Window 里, 文本的换行其实是 等于 '换行加回车'  @CRLF
所以:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
Local $nMsg
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 226, 251, 430, 206)
$Check1 = GUICtrlCreateCheckbox("Checkbox1", 80, 32, 97, 17)
$Check2 = GUICtrlCreateCheckbox("Checkbox2", 80, 64, 97, 17)
$Check3 = GUICtrlCreateCheckbox("Checkbox3", 80, 104, 97, 17)
$Check4 = GUICtrlCreateCheckbox("Checkbox4", 80, 136, 97, 17)
$Button1 = GUICtrlCreateButton("写入", 80, 176, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
 
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        _check()
        EndSwitch
WEnd
Func _check()
            Local $file = 'C:\test.txt'
            Local $str[4] = ['line 1', 'line 2', 'line 3', 'line 4']
                Local $txt = '', $index = 0
                For $i = $check1 To $Check4
                        If GUICtrlRead($i) = $GUI_CHECKED Then 
                        $txt &= $str[$index] & @CRLF
                Else
                        $txt &= @CRLF
                EndIf
                $index += 1
        Next
        $handle = FileOpen($file, 2)
        FileWrite($handle, $txt)
        FileClose($handle)
EndFunc   ;==>_check

评分

参与人数 1金钱 +10 贡献 +8 收起 理由
xyhqqaa + 10 + 8 代码对我们新人而言比较容易理解,也跟我之 ...

查看全部评分

发表于 2012-5-2 09:51:33 | 显示全部楼层
本帖最后由 netegg 于 2012-5-2 09:56 编辑

[au3]Local $msg, $ret=''
While 1
        $msg = GUIGetMsg()
       if $msg = $button then
        Switch $gui_checked
                Case GUICtrlRead($check1)
                        $ret &= GUICtrlRead($check1, 1) & @crlf
                        ContinueCase
                Case GUICtrlRead($check2)
                        $ret &= GUICtrlRead($check2, 1) & @crlf
                        ContinueCase
                Case GUICtrlRead($check3)
                        $ret &= GUICtrlRead($check3, 1) & @crlf
                        ContinueCase
                Case GUICtrlRead($check4)
                        $ret &= GUICtrlRead($check4, 1) & @crlf
        EndSwitch
        FileOpen($file, 1)
        FileWrite($file, $ret)
        FileClose($file)
      elseif $msg= -3 then
        exitloop
     endif
WEnd
[/au3]

评分

参与人数 1金钱 +10 贡献 +2 收起 理由
xyhqqaa + 10 + 2 蛋蛋哥。。代码测试好像有点问题。。但是不 ...

查看全部评分

发表于 2012-5-2 11:21:53 | 显示全部楼层
楼上高人速度好快啊
发表于 2012-5-2 11:54:39 | 显示全部楼层
回复 4# netegg
貌似蛋哥的方法比较简单,重写文本,管你几行。
发表于 2012-5-2 13:11:08 | 显示全部楼层
本帖最后由 魔导 于 2012-5-2 13:12 编辑

小弟来学习学习,这个用来做记录的吗?

还有:如果问题已解决的话  请楼主 标注 [已解决]
发表于 2012-5-2 17:47:40 | 显示全部楼层
有好源码更新,谢谢楼主提供

评分

参与人数 1金钱 -4 收起 理由
netegg -4

查看全部评分

发表于 2012-5-2 20:39:17 | 显示全部楼层
已解决为绿色怎么搞的
发表于 2012-5-2 20:48:07 | 显示全部楼层
已解决为绿色怎么搞的
502762378 发表于 2012-5-2 20:39



    悬赏主题

评分

参与人数 1贡献 +2 收起 理由
user3000 + 2 不能手动移走?

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-19 05:35 , Processed in 0.125054 second(s), 32 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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