Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Вопрос по парсингу строки (strParse)
Вопрос по парсингу строки
Snow_IrbisДата: Вс, 24 Октября 2010, 13:58 | Сообщение # 1
Участник
Есть строка в текстовом файле с разделителем в виде символа "|" , пример

Code
Данные 1 | Данные 2 | Данные 3 | Данные 4 | Данные 5 | Данные 6 | Данные 7

И собственно вопрос как извлечь из этой строки например Данные 3 ? Если я правильно понимаю то для этих целей надо использовать StrParse , но в справке как то не очень понятно дан пример ( или я его не понял ) :)

Сообщение отредактировано
Snow_Irbis - Вс, 24 Октября 2010, 13:58
 
СообщениеЕсть строка в текстовом файле с разделителем в виде символа "|" , пример

Code
Данные 1 | Данные 2 | Данные 3 | Данные 4 | Данные 5 | Данные 6 | Данные 7

И собственно вопрос как извлечь из этой строки например Данные 3 ? Если я правильно понимаю то для этих целей надо использовать StrParse , но в справке как то не очень понятно дан пример ( или я его не понял ) :)


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 13:58
DEMBELДата: Вс, 24 Октября 2010, 14:28 | Сообщение # 2
Наш дизайнер
жаль что не поняли, все очень просто. заполнить поля в диалоге команды сложно чтоли...
1)искомая строка
2)разделитель (символ или набор символов, строка)
3)имя массива куда сложатся распарсенные элементы
4)имя переменной, куда сложится число распарсенных эл-тов (обьем массива, удобно для последующего использования в цикле для разбора массива в кач-ве предела цикла)

Code
setvar "[String]" "Данные 1 | Данные 2 | Данные 3 | Данные 4"
StrParse "[String]" "|" "[Data]" "[x]"

Переменная массива [Data1] будет содержать Данные 1, [Data3] будет содержать Данные 3 и т.д...

Добавлено (24 Октябрь 2010, 14:28)
---------------------------------------------
например чтобы распарсить многострочный файл на отдельные строки, читаем его в переменную [String] с помощью FileToVar, затем используем в кач-ве разделителя перевод строки [#13], символ новой строки [#10] или оба сразу, поэкспериментируйте как будет лучше вам:

Code
FileToVar "!C:\dates.txt" "[String]"
StrParse "[String]" "[#13][#10]" "[Data]" "[x]"


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениежаль что не поняли, все очень просто. заполнить поля в диалоге команды сложно чтоли...
1)искомая строка
2)разделитель (символ или набор символов, строка)
3)имя массива куда сложатся распарсенные элементы
4)имя переменной, куда сложится число распарсенных эл-тов (обьем массива, удобно для последующего использования в цикле для разбора массива в кач-ве предела цикла)

Code
setvar "[String]" "Данные 1 | Данные 2 | Данные 3 | Данные 4"
StrParse "[String]" "|" "[Data]" "[x]"

Переменная массива [Data1] будет содержать Данные 1, [Data3] будет содержать Данные 3 и т.д...

Добавлено (24 Октябрь 2010, 14:28)
---------------------------------------------
например чтобы распарсить многострочный файл на отдельные строки, читаем его в переменную [String] с помощью FileToVar, затем используем в кач-ве разделителя перевод строки [#13], символ новой строки [#10] или оба сразу, поэкспериментируйте как будет лучше вам:

Code
FileToVar "!C:\dates.txt" "[String]"
StrParse "[String]" "[#13][#10]" "[Data]" "[x]"

Автор - DEMBEL
Дата добавления - 24 Октября 2010 в 14:28
Snow_IrbisДата: Вс, 24 Октября 2010, 14:52 | Сообщение # 3
Участник
Вот теперь все полностью понятно thumbs_up Спасибо :) !

Добавлено (24 Октябрь 2010, 14:52)
---------------------------------------------
DEMBEL, что то я видимо опять не до понял sorry , есть код который выбирает из строки данные четко :

Quote (DEMBEL)
Code
setvar "[String]" "Данные 1 | Данные 2 | Данные 3 | Данные 4" StrParse "[String]" "|" "[Data]" "[x]"

По аналогии я сделал такое , убрав только присвоение переменной [String] , так как у меня строку считывает в переменную [dates]

Доступно только для пользователей

И теперь данные в переменной например [Data3] не появляются , что я не правильно сделал help

 
СообщениеВот теперь все полностью понятно thumbs_up Спасибо :) !

Добавлено (24 Октябрь 2010, 14:52)
---------------------------------------------
DEMBEL, что то я видимо опять не до понял sorry , есть код который выбирает из строки данные четко :

Quote (DEMBEL)
Code
setvar "[String]" "Данные 1 | Данные 2 | Данные 3 | Данные 4" StrParse "[String]" "|" "[Data]" "[x]"

По аналогии я сделал такое , убрав только присвоение переменной [String] , так как у меня строку считывает в переменную [dates]

Доступно только для пользователей

