Что нового

Как построчно загрузить файл в listbox

Nbv_tim

Новичок
Сообщения
47
Репутация
1
никак не получается построчно прогрузить файл то одна строка из каждого файла то вообще ничего.
Код:
func addstr()
	For $i = 1 To UBound($aArrey) -1 
	$file = FileOpen($aArrey[$i] & "STATUS.txt",0)
	check()
next
EndFunc
	func check()

	$line = FileReadLine($file) 
	GUICtrlSetData($List1,$line)

вначале перебираю файл далее его открываю и сразу вызываю функцию чтения строк. как только прочитал, записываю в listbox. если брать просто fileread то он в одну строку все запихивает.
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Nbv_tim
Можно попробовать использовать в качестве разделителя перевод строки и возврат каретки @CRLF...

Код:
aaaaaaa
bbbbbbbbb
ccccccccccc
ddddddddd
eeeeeeeeeee

Код:
; НАЧАЛО

 $GUI=GUICreate('Список из файла')
 $LIST=GUICtrlCreateList('',10,10)

 $FILE=FileOpen('file.txt',0)
 $TEXT=FileRead($FILE)

 Opt("GUIDataSeparatorChar",@CRLF) 

 GUICtrlSetData($LIST,@CRLF&$TEXT)

 GUISetState()

 While True
  Switch GUIGetMsg()
   Case -3
    Exit
  EndSwitch
 WEnd

; КОНЕЦ
 
Автор
N

Nbv_tim

Новичок
Сообщения
47
Репутация
1
snoitaleR сказал(а):
Nbv_tim
Можно попробовать использовать в качестве разделителя перевод строки и возврат каретки @CRLF...

Код:
aaaaaaa
bbbbbbbbb
ccccccccccc
ddddddddd
eeeeeeeeeee

Код:
; НАЧАЛО

 $GUI=GUICreate('Список из файла')
 $LIST=GUICtrlCreateList('',10,10)

 $FILE=FileOpen('file.txt',0)
 $TEXT=FileRead($FILE)

 Opt("GUIDataSeparatorChar",@CRLF) 

 GUICtrlSetData($LIST,@CRLF&$TEXT)

 GUISetState()

 While True
  Switch GUIGetMsg()
   Case -3
    Exit
  EndSwitch
 WEnd

; КОНЕЦ

Там вся проблема в том что там нет перевода каретки файл делается в linux если его открывать на редактирование то данные в одну строчку если на чтение то построчно. поэтому readline могу вытащить строки а вот fileread не получается
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Nbv_tim,
Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 
Автор
N

Nbv_tim

Новичок
Сообщения
47
Репутация
1
файл такого типа
ааааааааbbbbbbbcccccccccddddddd если на редактирование если на чтение открывать
то
аааааааа
bbbbbbbb
cccccccccc
dddddddd
readline работает но только на одной строке и затыкается если fileread то все в одну строку
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
А если так?
Код:
$aLines = StringSplit(FileRead("file.txt"), @LF)
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Nbv_tim
В Linux строки разделяются символом "перевод строки" @LF.
Тогда надо будет подправить две строки в скрипте:

Код:
Opt("GUIDataSeparatorChar",@LF)

 GUICtrlSetData($LIST,@LF&$TEXT)
 
Автор
N

Nbv_tim

Новичок
Сообщения
47
Репутация
1
alex33 сказал(а):
Разделитель воткнуть ну в принципе наверно можно, вроде сделал
Код:
func check()
for $i=1 to 5
	$line = FileReadline($file) 
	Opt("GUIDataSeparatorChar",@LF) 
	_GUICtrlListBox_AddString($List1,@LF&$line)
Next
	FileClose($file)

все загрузил сортировку убрал))
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Я обычно проверяю любой текст из файла или буфера обмена:
Код:
Select
    Case StringInStr($sOut, @CRLF) > 0
        $sDelimiter = @CRLF
    Case StringInStr($sOut, @LF) > 0
        $sDelimiter = @LF
    Case Else
        $sDelimiter = @CR
EndSelect

На всякий случай, даже если точно знаю, какое окончание строк (достаточно было один раз столкнуться с неприятностью :smile:).
 
Автор
N

Nbv_tim

Новичок
Сообщения
47
Репутация
1
Skif_off сказал(а):
Я обычно проверяю любой текст из файла или буфера обмена:
На всякий случай, даже если точно знаю, какое окончание строк (достаточно было один раз столкнуться с неприятностью :smile:).
обычно не люблю код нагромождать доп проверками, текстовик у меня sed в шел скрипте обрабатывается налету при формировании. за скрипт спасибо, обязательно где-нибудь пригодится.
 
Верх