gpt4 book ai didi

mysql - 刚接触 autoit,这个变量有什么问题吗?

转载 作者:行者123 更新时间:2023-11-29 23:19:22 27 4
gpt4 key购买 nike

所以今天我刚刚开始学习这门语言,我正在尝试使用 https://www.autoitscript.com/autoit3/docs/functions 中的部分示例脚本来制作我的脚本。 .

我正在尝试运行 mysql 查询,但即使它声明为全局查询,我也会收到“变量未声明”错误(至少我认为我将其声明为一个......)

基本上,我的脚本应该做的是为 LAN 中的每台计算机创建一个 ID,将其存储到 AppData 中的 txt 文件中,然后将其插入数据库中。

#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include "EzMySql.au3"
#include <Array.au3>

Example()

Func Example()
$id = Random(1, 1000, 1);Numar random de la 1 la 100
Local Const $sFilePath = @AppDataDir & "\id.txt" ; Selectare %appdata% si id.txt
Local $iFileExists = FileExists($sFilePath)
If $iFileExists Then

Else
; Create a temporary file to write data to.
If Not FileCreate($sFilePath, $ID & @CRLF) Then Return MsgBox($MB_SYSTEMMODAL, "", "O eroare s-a produs in timp ce se scria fila temporara")

; Open the file for writing (append to the end of a file) and store the handle to a variable.
Global $hFileOpen = FileOpen($sFilePath, $FO_APPEND)
If $hFileOpen = -1 Then
MsgBox($MB_SYSTEMMODAL, "", "O eroare s-a produs in timp ce se citea fila.")
Return False
EndIf

; Read the contents of the file using the handle returned by FileOpen.
Global $sFileRead = FileRead($hFileOpen)
; Close the handle returned by FileOpen.
FileClose($hFileOpen)

EndIf
EndFunc

; Create a file.
Func FileCreate($sFilePath, $sString)
Local $bReturn = True ; Create a variable to store a boolean value.
If FileExists($sFilePath) = 0 Then $bReturn = FileWrite($sFilePath, $sString) = 1 ; If FileWrite returned 1 this will be True otherwise False.
Return $bReturn ; Return the boolean value of either True of False, depending on the return value of FileWrite.
EndFunc ;==>FileCreate

$name=@ComputerName
If Not _EzMySql_Startup() Then
MsgBox(0, "Error Starting MySql", "Error: "& @error & @CR & "Error string: " & _EzMySql_ErrMsg())
Exit
EndIf

If Not _EzMySql_Open("127.0.0.1", "root", "", "vrgaming", "3306") Then
MsgBox(0, "Error opening Database", "Error: "& @error & @CR & "Error string: " & _EzMySql_ErrMsg())
Exit
EndIf

If Not _EzMySql_Exec("INSERT INTO `lan` (id, nume) VALUES ('"& $sFileRead &"', '"& $name &"')") Then
MsgBox(0, "Error opening Database", "Error: "& @error & @CR & "Error string: " & _EzMySql_ErrMsg())
Exit
EndIf

_EzMySql_Close()
_EzMySql_ShutDown()
Exit

最佳答案

代码存在许多逻辑问题,这使得理解起来有点棘手。

这种情况下的错误几乎肯定是因为“id.txt”存在而引起的,因此 $iFileExists 计算结果为 true,并且从未创建全局变量。

然后,在读取所有数据之前,您将创建一个新的“id.txt”用于写入,因此 $sFileRead 将始终为空,并且当您尝试从打开的写入文件中读取时,FileRead 将设置 @error 。

现在,我认为您希望 $sFileRead 是 id.txt 的内容,并且 id.txt 应该使用新的随机 id 创建(如果它不存在)。如果是这样,那么您需要将打开和读取文件的代码移到 Else...Endif block 之外(除了将 FileOpen 更改为使用 $FO_READ 之外)。

这个答案没有解决有问题的编程实践和代码结构。

关于mysql - 刚接触 autoit,这个变量有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com