И теперь данные в переменной например [Data3] не появляются , что я не правильно сделал help


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 14:52
DEMBELДата: Вс, 24 Октября 2010, 15:17 | Сообщение # 4
Наш дизайнер
вроде все верно. а фрагмент файла можно увидеть? попробуйте проверить в дебагере что лежит в переменных и есть ли они, ищите ошибку. Или вставьте алертбоксы:

Code
FileLen "[WorkFolder]dates.txt" "[len]"
AlertBox "Кол-во строк" "[len]"
Loop "1" "[len]" "[i]"
FileRead "[WorkFolder]dates.txt" "[i]" "[dates]"
AlertBox "Строка [i]" "[dates]"
StrParse "[dates]" "|" "[Data]" "[x]"
Loop "1" "[x]" "[n]"
AlertBox "Распарсена строка [n]" "[Data[n]]"
EndLoop
EndLoop

Смотрите что происходит в скрипте и ищите что не так.


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениевроде все верно. а фрагмент файла можно увидеть? попробуйте проверить в дебагере что лежит в переменных и есть ли они, ищите ошибку. Или вставьте алертбоксы:

Code
FileLen "[WorkFolder]dates.txt" "[len]"
AlertBox "Кол-во строк" "[len]"
Loop "1" "[len]" "[i]"
FileRead "[WorkFolder]dates.txt" "[i]" "[dates]"
AlertBox "Строка [i]" "[dates]"
StrParse "[dates]" "|" "[Data]" "[x]"
Loop "1" "[x]" "[n]"
AlertBox "Распарсена строка [n]" "[Data[n]]"
EndLoop
EndLoop

Смотрите что происходит в скрипте и ищите что не так.


Автор - DEMBEL
Дата добавления - 24 Октября 2010 в 15:17
Snow_IrbisДата: Вс, 24 Октября 2010, 15:41 | Сообщение # 5
Участник
Доступно только для пользователей

Для тестов прикрепляю файлик :)

Прикрепления: dates.rar (0.7 Kb) · 2322688.jpg (40.7 Kb)


Сообщение отредактировано
Snow_Irbis - Вс, 24 Октября 2010, 15:51
 
СообщениеДоступно только для пользователей

Для тестов прикрепляю файлик :)


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 15:41
СергейДата: Вс, 24 Октября 2010, 19:54 | Сообщение # 6
Необукер
Snow_Irbis, ты куда парсишь результат, в ListBox?

Добавлено (24 Октябрь 2010, 19:54)
---------------------------------------------
и что не работает?

 
СообщениеSnow_Irbis, ты куда парсишь результат, в ListBox?

Добавлено (24 Октябрь 2010, 19:54)
---------------------------------------------
и что не работает?


Автор - Сергей
Дата добавления - 24 Октября 2010 в 19:54
Snow_IrbisДата: Вс, 24 Октября 2010, 20:10 | Сообщение # 7
Участник
Сергей, для начала я просто хочу вывести результат парсинга по средством переменной на страницу проекта , сейчас вывожу так ставлю переменную в надпись/текст

Quote (Сергей)
и что не работает?

Нет , можешь сам проверить и если что подсказать что я не так делаю , код пару постами выше а файл для теста 1 постом выше :)

 
СообщениеСергей, для начала я просто хочу вывести результат парсинга по средством переменной на страницу проекта , сейчас вывожу так ставлю переменную в надпись/текст

Quote (Сергей)
и что не работает?

Нет , можешь сам проверить и если что подсказать что я не так делаю , код пару постами выше а файл для теста 1 постом выше :)


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 20:10
СергейДата: Вс, 24 Октября 2010, 20:35 | Сообщение # 8
Необукер
Quote (Snow_Irbis)
сейчас вывожу так ставлю переменную в надпись/текст
непонятно по какому принципу? просто TEST все 390 штук?

Добавлено (24 Октябрь 2010, 20:35)
---------------------------------------------

Quote (Snow_Irbis)
что я не так делаю
незнаю, но DEMBEL в #4 код правильный привел, а у тебя будет в переменой только последняя строка
чтоб у тебя заработал, надо добавить еще одну строку, вместо Delay "500"
Quote
SetVar "[strResult]" "[strResult][Data1][#13]"


Сообщение отредактировано
Сергей - Вс, 24 Октября 2010, 20:40
 
Сообщение
Quote (Snow_Irbis)
сейчас вывожу так ставлю переменную в надпись/текст
непонятно по какому принципу? просто TEST все 390 штук?

Добавлено (24 Октябрь 2010, 20:35)
---------------------------------------------

Quote (Snow_Irbis)
что я не так делаю
незнаю, но DEMBEL в #4 код правильный привел, а у тебя будет в переменой только последняя строка
чтоб у тебя заработал, надо добавить еще одну строку, вместо Delay "500"
Quote
SetVar "[strResult]" "[strResult][Data1][#13]"

Автор - Сергей
Дата добавления - 24 Октября 2010 в 20:35
Snow_IrbisДата: Вс, 24 Октября 2010, 20:43 | Сообщение # 9
Участник
Quote (Сергей)
непонятно по какому принципу? просто TEST все 390 штук?

