Что нового

Чтение строки из csv по нажатию кнопки в gui

nargoseo

Новичок
Сообщения
10
Репутация
0
Помогите новичку решить проблему, при нажатии на кнопку "read" информация считывается из файла нормально, однако при повторном нажатии выдает ошибку: "Array variable has incorrect number of subscripts or subscript dimension range exceeded.:"

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <EditConstants.au3>
#include <ColorConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <String.au3>

$csvDelimiter = ";"

$hFile = FileOpen(@ScriptDir & '\servers1.csv', 0)
$i = 2
$hGui = GUICreate("window",200,380, -1, -1)
WinSetOnTop($hGui, "", $WINDOWS_ONTOP)
$start = GUICtrlCreateButton("read", 10, 40, 70, 50)
$close = GUICtrlCreateButton("Close", 10, 280, 70, 50)
GUISetState()

While 1
Switch GUIGetMsg()
	Case $GUI_EVENT_CLOSE, $close
		Exit
	Case $start
		read()
EndSwitch
WEnd


Func read()
$readline = FileReadLine($hFile, $i)
If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
    Exit
EndIf
$data = StringSplit($readline, $csvDelimiter)
$cell1 = $data[1]
$cell2 = $data[2]
$cell3 = $data[3]
$cell4 = $data[4]
ConsoleWrite("ячейка 1 - " & $cell1 & @CRLF)
ConsoleWrite("ячейка 2 - " & $cell2 & @CRLF)
ConsoleWrite("ячейка 3 - " & $cell3 & @CRLF)
ConsoleWrite("ячейка 4 - " & $cell4 & @CRLF)
FileClose($hFile)
EndFunc
 

hedji

Продвинутый
Сообщения
408
Репутация
88
Код:
$hFile = FileOpen(@ScriptDir & '\servers1.csv', 0) ;файл открыли

Func read()
$readline = FileReadLine($hFile, $i) ;при первом нажатии файл еще открыт и можно прочитать

FileClose($hFile) ;файл закрыли, больше из него читать нельзя
EndFunc


Либо FileClose($hFile) закомментируйте, либо $hFile = FileOpen(@ScriptDir & '\servers1.csv', 0) перенесите внутрь функции read() перед $readline
 
Автор
N

nargoseo

Новичок
Сообщения
10
Репутация
0
Все работает, спасибо за быстрый ответ!
 
Верх