xavier880819 发表于 2009-8-28 13:53:44

对于回显问题,希望有大虾可以对我在12楼的问题给支个招

paulzhu 发表于 2009-8-28 14:54:36

高深,我是看不懂了

paulzhu 发表于 2009-8-28 14:54:43

太复杂了,

afan 发表于 2009-8-28 17:59:46

这个在Dos里面应该是使用了sprintf() 函数,格式化让其同一行显示。
au3里面可以试试StringFormat或者StringRegExpReplace,不过估计很难搞。

不知道你要实现这个回显的目的?有时不一定非得走一条道...

xavier880819 发表于 2009-8-31 13:36:30

19# afan


倒没有什么特殊的目的,就是想让这个回显能像DOS里面那样会比较好看

xavier880819 发表于 2009-8-31 13:53:19

算了,这个倒不算是什么大问题,不好看也无所谓了。
再请问一下大家,在回显里面的东西,最后可以存到一个.log或者.txt的文件里面吗?谢谢了!

afan 发表于 2009-8-31 14:06:23

本帖最后由 afan 于 2009-8-31 14:16 编辑

在回显的那一句 GUICtrlSetData($myedit, $line, -1) 下面加一行

FileWrite('1.txt', $line & @CRLF)

xavier880819 发表于 2009-8-31 14:34:10

22# afan

好的,谢谢afan,我去试试看

xavier880819 发表于 2009-8-31 14:41:50

确实可以记录,但是记录出来的txt文件是不连贯的,查看起来非常不方便,中间空了很多行。这个问题能不能得到解决呢??

afan 发表于 2009-8-31 16:14:00

最后再用以下函数加个删除空行不就行了,呵呵
_FileReadToArray
_FileWriteToLine

xavier880819 发表于 2009-8-31 16:32:31

25# afan


原来还可以这样,我去试试看

xavier880819 发表于 2009-8-31 17:02:53

我去看了帮助,但是不是很明白。特别是_FileWriteToLine,还要定义需要写的第几行需要写入。这个貌似存在一点问题。

请问afan可以给出一点例子么?

afan 发表于 2009-8-31 18:15:08

#include <File.au3>
Dim $aArray2, $b
_FileReadToArray('1.txt', $aArray2)
For $x = 1 To $aArray2
        If $aArray2[$x] = "" Then
                _FileWriteToLine('1.txt', $x - $b, '', 1)
                $b += 1
        EndIf
Next

xavier880819 发表于 2009-9-1 09:13:40

28# afan


谢谢afan,我去试试看

xavier880819 发表于 2009-9-1 09:58:15

好像还是不行,我调试过放在不同的地方也不行#Region ;
#AutoIt3Wrapper_UseAnsi=y
#EndRegion ;
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <Constants.au3>
#include <StaticConstants.au3>
#include <Date.au3>
#include <File.au3>

GUICreate("Formater Ver 1.4", 633, 380, 193, 125)
Dim $xz, $a, $b, $zx, $Q, $F, $ff,$H, $M, $S,$aArray2, $z,$x
Local $add, $clear, $mylist, $Button1, $sf, $format
$myedit = GUICtrlCreateEdit("", 5, 32, 620, 200)
$Button1 = GUICtrlCreateButton("Start Format Disc", 380, 250, 245, 33, 0)
GUICtrlCreateGroup("Choose Format Way", 230, 250, 140, 100)
$Q = GUICtrlCreateRadio("Quick Format", 250, 280, 100, 20)
$F = GUICtrlCreateRadio("Full Format", 250, 300, 100, 20)
GUICtrlCreateGroup("", -99, -99, 1, 1) ;close group
GUISetState()
$var = DriveGetDrive("REMOVABLE")
$xz = GUICtrlCreateCombo("Select The Disc", 20, 250, 200, 30)
For $i = 1 To $var
GUICtrlSetData($xz, $var[$i])
Next

GUISetState(@SW_SHOW)

While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
Exit

Case $Button1
$F111 = MsgBox(1 + 48, 'Attention', 'Are you sure you want to format this disc?')
Select
Case $F111 = 1
If BitAND(GUICtrlRead($Q), $GUI_CHECKED) Then $format = '/Q/'
If BitAND(GUICtrlRead($F), $GUI_CHECKED) Then $format = '/'
_test()

Case $F111 = 2
ContinueLoop
EndSelect

EndSwitch
WEnd

Func _test()
Local $foo, $line, $lines, $currentRead
$a = TimerInit()
$zx = GUICtrlRead($xz)
$foo = Run(@ComSpec & " /c " & 'Format ' & $zx & '/FS:FAT32/V:Haha' & $format & 'X/Y', "", @SW_HIDE, $STDOUT_CHILD)
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
GUICtrlSetData($myedit, $line, -1)
FileWrite(@ScriptDir & "\1.txt", $line & @CRLF)
_FileReadToArray(@ScriptDir & "\1.txt", $aArray2)
For $x = 1 To $aArray2
If $aArray2[$x] = "" Then
_FileWriteToLine(@ScriptDir & "\1.txt", $x - $z, '', 1)
$z += 1
EndIf
Next
WEnd
$b = TimerDiff($a)
$c = $b / 1000
_TicksToTime(Int($b), $H, $M, $S)
Msgbox(64,"Finish","This format cost you" & $H & ' Hours ' & $M & ' Minutes ' & $S & ' Seconds')

EndFunc;==>_test
页: 1 [2] 3
查看完整版本: 用TimerInit 和 TimerDiff统计是时间取整的问题。