В строке есть данные они разделены разделителем "|" , строк может быть неограниченное количество , и нужно делать выборку из строки согласно разделителю "|" , в представленном Дембелем первом варианте когда значение переменной задается с помощью setvar , все работает , но если делать выборку из строки , а в качестве данных использовать переменную из команды FileRead то уже все идет не так как надо , и вывод информации возможен если поставить только переменную [Data1] , в этой переменной будет то же самое что и в переменной [dates] полученной с помощью команды FileRead ( смотреть скриншот пару постами выше ) , хотя по идее в переменной [Data1] должна быть информация из строки которая идет до первого символа разделителя если я не ошибаюсь :)

Добавлено (24 Октябрь 2010, 20:43)
---------------------------------------------

Quote (Сергей)
незнаю, но DEMBEL в #4 код правильный привел, а у тебя будет в переменой только последняя строка
чтоб у тебя заработал, надо добавить еще одну строку

Code
SetVar "[strResult]" "[strResult][Data1][#13]"

А зачем присваивать значение переменной [strResult] ? Да и что это за переменная такая и почему она стоит в данных для присвоения самой же себе ?

 
Сообщение
Quote (Сергей)
непонятно по какому принципу? просто TEST все 390 штук?

В строке есть данные они разделены разделителем "|" , строк может быть неограниченное количество , и нужно делать выборку из строки согласно разделителю "|" , в представленном Дембелем первом варианте когда значение переменной задается с помощью setvar , все работает , но если делать выборку из строки , а в качестве данных использовать переменную из команды FileRead то уже все идет не так как надо , и вывод информации возможен если поставить только переменную [Data1] , в этой переменной будет то же самое что и в переменной [dates] полученной с помощью команды FileRead ( смотреть скриншот пару постами выше ) , хотя по идее в переменной [Data1] должна быть информация из строки которая идет до первого символа разделителя если я не ошибаюсь :)

Добавлено (24 Октябрь 2010, 20:43)
---------------------------------------------

Quote (Сергей)
незнаю, но DEMBEL в #4 код правильный привел, а у тебя будет в переменой только последняя строка
чтоб у тебя заработал, надо добавить еще одну строку

Code
SetVar "[strResult]" "[strResult][Data1][#13]"

А зачем присваивать значение переменной [strResult] ? Да и что это за переменная такая и почему она стоит в данных для присвоения самой же себе ?


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 20:43
СергейДата: Вс, 24 Октября 2010, 20:51 | Сообщение # 10
Необукер
в
Quote
StrParse "[dates]" "|" "[Data]" "[x]"
результат [Data] это не строка, а массив, сечешь?
Надо обращатся как к масиву, т.е. [Data11], [Data12], [Data13]....[Data126]

Добавлено (24 Октябрь 2010, 20:47)
---------------------------------------------
Пока ты толком не объяснишь конечный результат, тебе будут приводить разные способы, но ни один может не подойти...
На пальцах объясни, что хочешь, тут запости (демо пример строкой), чего ты хочешь добится. Я лично не пойму

Добавлено (24 Октябрь 2010, 20:51)
---------------------------------------------
имей ввиду, что если парсить весь файл, то получается 15 массивов (по количеству строк)

Сообщение отредактировано
Сергей - Вс, 24 Октября 2010, 20:51
 
Сообщениев
Quote
StrParse "[dates]" "|" "[Data]" "[x]"
результат [Data] это не строка, а массив, сечешь?
Надо обращатся как к масиву, т.е. [Data11], [Data12], [Data13]....[Data126]

Добавлено (24 Октябрь 2010, 20:47)
---------------------------------------------
Пока ты толком не объяснишь конечный результат, тебе будут приводить разные способы, но ни один может не подойти...
На пальцах объясни, что хочешь, тут запости (демо пример строкой), чего ты хочешь добится. Я лично не пойму

Добавлено (24 Октябрь 2010, 20:51)
---------------------------------------------
имей ввиду, что если парсить весь файл, то получается 15 массивов (по количеству строк)


Автор - Сергей
Дата добавления - 24 Октября 2010 в 20:51
Snow_IrbisДата: Вс, 24 Октября 2010, 20:52 | Сообщение # 11
Участник
Quote (Сергей)
результат [Data] это не строка, а массив, сечешь?
Надо обращатся как к масиву, т.е. [Data11], [Data12], [Data13]....[Data1(Х)]


Не совсем пойму , если в коде

Доступно только для пользователей

вместо [Data] поставит например [Data3] то появится переменная [Data31] , то в этой переменной [Data31] будет выводиться те же данные что и выводились в переменной [Data1] когда в строке StrParse переменная стояла [Data] , а все остальные переменные кроме [Data1] , пустые !

 
Сообщение
Quote (Сергей)
результат [Data] это не строка, а массив, сечешь?
Надо обращатся как к масиву, т.е. [Data11], [Data12], [Data13]....[Data1(Х)]


Не совсем пойму , если в коде

Доступно только для пользователей

