Автор Тема: [Массивы] строки тхт файла считать в массив и отобразить GUICtrlListView  (Прочитано 207 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн boomerang69 [?]

  • Новичок
  • *
  • Сообщений: 3
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Здравствуйте гуру!
Имеется txt  файл
(нажмите для показа/скрытия)
Нужно получить таблицу с шестью колонками - "Дата|Участники|Место|Начало|Scored|Конец" и сответственно данные в строках в этих колонках.
Количество строк в файле может менятсья.

У меня получилось заполнить только первую колонку "Дата", а дальше не получается
код:
Код: AutoIt [Выделить]
 #include <GUIConstantsEx.au3>
 #include <ListviewConstants.au3>
 ; #Include <Array.au3>
#include <File.au3>
 Opt("GUIOnEventMode", 1)

MainGUI()

 ; ----- GUIs
Func MainGUI()
  Global $listview
  $listGUI = GUICreate("AutoIt GUICtrlCreateListView Example", 400, 400, 100, 200, -1)
  GUISetOnEvent($GUI_EVENT_CLOSE, "OnClose")
  $listview = GUICtrlCreateListView("Дата|Участники|Место|Начало|Scored|Конец", 10, 10,400, 400, $LVS_NOSORTHEADER,$LVS_EX_GRIDLINES)

Local $aRecords

;заполняем колонку 1
If Not _FileReadToArray("1.txt", $aRecords) Then
    MsgBox(4096, "Ошибка", " Ошибка чтения файла в массив     Ошибка = " & @error)
    Exit
EndIf
For $i > 9 To $aRecords[0]

$item1=GUICtrlCreateListViewItem($aRecords[$i]&"| | | | |", $ListView)

;$i=$i+5

Next

  GUISetState()

  While 1

    Sleep(10)
  WEnd
EndFunc

Func OnClose()
   Exit
EndFunc

Направьте на путь истинный!

Русское сообщество AutoIt


Оффлайн pvnn [?]

  • Осваивающий
  • **
  • Сообщений: 231
  • Репутация: 20
    • Награды
  • Версия AutoIt: 3.3.12.0
Вообще вариантов множество, например можно так:
(нажмите для показа/скрытия)
« Последнее редактирование: Ноябрь 14, 2017, 08:09:41 от pvnn »

Помечен как лучший ответ пользователем boomerang69 Отправлен Ноябрь 14, 2017, 12:37:58

Оффлайн boomerang69 [?]

  • Новичок
  • *
  • Сообщений: 3

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Премного благодарен!

Вообще изначально вместо txt файла была html таблица
(нажмите для показа/скрытия)
С этим кодом получилось отобразить в _ArrayDisplay
Код: AutoIt [Выделить]
#Include <Array.au3>
$shtml = FileRead('1.htm')

$aRes = StringRegExp($sHtml, "(?isU)(?|<(/)tr>\s*|<t[dh].*>(.*)</t[dh]>)", 3)

Local $aResult[ UBound($aRes) ] [ UBound($aRes) ]
Local $iRow = 1, $iCol = 0, $iMaxRow = 0

For $i = 0 To UBound($aRes) - 1
    If $aRes[$i] = "/" Then
        $iRow += 1
        $iCol = 0
    Else
        $aResult[$iRow][$iCol] = $aRes[$i]
        $iCol += 1
        If $iCol > $iMaxRow Then $iMaxRow = $iCol
    EndIf
Next

Redim $aResult[$iRow][$iMaxRow]

_ArrayDisplay($aResult)


Попробую это загнать в listview, и кстати мне достаточно первые три колонки.
Если не получится, придется просить вашей помощи. Еще раз спасибо!

Оффлайн Tempo [?]

  • Осваивающий
  • **
  • Сообщений: 139
  • Репутация: 29
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
boomerang69
Попробовал с вашим регулярным выражением и htm что вы выложили

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
Opt("GUIOnEventMode", 1)

Global $hGUI, $iListView, $sPath = @ScriptDir & "\1.htm", $aRecords

$aRecords = StringRegExp(FileRead($sPath), "(?isU)(?|<(/)tr>\s*|<t[dh].*>(.*)</t[dh]>)", 3)

$hGUI = GUICreate("Example", 500, 500)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$iListView = GUICtrlCreateListView("Дата|Участники|Место|Начало|Scored|Конец", 5, 5, 490, 490, $LVS_NOSORTHEADER)
GUICtrlSendMsg($iListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

For $i = 7 To UBound($aRecords) - 2 Step 7
    GUICtrlCreateListViewItem($aRecords[$i] & "|" & $aRecords[$i + 1] & "|" & $aRecords[$i + 2] & "|" & $aRecords[$i + 3] & _
            "|" & $aRecords[$i + 4] &  "|" & $aRecords[$i + 5], $iListView)
Next
For $i = 0 To 5
    GUICtrlSendMsg($iListView, $LVM_SETCOLUMNWIDTH, $i, $LVSCW_AUTOSIZE_USEHEADER)
Next

GUISetState()

While 1
    Sleep(10)
WEnd

Func _Exit()
    Exit
EndFunc


Русское сообщество AutoIt


Оффлайн boomerang69 [?]

  • Новичок
  • *
  • Сообщений: 3

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
 :laugh: :laugh:
Спасибо Tempo! Я в восторге!
Это именно то что мне было нужно! Кратко и компактно! Теперь не нужно будет html в txt конвертировать.
Сам я к этому долго бы шел  )).
С меня +++ к карме!
Как хорошо что есть так классный форум и его участники!
« Последнее редактирование: Ноябрь 14, 2017, 22:12:53 от Garrett »

Русское сообщество AutoIt

Re: строки тхт файла считать в массив и отобразить GUICtrlListView
« Ответ #4 Отправлен: Ноябрь 14, 2017, 18:43:58 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
6716 Просмотров
Последний ответ Ноябрь 03, 2010, 19:56:39
от gregaz
5 Ответов
3952 Просмотров
Последний ответ Ноябрь 14, 2010, 09:03:17
от deeman313
3 Ответов
4890 Просмотров
Последний ответ Апрель 07, 2011, 09:21:14
от madmasles
1 Ответов
1866 Просмотров
Последний ответ Январь 11, 2012, 04:39:20
от CreatoR
5 Ответов
1520 Просмотров
Последний ответ Июнь 19, 2014, 15:40:49
от vitaliy4us
7 Ответов
1347 Просмотров
Последний ответ Январь 18, 2015, 22:06:16
от Garrett
10 Ответов
2271 Просмотров
Последний ответ Июль 25, 2015, 14:37:39
от tarhitay
4 Ответов
668 Просмотров
Последний ответ Август 04, 2015, 01:00:41
от Vovsla
20 Ответов
3664 Просмотров
Последний ответ Февраль 21, 2016, 07:52:24
от weweWe45s
3 Ответов
888 Просмотров
Последний ответ Март 16, 2016, 23:18:20
от InnI