вместо [Data] поставит например [Data3] то появится переменная [Data31] , то в этой переменной [Data31] будет выводиться те же данные что и выводились в переменной [Data1] когда в строке StrParse переменная стояла [Data] , а все остальные переменные кроме [Data1] , пустые !


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 20:52
СергейДата: Вс, 24 Октября 2010, 20:57 | Сообщение # 12
Необукер
Quote
FileLen "[PubDir]dates.txt" "[len]"
Loop "1" "[len]" "[i]"
FileRead "[PubDir]dates.txt" "[i]" "[dates]"
StrParse "[dates]" "|" "[Data[i]]" ""
EndLoop

так будет правильно, результатом будет [len]-массивов. И обращатся надо [DataХY], где Х число от 1 до [len], а Y число от 1 до 26

Добавлено (24 Октябрь 2010, 20:57)
---------------------------------------------

Quote (Snow_Irbis)
[Data31] будет выводиться те же данные что и выводились в переменной [Data1]
а что ты хотел то?!

найди 26 отличий :D

Сообщение отредактировано
Сергей - Вс, 24 Октября 2010, 20:57
 
Сообщение
Quote
FileLen "[PubDir]dates.txt" "[len]"
Loop "1" "[len]" "[i]"
FileRead "[PubDir]dates.txt" "[i]" "[dates]"
StrParse "[dates]" "|" "[Data[i]]" ""
EndLoop

так будет правильно, результатом будет [len]-массивов. И обращатся надо [DataХY], где Х число от 1 до [len], а Y число от 1 до 26

Добавлено (24 Октябрь 2010, 20:57)
---------------------------------------------

Quote (Snow_Irbis)
[Data31] будет выводиться те же данные что и выводились в переменной [Data1]
а что ты хотел то?!

найди 26 отличий :D


Автор - Сергей
Дата добавления - 24 Октября 2010 в 20:57
Snow_IrbisДата: Вс, 24 Октября 2010, 20:57 | Сообщение # 13
Участник
Quote (Сергей)
Пока ты толком не объяснишь конечный результат, тебе будут приводить разные способы, но ни один может не подойти...
На пальцах объясни, что хочешь, тут запости (демо пример строкой), чего ты хочешь добится. Я лично не пойму

По моему я объяснил что я хочу и тест файл выложил ( по крайней мере Дембель понял что требуется ) , хотя если не понятно объясню еще раз что я хочу сделать . Есть файл я его выкладывал выше , в нем есть строки разделенные разделителем "|" ( кавычек естественно нет :) ) , мне надо считывать определенные данные с строки :)

Quote (Сергей)
имей ввиду, что если парсить весь файл, то получается 15 массивов (по количеству строк)

Опять не понимаю , я ведь считал одну строку , одну строку я распарсиваю в ней 26 массивчиков , следующую строку я буду распарсивать по окончанию распарсивания этой строки так как там идет оно по циклу , или я не так понимаю ?

 
Сообщение
Quote (Сергей)
Пока ты толком не объяснишь конечный результат, тебе будут приводить разные способы, но ни один может не подойти...
На пальцах объясни, что хочешь, тут запости (демо пример строкой), чего ты хочешь добится. Я лично не пойму

По моему я объяснил что я хочу и тест файл выложил ( по крайней мере Дембель понял что требуется ) , хотя если не понятно объясню еще раз что я хочу сделать . Есть файл я его выкладывал выше , в нем есть строки разделенные разделителем "|" ( кавычек естественно нет :) ) , мне надо считывать определенные данные с строки :)

Quote (Сергей)
имей ввиду, что если парсить весь файл, то получается 15 массивов (по количеству строк)

Опять не понимаю , я ведь считал одну строку , одну строку я распарсиваю в ней 26 массивчиков , следующую строку я буду распарсивать по окончанию распарсивания этой строки так как там идет оно по циклу , или я не так понимаю ?


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 20:57
СергейДата: Вс, 24 Октября 2010, 21:01 | Сообщение # 14
Необукер
какую одну, ты весь файл запустил через цикл, вот так будет одну строку
Quote
FileRead "[PubDir]dates.txt" "номер_строки" "[dates]"
StrParse "[dates]" "|" "[Data]" ""

вот теперь парсится только одна строка, и массив [Data] будет содержать 26 елементов
Теперь понял?

Добавлено (24 Октябрь 2010, 21:01)
---------------------------------------------

Quote (Snow_Irbis)
в ней 26 массивчиков
элементов, а не массивов!


Сообщение отредактировано
Сергей - Вс, 24 Октября 2010, 21:02
 
Сообщениекакую одну, ты весь файл запустил через цикл, вот так будет одну строку
Quote
FileRead "[PubDir]dates.txt" "номер_строки" "[dates]"
StrParse "[dates]" "|" "[Data]" ""

вот теперь парсится только одна строка, и массив [Data] будет содержать 26 елементов
Теперь понял?

Добавлено (24 Октябрь 2010, 21:01)
---------------------------------------------

Quote (Snow_Irbis)
в ней 26 массивчиков
элементов, а не массивов!

Автор - Сергей
Дата добавления - 24 Октября 2010 в 21:01
Snow_IrbisДата: Вс, 24 Октября 2010, 21:08 | Сообщение # 15
Участник
Сергей, если я там укажу определенную строку то толку от цикла ? Мне надо распарсить все строки , с начала одну потом вторую , и так все , да и в любом случае даже так оно все равно выводит в переменную [Data1] информацию из всего файла , а других переменных нет

ПИ Что с форумом ?

 
СообщениеСергей, если я там укажу определенную строку то толку от цикла ? Мне надо распарсить все строки , с начала одну потом вторую , и так все , да и в любом случае даже так оно все равно выводит в переменную [Data1] информацию из всего файла , а других переменных нет

ПИ Что с форумом ?


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 21:08
СергейДата: Вс, 24 Октября 2010, 21:36 | Сообщение # 16
Необукер
короче, щас сделаю демку
Прикрепления: dat.rar (2.1 Kb)


Сообщение отредактировано
Сергей - Вс, 24 Октября 2010, 22:09
 
Сообщениекороче, щас сделаю демку

Автор - Сергей
Дата добавления - 24 Октября 2010 в 21:36
СергейДата: Вс, 24 Октября 2010, 22:12 | Сообщение # 17
Необукер

Добавлено (24 Октябрь 2010, 22:12)
---------------------------------------------
Snow_Irbis, смотри #16

 
Сообщение

Добавлено (24 Октябрь 2010, 22:12)
---------------------------------------------
Snow_Irbis, смотри #16


Автор - Сергей
Дата добавления - 24 Октября 2010 в 22:12
Snow_IrbisДата: Вс, 24 Октября 2010, 22:22 | Сообщение # 18
Участник
Сергей, что то у меня мозг вскипел %) Что мне добавить в моем коде что бы он делал выборку ?

Доступно только для пользователей

 
СообщениеСергей, что то у меня мозг вскипел %) Что мне добавить в моем коде что бы он делал выборку ?

Доступно только для пользователей


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 22:22
СергейДата: Вс, 24 Октября 2010, 22:26 | Сообщение # 19
Необукер
Quote (Snow_Irbis)
Что мне добавить в моем коде что бы он делал выборку
смотри пример или #12

Добавлено (24 Октябрь 2010, 22:26)
---------------------------------------------
и убери Delay "500", нафиг ненужен

 
Сообщение
Quote (Snow_Irbis)
Что мне добавить в моем коде что бы он делал выборку
смотри пример или #12

Добавлено (24 Октябрь 2010, 22:26)
---------------------------------------------
и убери Delay "500", нафиг ненужен


Автор - Сергей
Дата добавления - 24 Октября 2010 в 22:26
Snow_IrbisДата: Вс, 24 Октября 2010, 22:30 | Сообщение # 20
Участник
Quote (Сергей)
смотри пример или #12

Если делать так как указанно в посте #12

Code
FileLen "[PubDir]dates.txt" "[len]"
Loop "1" "[len]" "[i]"
FileRead "[PubDir]dates.txt" "[i]" "[dates]"
StrParse "[dates]" "|" "[Data[i]]" ""
EndLoop

то при проходе по файлу будут создаваться все новые и новые переменные , но переменная например [Data3] все равно пуста

Добавлено (24 Октябрь 2010, 22:30)
---------------------------------------------

Quote (Сергей)
и убери Delay "500", нафиг ненужен

Мне надо что бы наблюдать за выводимыми данными ( правда они сейчас не там где надо выводятся ) , я там правда 2000 мс ставлю

 
Сообщение
Quote (Сергей)
смотри пример или #12

Если делать так как указанно в посте #12

Code
FileLen "[PubDir]dates.txt" "[len]"
Loop "1" "[len]" "[i]"
FileRead "[PubDir]dates.txt" "[i]" "[dates]"
StrParse "[dates]" "|" "[Data[i]]" ""
EndLoop

то при проходе по файлу будут создаваться все новые и новые переменные , но переменная например [Data3] все равно пуста

Добавлено (24 Октябрь 2010, 22:30)
---------------------------------------------

Quote (Сергей)
и убери Delay "500", нафиг ненужен

Мне надо что бы наблюдать за выводимыми данными ( правда они сейчас не там где надо выводятся ) , я там правда 2000 мс ставлю


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 22:30
СергейДата: Вс, 24 Октября 2010, 22:40 | Сообщение # 21
Необукер
Quote (Snow_Irbis)
[Data3] все равно пуста
это массив, а не элемент, как ты не можешь понять! Ты знаешь что такое массив?

Добавлено (24 Октябрь 2010, 22:38)
---------------------------------------------
если тебе надо получить елемент, то надо обращатся к n-элементу в n-массиве ([Data33])

Добавлено (24 Октябрь 2010, 22:40)
---------------------------------------------
в объекте в надпись/текст поставь эту переменую массива [Data33] и все увидешь

 
Сообщение
Quote (Snow_Irbis)
[Data3] все равно пуста
это массив, а не элемент, как ты не можешь понять! Ты знаешь что такое массив?

Добавлено (24 Октябрь 2010, 22:38)
---------------------------------------------
если тебе надо получить елемент, то надо обращатся к n-элементу в n-массиве ([Data33])

Добавлено (24 Октябрь 2010, 22:40)
---------------------------------------------
в объекте в надпись/текст поставь эту переменую массива [Data33] и все увидешь


Автор - Сергей
Дата добавления - 24 Октября 2010 в 22:40
Snow_IrbisДата: Вс, 24 Октября 2010, 22:49 | Сообщение # 22
Участник
Quote (Сергей)
это массив, а не элемент, как ты не можешь понять! Ты знаешь что такое массив?

Ну почему тогда если делать так как показал Дембель

Code

setvar "[String]" "Данные 1 | Данные 2 | Данные 3 | Данные 4"
StrParse "[String]" "|" "[Data]" "[x]"

В переменной [Data3] будут данные Данные 3 , то есть из строки выбирает данные в 3-й ячейке ( и появляется по переменной на каждую ячейку ) , а вот если вставить переменную считанной строки сразу вместо [String] , а строку setvar "[String]" "Данные 1 | Данные 2 | Данные 3 | Данные 4" убрать ( что по сути то же самое ) то в переменной [Data3] ничего не будет ( и так же не будет переменных по количеству ячеек как в прочем и переменной [Data3] ) ?

ПИ Ячейками называю пространство между разделителями строки

Добавлено (24 Октябрь 2010, 22:49)
---------------------------------------------

Quote (Сергей)
если тебе надо получить елемент, то надо обращатся к n-элементу в n-массиве ([Data33])

stop почему нельзя делать так как я пытаюсь сделать сейчас , ведь мои действия аналогичны с рабочим кодом где присваивается значение переменной , с тем различием что вместо присвоения значения переменной я подставляю значение переменной в которой считана строка ? Это ведь тоже самое !

Quote (Сергей)
в объекте в надпись/текст поставь эту переменую массива [Data33] и все увидешь

Если делать это по указанному тобой коду

Code
FileLen "[PubDir]dates.txt" "[len]"
Loop "1" "[len]" "[i]"
FileRead "[PubDir]dates.txt" "[i]" "[dates]"
StrParse "[dates]" "|" "[Data[i]]" ""
EndLoop

Переменной [Data33] вовсе не будет ! Будет много переменных [Data([i]+1)] . Проверь сам , по мимо этого в дебагере будет видно появление все новых переменных и их число будет соответствовать количеству строк в файле который парситься , а имя их будет соответствовать [Data([i]+1)] , например :

[Data31] - если парситься строка 3
[Data301] - если парситься строка 30
[Data331] - если парситься строка 33

Сообщение отредактировано
Snow_Irbis - Вс, 24 Октября 2010, 22:57
 
Сообщение
Quote (Сергей)
это массив, а не элемент, как ты не можешь понять! Ты знаешь что такое массив?

Ну почему тогда если делать так как показал Дембель

Code

setvar "[String]" "Данные 1 | Данные 2 | Данные 3 | Данные 4"
StrParse "[String]" "|" "[Data]" "[x]"

В переменной [Data3] будут данные Данные 3 , то есть из строки выбирает данные в 3-й ячейке ( и появляется по переменной на каждую ячейку ) , а вот если вставить переменную считанной строки сразу вместо [String] , а строку setvar "[String]" "Данные 1 | Данные 2 | Данные 3 | Данные 4" убрать ( что по сути то же самое ) то в переменной [Data3] ничего не будет ( и так же не будет переменных по количеству ячеек как в прочем и переменной [Data3] ) ?

ПИ Ячейками называю пространство между разделителями строки

Добавлено (24 Октябрь 2010, 22:49)
---------------------------------------------

Quote (Сергей)
если тебе надо получить елемент, то надо обращатся к n-элементу в n-массиве ([Data33])

stop почему нельзя делать так как я пытаюсь сделать сейчас , ведь мои действия аналогичны с рабочим кодом где присваивается значение переменной , с тем различием что вместо присвоения значения переменной я подставляю значение переменной в которой считана строка ? Это ведь тоже самое !

Quote (Сергей)
в объекте в надпись/текст поставь эту переменую массива [Data33] и все увидешь

Если делать это по указанному тобой коду

Code
FileLen "[PubDir]dates.txt" "[len]"
Loop "1" "[len]" "[i]"
FileRead "[PubDir]dates.txt" "[i]" "[dates]"
StrParse "[dates]" "|" "[Data[i]]" ""
EndLoop

Переменной [Data33] вовсе не будет ! Будет много переменных [Data([i]+1)] . Проверь сам , по мимо этого в дебагере будет видно появление все новых переменных и их число будет соответствовать количеству строк в файле который парситься , а имя их будет соответствовать [Data([i]+1)] , например :

[Data31] - если парситься строка 3
[Data301] - если парситься строка 30
[Data331] - если парситься строка 33


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 22:49
СергейДата: Вс, 24 Октября 2010, 23:19 | Сообщение # 23
Необукер
Quote (Snow_Irbis)
Переменной [Data33] вовсе не будет
хм, ладно, сейчас открою НБ, просто я закрыл(фильм смотрел), погляжу, что там

Добавлено (24 Октябрь 2010, 23:14)
---------------------------------------------
Делитель обязателен именно такой? Если да, то тогда парсь так

Quote
StrParse "[strTemp]" "[#13]" "[Data]" "[inCountArr]"
Нб преобразовывает твой делиметр |(хотя так оно и есть) в новую строку, а значит этот символ | невидит

Добавлено (24 Октябрь 2010, 23:15)
---------------------------------------------
Пробуй тоже самое, но уже вместо | ставь [#13]

Добавлено (24 Октябрь 2010, 23:17)
---------------------------------------------
Надо было сразу написать, что в дебагере после парсера идет не массив, а строка, я то в дебагер заглядываю, когда ошибка или данные искажены, а в своем примере я строку загонял в листбокс, вот и не заметил :D

Добавлено (24 Октябрь 2010, 23:19)
---------------------------------------------
ну что теперь заработало :D

 
Сообщение
Quote (Snow_Irbis)
Переменной [Data33] вовсе не будет
хм, ладно, сейчас открою НБ, просто я закрыл(фильм смотрел), погляжу, что там

Добавлено (24 Октябрь 2010, 23:14)
---------------------------------------------
Делитель обязателен именно такой? Если да, то тогда парсь так

Quote
StrParse "[strTemp]" "[#13]" "[Data]" "[inCountArr]"
Нб преобразовывает твой делиметр |(хотя так оно и есть) в новую строку, а значит этот символ | невидит

Добавлено (24 Октябрь 2010, 23:15)
---------------------------------------------
Пробуй тоже самое, но уже вместо | ставь [#13]

Добавлено (24 Октябрь 2010, 23:17)
---------------------------------------------
Надо было сразу написать, что в дебагере после парсера идет не массив, а строка, я то в дебагер заглядываю, когда ошибка или данные искажены, а в своем примере я строку загонял в листбокс, вот и не заметил :D

Добавлено (24 Октябрь 2010, 23:19)
---------------------------------------------
ну что теперь заработало :D


Автор - Сергей
Дата добавления - 24 Октября 2010 в 23:19
Snow_IrbisДата: Вс, 24 Октября 2010, 23:21 | Сообщение # 24
Участник
Quote (Сергей)

Нб преобразовывает твой делиметр |(хотя так оно и есть) в новую строку, а значит этот символ | невидит

]Пробуй тоже самое, но уже вместо | ставь [#13]

bravo да вот именно в этом и собака зарыта :) С таким кодом все как надо , при парсинге образовываеться 26 переменных [Data1]-[Data26] ( по количеству ячеек в строке )

Доступно только для пользователей

Добавлено (24 Октябрь 2010, 23:21)
---------------------------------------------

Quote (Сергей)
Надо было сразу написать, что в дебагере после парсера идет не массив, а строка, я то в дебагер заглядываю, когда ошибка или данные искажены, а в своем примере я строку загонял в листбокс, вот и не заметил :D

Всякое бывает , главное что проблема решена :)

Quote (Сергей)
ну что теперь заработало :D

Да , спасибо :)

Сообщение отредактировано
Snow_Irbis - Вс, 24 Октября 2010, 23:22
 
Сообщение
Quote (Сергей)

Нб преобразовывает твой делиметр |(хотя так оно и есть) в новую строку, а значит этот символ | невидит

]Пробуй тоже самое, но уже вместо | ставь [#13]

bravo да вот именно в этом и собака зарыта :) С таким кодом все как надо , при парсинге образовываеться 26 переменных [Data1]-[Data26] ( по количеству ячеек в строке )

Доступно только для пользователей

Добавлено (24 Октябрь 2010, 23:21)
---------------------------------------------

Quote (Сергей)
Надо было сразу написать, что в дебагере после парсера идет не массив, а строка, я то в дебагер заглядываю, когда ошибка или данные искажены, а в своем примере я строку загонял в листбокс, вот и не заметил :D

Всякое бывает , главное что проблема решена :)

Quote (Сергей)
ну что теперь заработало :D

Да , спасибо :)


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 23:21
СергейДата: Вс, 24 Октября 2010, 23:34 | Сообщение # 25
Необукер
Quote (Snow_Irbis)
да вот именно в этом и собака зарыта
и самое смешное, я на эти грабли дважды наступал, давно было забыл, вот и втретий раз, и сразу ведь не вспомнил...старею...
кстати, если будешь сохранять, НЬ вроде тоже не дает так | сохранить, то используй асси код [#124] возможно поможет
 
Сообщение
Quote (Snow_Irbis)
да вот именно в этом и собака зарыта
и самое смешное, я на эти грабли дважды наступал, давно было забыл, вот и втретий раз, и сразу ведь не вспомнил...старею...
кстати, если будешь сохранять, НЬ вроде тоже не дает так | сохранить, то используй асси код [#124] возможно поможет

Автор - Сергей
Дата добавления - 24 Октября 2010 в 23:34
DEMBELДата: Вс, 24 Октября 2010, 23:41 | Сообщение # 26
Наш дизайнер
ну капец мозголомы... :)

Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениену капец мозголомы... :)

Автор - DEMBEL
Дата добавления - 24 Октября 2010 в 23:41
Snow_IrbisДата: Вс, 24 Октября 2010, 23:43 | Сообщение # 27
Участник
Quote (Сергей)
и самое смешное, я на эти грабли дважды наступал, давно было забыл, вот и втретий раз, и сразу ведь не вспомнил...старею...
кстати, если будешь сохранять, НЬ вроде тоже не дает так | сохранить, то используй асси код [#124] возможно поможет

ОК , спасибо за подсказку :)

Добавлено (24 Октябрь 2010, 23:43)
---------------------------------------------

Quote (DEMBEL)
ну капец мозголомы... :)

НУ зачем же так :) Более красиво звучит искатели истинны :)

 
Сообщение
Quote (Сергей)
и самое смешное, я на эти грабли дважды наступал, давно было забыл, вот и втретий раз, и сразу ведь не вспомнил...старею...
кстати, если будешь сохранять, НЬ вроде тоже не дает так | сохранить, то используй асси код [#124] возможно поможет

ОК , спасибо за подсказку :)

Добавлено (24 Октябрь 2010, 23:43)
---------------------------------------------

Quote (DEMBEL)
ну капец мозголомы... :)

НУ зачем же так :) Более красиво звучит искатели истинны :)


Автор - Snow_Irbis
Дата добавления - 24 Октября 2010 в 23:43
СергейДата: Вс, 24 Октября 2010, 23:45 | Сообщение # 28
Необукер
Quote (DEMBEL)
ну капец мозголомы
ага, а ты хде был :D

Добавлено (24 Октябрь 2010, 23:45)
---------------------------------------------
DEMBEL, скоро наверное надо тему открыть по вот таким нюансам, а то на память уже не понадеятся :)

Сообщение отредактировано
Сергей - Вс, 24 Октября 2010, 23:46
 
Сообщение
Quote (DEMBEL)
ну капец мозголомы
ага, а ты хде был :D

Добавлено (24 Октябрь 2010, 23:45)
---------------------------------------------
DEMBEL, скоро наверное надо тему открыть по вот таким нюансам, а то на память уже не понадеятся :)


Автор - Сергей
Дата добавления - 24 Октября 2010 в 23:45
DEMBELДата: Вс, 24 Октября 2010, 23:50 | Сообщение # 29
Наш дизайнер
Quote (Snow_Irbis)
FileRead "[PubDir]dates.txt" "[i]" "[dates]"

постоянно читать файл по строкам, делать файловую операцию каждый раз это может быть долго. В случае большого кол-ва данных вместо FileLen/FileRead используй FileLen/FileToVar. Один раз прочитать и парсить построчно, потом каждую строку отдельно, так быстрее будет.

Добавлено (24 Октябрь 2010, 23:50)
---------------------------------------------

Quote (Сергей)
скоро наверное надо тему открыть

да, надо faq делать уже... собрал бы кто-нибудь подобные тонкости, про знак ! в переменной (сам с ним тупил сегодня полчаса, пока не поставил), про спецсимволы...


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение
Quote (Snow_Irbis)
FileRead "[PubDir]dates.txt" "[i]" "[dates]"

постоянно читать файл по строкам, делать файловую операцию каждый раз это может быть долго. В случае большого кол-ва данных вместо FileLen/FileRead используй FileLen/FileToVar. Один раз прочитать и парсить построчно, потом каждую строку отдельно, так быстрее будет.

Добавлено (24 Октябрь 2010, 23:50)
---------------------------------------------

Quote (Сергей)
скоро наверное надо тему открыть

да, надо faq делать уже... собрал бы кто-нибудь подобные тонкости, про знак ! в переменной (сам с ним тупил сегодня полчаса, пока не поставил), про спецсимволы...

Автор - DEMBEL
Дата добавления - 24 Октября 2010 в 23:50
СергейДата: Вс, 24 Октября 2010, 23:51 | Сообщение # 30
Необукер
Quote (DEMBEL)
FileLen/FileToVar
а какая разница FileToVar то же самое обращение к файлу :)

Добавлено (24 Октябрь 2010, 23:51)
---------------------------------------------

Quote (DEMBEL)
про знак ! в переменной
если честно, я досихпор незнаю нах он нужен, ниразу не пользовался, даже в хелпе не читал(вернее краем глаза) :D


Сообщение отредактировано
Сергей - Вс, 24 Октября 2010, 23:52
 
Сообщение
Quote (DEMBEL)
FileLen/FileToVar
а какая разница FileToVar то же самое обращение к файлу :)

Добавлено (24 Октябрь 2010, 23:51)
---------------------------------------------

Quote (DEMBEL)
про знак ! в переменной
если честно, я досихпор незнаю нах он нужен, ниразу не пользовался, даже в хелпе не читал(вернее краем глаза) :D

Автор - Сергей
Дата добавления - 24 Октября 2010 в 23:51
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Вопрос по парсингу строки (strParse)
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: