Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Автоматизация количества команд
Автоматизация количества команд
AleksandrArchipovДата: Вт, 14 Августа 2012, 10:54 | Сообщение # 1
Новичок
Здравствуйте! У меня есть очень не простой вопрос. Короче, программа такая: программа ищет на компьютере определенные файлы и сохраняет результат в переменную.-это понятно.
Далее результат т.е. переменную нужно разбить на строчки.-это тоже понятно.
Вот, хотелось бы сделать чтобы фаил разбивался на столько строчек, которые написаны в переменной т.е. столько fileread, сколько в переменной [kolstr]. Подсчитать колтчество строчек получилось, а вот как разбивать в зависимости от количества строчек в переменной [kolstr]. А вдруг у пользователя таких файлов 30, а в программе предусмотрено 20. Сейчас приведу банальный пример, чтобы было поняьнее.

А нужно создать динамическое условие т.е. само изменяется от количества строчек. Если быть точнее фаил сам разбивается на нужное кол-во строчек. А то, если я сделаю, например до 1000 файлов-сами понимаете, что писать очень долго, да,и повторюсь "А если у пользователя больше этих файлов?". Надеюсь, так более понятно. Спасибо.
 
СообщениеЗдравствуйте! У меня есть очень не простой вопрос. Короче, программа такая: программа ищет на компьютере определенные файлы и сохраняет результат в переменную.-это понятно.
Далее результат т.е. переменную нужно разбить на строчки.-это тоже понятно.
Вот, хотелось бы сделать чтобы фаил разбивался на столько строчек, которые написаны в переменной т.е. столько fileread, сколько в переменной [kolstr]. Подсчитать колтчество строчек получилось, а вот как разбивать в зависимости от количества строчек в переменной [kolstr]. А вдруг у пользователя таких файлов 30, а в программе предусмотрено 20. Сейчас приведу банальный пример, чтобы было поняьнее.

А нужно создать динамическое условие т.е. само изменяется от количества строчек. Если быть точнее фаил сам разбивается на нужное кол-во строчек. А то, если я сделаю, например до 1000 файлов-сами понимаете, что писать очень долго, да,и повторюсь "А если у пользователя больше этих файлов?". Надеюсь, так более понятно. Спасибо.

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 10:54
GorezcaidДата: Вт, 14 Августа 2012, 12:02 | Сообщение # 2
Ветеран форума
Прочитайте про циклы.
Code
Loop "1" "[kolstr]" "[i]"
       FileRead "/file.mas" "[i]" "[str[i]]"
EndLoop

[str1]==/file.mas 1 строка
[str2]==/file.mas 2 строка
[str3]==/file.mas 3 строка
[str4]==/file.mas 4 строка

Добавлено (14 Августа 2012, 12:02)
---------------------------------------------
Лучше всего использовать так:

Code
FileRead "file.txt" "All" "[file]"
StrParse "[file]" "[#13][#10]" "[MasStr_]" "[KolEl]"
Loop "1" "[KolEl]" "[i]"
      AlertBox "Строка № [i]" "[MasStr_[i]]"
EndLoop

Читая весь файл целиком.Быстрее работает.


Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera

Сообщение отредактировано
Gorezcaid - Вт, 14 Августа 2012, 11:54
 
СообщениеПрочитайте про циклы.
Code
Loop "1" "[kolstr]" "[i]"
       FileRead "/file.mas" "[i]" "[str[i]]"
EndLoop

[str1]==/file.mas 1 строка
[str2]==/file.mas 2 строка
[str3]==/file.mas 3 строка
[str4]==/file.mas 4 строка

Добавлено (14 Августа 2012, 12:02)
---------------------------------------------
Лучше всего использовать так:

Code
FileRead "file.txt" "All" "[file]"
StrParse "[file]" "[#13][#10]" "[MasStr_]" "[KolEl]"
Loop "1" "[KolEl]" "[i]"
      AlertBox "Строка № [i]" "[MasStr_[i]]"
EndLoop

Читая весь файл целиком.Быстрее работает.

Автор - Gorezcaid
Дата добавления - 14 Августа 2012 в 12:02
AleksandrArchipovДата: Вт, 14 Августа 2012, 12:36 | Сообщение # 3
Новичок
Спасибо Вам, почитаю.

Добавлено (14 Августа 2012, 12:16)
---------------------------------------------
Ой, огромное Вам спасибо. как говорится "то, что доктор прописал".

Добавлено (14 Августа 2012, 12:36)
---------------------------------------------
А вот еще вопрос судя по всему тоже по циклам. Я получил пути к этим файлам. (с помощью предыдущего цикла). Теперь мне нужно прочитать эти файлы (FileRead) в зависимости от того какие (по названию) и сколько пременных в предыдущем цикле. Помогите пожалуйста.

 
СообщениеСпасибо Вам, почитаю.

Добавлено (14 Августа 2012, 12:16)
---------------------------------------------
Ой, огромное Вам спасибо. как говорится "то, что доктор прописал".

Добавлено (14 Августа 2012, 12:36)
---------------------------------------------
А вот еще вопрос судя по всему тоже по циклам. Я получил пути к этим файлам. (с помощью предыдущего цикла). Теперь мне нужно прочитать эти файлы (FileRead) в зависимости от того какие (по названию) и сколько пременных в предыдущем цикле. Помогите пожалуйста.


Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 12:36
GorezcaidДата: Вт, 14 Августа 2012, 13:08 | Сообщение # 4
Ветеран форума
Например у вас есть массив имён файлов [NameFile_[i]] размером в [KolElNameFile]=20 файлов
Проходим по циклу с начала(1-го имени файла) до конца(количество имён файлов).
Проходимся по всему массиву и выполняем чтение одного файла (2-й код во 2-м сообщении), подставляя вместо file.txt один из элементов массива имён файлов.
А дальше уже выполняем все эти действия с каждой строкой каждого файла.


Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera

Сообщение отредактировано
Gorezcaid - Вт, 14 Августа 2012, 13:09
 
СообщениеНапример у вас есть массив имён файлов [NameFile_[i]] размером в [KolElNameFile]=20 файлов
Проходим по циклу с начала(1-го имени файла) до конца(количество имён файлов).
Проходимся по всему массиву и выполняем чтение одного файла (2-й код во 2-м сообщении), подставляя вместо file.txt один из элементов массива имён файлов.
А дальше уже выполняем все эти действия с каждой строкой каждого файла.

Автор - Gorezcaid
Дата добавления - 14 Августа 2012 в 13:08
AleksandrArchipovДата: Вт, 14 Августа 2012, 13:17 | Сообщение # 5
Новичок
Ага более менее понятно. Буду пробовать.
 
СообщениеАга более менее понятно. Буду пробовать.

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 13:17
GorezcaidДата: Вт, 14 Августа 2012, 13:22 | Сообщение # 6
Ветеран форума
Только не запутайтесь с переменными, когда будете делать цикл в цикле.
Удачи, если что - спрашивайте :)


Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera

Сообщение отредактировано
Gorezcaid - Вт, 14 Августа 2012, 13:22
 
СообщениеТолько не запутайтесь с переменными, когда будете делать цикл в цикле.
Удачи, если что - спрашивайте :)

Автор - Gorezcaid
Дата добавления - 14 Августа 2012 в 13:22
AleksandrArchipovДата: Вт, 14 Августа 2012, 13:35 | Сообщение # 7
Новичок
Спасибо.

Добавлено (14 Августа 2012, 13:35)
---------------------------------------------
Еще вопрос. Не про реализацию, а просто возможно ли. Вдруг, это все зря. Мне еще понадобится сделать по прочитанным файлам поиск определенных совпадений. Не суть, главное-поиск. Это возможно будет?

 
СообщениеСпасибо.

Добавлено (14 Августа 2012, 13:35)
---------------------------------------------
Еще вопрос. Не про реализацию, а просто возможно ли. Вдруг, это все зря. Мне еще понадобится сделать по прочитанным файлам поиск определенных совпадений. Не суть, главное-поиск. Это возможно будет?


Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 13:35
GorezcaidДата: Вт, 14 Августа 2012, 14:12 | Сообщение # 8
Ветеран форума
Quote
Это возможно будет?

Да, SearchStr


Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera

Сообщение отредактировано
Gorezcaid - Вт, 14 Августа 2012, 14:14
 
Сообщение
Quote
Это возможно будет?

Да, SearchStr

Автор - Gorezcaid
Дата добавления - 14 Августа 2012 в 14:12
AleksandrArchipovДата: Вт, 14 Августа 2012, 15:26 | Сообщение # 9
Новичок
Команду, я знаю. В необук не первый день.
 
СообщениеКоманду, я знаю. В необук не первый день.

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 15:26
PeterДата: Вт, 14 Августа 2012, 16:27 | Сообщение # 10
Админ NeoBook
Quote (Gorezcaid)
Это возможно будет?

Quote (Gorezcaid)
Да, SearchStr

Quote (AleksandrArchipov)
Команду, я знаю.В необук не первый день.

А в чем же тогда проблема?
:)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Gorezcaid)
Это возможно будет?

Quote (Gorezcaid)
Да, SearchStr

Quote (AleksandrArchipov)
Команду, я знаю.В необук не первый день.

А в чем же тогда проблема?
:)

Автор - Peter
Дата добавления - 14 Августа 2012 в 16:27
AleksandrArchipovДата: Вт, 14 Августа 2012, 17:54 | Сообщение # 11
Новичок
Я просто хотел спросить-возможно ли потом сделать поиск через цикл. Gorezcaid, еще раз спасибо за помощь.
 
СообщениеЯ просто хотел спросить-возможно ли потом сделать поиск через цикл. Gorezcaid, еще раз спасибо за помощь.

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 17:54
PeterДата: Вт, 14 Августа 2012, 18:20 | Сообщение # 12
Админ NeoBook
Quote (AleksandrArchipov)
возможно ли потом сделать поиск через цикл

Чтобы не запускать лишний раз цикл, можно сразу и искать совпадения.
Конкретное решение зависит от того что именно требуется.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (AleksandrArchipov)
возможно ли потом сделать поиск через цикл

Чтобы не запускать лишний раз цикл, можно сразу и искать совпадения.
Конкретное решение зависит от того что именно требуется.

Автор - Peter
Дата добавления - 14 Августа 2012 в 18:20
AleksandrArchipovДата: Вт, 14 Августа 2012, 18:41 | Сообщение # 13
Новичок
По поводу цикла. Можно какой нибудь отдаленный пример. А то, совсем затупил. По поводу поиска. Есть тхт грубо говоря база поиска. Есть другой тхт в котором должны искаться совпадения. В подобных проектах делал так: разбивал базу поиска построчно, а потом искал в тех файлах, в которых нужно найти определенные совпадения. А здесь то мы не знаем сколько у пользователя данных файлов...
 
СообщениеПо поводу цикла. Можно какой нибудь отдаленный пример. А то, совсем затупил. По поводу поиска. Есть тхт грубо говоря база поиска. Есть другой тхт в котором должны искаться совпадения. В подобных проектах делал так: разбивал базу поиска построчно, а потом искал в тех файлах, в которых нужно найти определенные совпадения. А здесь то мы не знаем сколько у пользователя данных файлов...

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 18:41
PeterДата: Вт, 14 Августа 2012, 19:09 | Сообщение # 14
Админ NeoBook
Quote (AleksandrArchipov)
разбивал базу поиска построчно, а потом искал в тех файлах, в которых нужно найти определенные совпадения.

В принципе, верно.

Quote (AleksandrArchipov)
А здесь то мы не знаем сколько у пользователя данных файлов...

Вам ничто не мешает это узнать: FileList.

Quote (AleksandrArchipov)
какой нибудь отдаленный пример

"Отдаленный" пример вам уже привели в сообщении 2.
Только вместо AlertBox сразу использовать SearchStr, и т.д. в ещё одном цикле.

Quote (Peter)
Конкретное решение зависит от того что именно требуется.

Если проблематично сразу использовать поиск, то можно и "потом".


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (AleksandrArchipov)
разбивал базу поиска построчно, а потом искал в тех файлах, в которых нужно найти определенные совпадения.

В принципе, верно.

Quote (AleksandrArchipov)
А здесь то мы не знаем сколько у пользователя данных файлов...

Вам ничто не мешает это узнать: FileList.

Quote (AleksandrArchipov)
какой нибудь отдаленный пример

"Отдаленный" пример вам уже привели в сообщении 2.
Только вместо AlertBox сразу использовать SearchStr, и т.д. в ещё одном цикле.

Quote (Peter)
Конкретное решение зависит от того что именно требуется.

Если проблематично сразу использовать поиск, то можно и "потом".

Автор - Peter
Дата добавления - 14 Августа 2012 в 19:09
AleksandrArchipovДата: Вт, 14 Августа 2012, 19:32 | Сообщение # 15
Новичок
Peter, Я сначала разберусь с циклом, а потом... Походу дела спрошу. Если можно). Просто, цикл не использовал, поэтому пока тяжело. Буду читать, разбираться. Спасибо.

Добавлено (14 Августа 2012, 19:32)
---------------------------------------------

Quote (Peter)
"Отдаленный" пример вам уже привели в сообщении 2. Только вместо AlertBox сразу использовать SearchStr, и т.д. в ещё одном цикле.

нет, это следующий шаг. Мне бы хотелось пока прочитать файлы в переменные.
Quote (Gorezcaid)
Например у вас есть массив имён файлов [NameFile_[i]] размером в [KolElNameFile]=20 файлов Проходим по циклу с начала(1-го имени файла) до конца(количество имён файлов). Проходимся по всему массиву и выполняем чтение одного файла (2-й код во 2-м сообщении), подставляя вместо file.txt один из элементов массива имён файлов. А дальше уже выполняем все эти действия с каждой строкой к

С этим бы пока разобраться.
 
СообщениеPeter, Я сначала разберусь с циклом, а потом... Походу дела спрошу. Если можно). Просто, цикл не использовал, поэтому пока тяжело. Буду читать, разбираться. Спасибо.

Добавлено (14 Августа 2012, 19:32)
---------------------------------------------

Quote (Peter)
"Отдаленный" пример вам уже привели в сообщении 2. Только вместо AlertBox сразу использовать SearchStr, и т.д. в ещё одном цикле.

нет, это следующий шаг. Мне бы хотелось пока прочитать файлы в переменные.
Quote (Gorezcaid)
Например у вас есть массив имён файлов [NameFile_[i]] размером в [KolElNameFile]=20 файлов Проходим по циклу с начала(1-го имени файла) до конца(количество имён файлов). Проходимся по всему массиву и выполняем чтение одного файла (2-й код во 2-м сообщении), подставляя вместо file.txt один из элементов массива имён файлов. А дальше уже выполняем все эти действия с каждой строкой к

С этим бы пока разобраться.

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 19:32
PeterДата: Вт, 14 Августа 2012, 19:59 | Сообщение # 16
Админ NeoBook
Quote (AleksandrArchipov)
Буду читать, разбираться.

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

Например, если требуется отыскать точное совпадение строк (слов), то со "списком" все намного упрощается (ListBoxFindItem), в противном случае уже придеться прибегнуть к использованию массива, и код усложнится.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (AleksandrArchipov)
Буду читать, разбираться.

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

Например, если требуется отыскать точное совпадение строк (слов), то со "списком" все намного упрощается (ListBoxFindItem), в противном случае уже придеться прибегнуть к использованию массива, и код усложнится.

Автор - Peter
Дата добавления - 14 Августа 2012 в 19:59
AleksandrArchipovДата: Вт, 14 Августа 2012, 20:05 | Сообщение # 17
Новичок
Листбокс я пробовал. С ним у меня проблем нет. А вот с циклом... Я, немного алгоритм не понимаю. Вот, получил я списки файлов т.е. пути к ним. Теперь, мне нужно их прочитать целиком. С помощью

Я получил пути к файлам, которые нужно прочитать. В справке по циклам-мало. А здесь уроки не совсем то, что нужно.
 
СообщениеЛистбокс я пробовал. С ним у меня проблем нет. А вот с циклом... Я, немного алгоритм не понимаю. Вот, получил я списки файлов т.е. пути к ним. Теперь, мне нужно их прочитать целиком. С помощью

Я получил пути к файлам, которые нужно прочитать. В справке по циклам-мало. А здесь уроки не совсем то, что нужно.

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 20:05
СергейДата: Вт, 14 Августа 2012, 20:14 | Сообщение # 18
Необукер
Quote (AleksandrArchipov)
Не суть, главное-поиск. Это возможно будет?
Имей ввиду, что НБ ищет не слово, а сочетание указанных символов.


Сообщение отредактировано
Сергей - Вт, 14 Августа 2012, 20:19
 
Сообщение
Quote (AleksandrArchipov)
Не суть, главное-поиск. Это возможно будет?
Имей ввиду, что НБ ищет не слово, а сочетание указанных символов.

Автор - Сергей
Дата добавления - 14 Августа 2012 в 20:14
AleksandrArchipovДата: Вт, 14 Августа 2012, 20:16 | Сообщение # 19
Новичок
Сергей, Я это все знаю. Не первый раз делаю такие проекты. Мне просто с циклом разобраться. Т.к. я не знаю сколько файлов на компе у юзера.
 
СообщениеСергей, Я это все знаю. Не первый раз делаю такие проекты. Мне просто с циклом разобраться. Т.к. я не знаю сколько файлов на компе у юзера.

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 20:16
СергейДата: Вт, 14 Августа 2012, 20:20 | Сообщение # 20
Необукер
Quote (AleksandrArchipov)
Не первый раз делаю такие проекты.

scratch
 
Сообщение
Quote (AleksandrArchipov)
Не первый раз делаю такие проекты.

scratch

Автор - Сергей
Дата добавления - 14 Августа 2012 в 20:20
PeterДата: Вт, 14 Августа 2012, 21:02 | Сообщение # 21
Админ NeoBook
Quote (AleksandrArchipov)
Я, немного алгоритм не понимаю. Вот, получил я списки файлов т.е. пути к ним. Теперь, мне нужно их прочитать целиком. С помощью

Вот потому я и говорю, чтот надо использовать ListBox.
Когда срабатывает команда FileRead "file.txt" "All" "[file]" , то в переменную [file] помещается содержимое файла, при это строки в файле будут разделены символами [#13][#10].
Далее командой StrParse "[file]" "[#13][#10]" "[MasStr_]" "[KolEl]" мы разбиваем единую стоку на составные части, каждая из которых помещается в отдельную переменную, имя которой состоит из заданного имени массива [MasStr_] плюс порядковый номер, т.е. [MasStr_1], [MasStr_2], [MasStr_3], и т.д.

Чтобы была понятна аналогия с ListBox, поместите на страничку объект ListBox, в его свойствах укажите следующее:



а затем сделайте так: FileRead "file.txt" "All" "[StringList]" , и посмотрите на результат.
;)

Добавлено (14 Августа 2012, 20:53)
---------------------------------------------
Quote (Сергей)
а сочетание указанных символов

Да, к сожалению, такая "засада" есть.

Лечится, например, проверкой наличия пробелов "до" найденной позиции, и "после" окончания найденного.
К тому же можно использовать (если надо) "С учетом регистра".

Добавлено (14 Августа 2012, 21:02)
---------------------------------------------

Quote (Сергей)
Цитата от (AleksandrArchipov)
Не первый раз делаю такие проекты.
scratch

scratch

Quote (AleksandrArchipov)
Т.к. я не знаю сколько файлов на компе у юзера.

Quote (Peter)
Вам ничто не мешает это узнать: FileList.

scratch
Прикрепления: 3527814.png (9.5 Kb)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (AleksandrArchipov)
Я, немного алгоритм не понимаю. Вот, получил я списки файлов т.е. пути к ним. Теперь, мне нужно их прочитать целиком. С помощью

Вот потому я и говорю, чтот надо использовать ListBox.
Когда срабатывает команда FileRead "file.txt" "All" "[file]" , то в переменную [file] помещается содержимое файла, при это строки в файле будут разделены символами [#13][#10].
Далее командой StrParse "[file]" "[#13][#10]" "[MasStr_]" "[KolEl]" мы разбиваем единую стоку на составные части, каждая из которых помещается в отдельную переменную, имя которой состоит из заданного имени массива [MasStr_] плюс порядковый номер, т.е. [MasStr_1], [MasStr_2], [MasStr_3], и т.д.

Чтобы была понятна аналогия с ListBox, поместите на страничку объект ListBox, в его свойствах укажите следующее:



а затем сделайте так: FileRead "file.txt" "All" "[StringList]" , и посмотрите на результат.
;)

Добавлено (14 Августа 2012, 20:53)
---------------------------------------------
Quote (Сергей)
а сочетание указанных символов

Да, к сожалению, такая "засада" есть.

Лечится, например, проверкой наличия пробелов "до" найденной позиции, и "после" окончания найденного.
К тому же можно использовать (если надо) "С учетом регистра".

Добавлено (14 Августа 2012, 21:02)
---------------------------------------------

Quote (Сергей)
Цитата от (AleksandrArchipov)
Не первый раз делаю такие проекты.
scratch

scratch

Quote (AleksandrArchipov)
Т.к. я не знаю сколько файлов на компе у юзера.

Quote (Peter)
Вам ничто не мешает это узнать: FileList.

scratch

Автор - Peter
Дата добавления - 14 Августа 2012 в 21:02
AleksandrArchipovДата: Вт, 14 Августа 2012, 21:22 | Сообщение # 22
Новичок
Peter, извините. Я вас не так понял.

Добавлено (14 Августа 2012, 21:22)
---------------------------------------------
Давайте с начала.
Расскажу более детально.
Смотрите: 1. ищем файлы.


2.Обрабатываем пути т.е. разбиваем построчно.
-разбиваем потому, что мы не знаем сколько этих файлов на компе.
Следующий шаг:3.Нам нужно прочитать файлы, по путям которые мы получили из шага 2.
Вот, в 3 шаге и проблема... извините за "вынос" мозга.
 
СообщениеPeter, извините. Я вас не так понял.

Добавлено (14 Августа 2012, 21:22)
---------------------------------------------
Давайте с начала.
Расскажу более детально.
Смотрите: 1. ищем файлы.


2.Обрабатываем пути т.е. разбиваем построчно.
-разбиваем потому, что мы не знаем сколько этих файлов на компе.
Следующий шаг:3.Нам нужно прочитать файлы, по путям которые мы получили из шага 2.
Вот, в 3 шаге и проблема... извините за "вынос" мозга.

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 21:22
PeterДата: Вт, 14 Августа 2012, 21:57 | Сообщение # 23
Админ NeoBook
Quote (AleksandrArchipov)
Давайте с начала.


Quote (Ирония судьбы... )
" - Пойдем простым и логическим ходом.
- Пойдем вместе!
- Пойдем вместе... Ты летишь в Ленинград?..."

:)

Quote (AleksandrArchipov)
Обрабатываем пути т.е. разбиваем построчно.

FileRead "file.txt" "All" "[file]"
StrParse "[file]" "[#13][#10]" "[MasStr_]" "[KolEl]"
Loop "1" "[KolEl]" "[i]"
AlertBox "Строка № [i]" "[MasStr_[i]]"
EndLoop

В данном случае вы не обрабатываете никаких путеЙ!
Построчно вы разбиваете содержимое файла file.txt, а вам нужно разбить результат поиска файлов командой zmfindfiles.

Quote (AleksandrArchipov)
-разбиваем потому, что мы не знаем сколько этих файлов на компе.

Это почему же "мы не знаем"?
Очень даже прекрасно знаем:
Quote (Из подобия справки к плагину)
По завершении поиска общее количество найденных файлов выводится в переменную [zmFindFilesCount]

Но можно и "разбить"
StrParse "[Результат поиска]" "[#13][#10]" "[MasStr_]" "[KolEl]"
При этом мы имеем количество файлов [KolEl], а так же список имен файлов: [MasStr_1], [MasStr_2], [MasStr_3], .. [MasStr_ [KolEl]].

Так вот и запускаем цикл (по списку), начиная с первого файла [MasStr_1] до последнего [MasStr_ [KolEl]]
Code
Loop "1" "[KolEl]" "[i]"     
       .Здесь делаем то, что нужно
       .Надо прочитать файл по полученным путям? Поехали:
       FileRead "[MasStr_[i]]" "All" "[Сохраняем куда надо]"     
EndLoop

После каждой итерации цикла переменная [i] будет увеличиваться на единицу, и таким образхом мы прочитаем все файлы (по списку).


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (AleksandrArchipov)
Давайте с начала.


Quote (Ирония судьбы... )
" - Пойдем простым и логическим ходом.
- Пойдем вместе!
- Пойдем вместе... Ты летишь в Ленинград?..."

:)

Quote (AleksandrArchipov)
Обрабатываем пути т.е. разбиваем построчно.

FileRead "file.txt" "All" "[file]"
StrParse "[file]" "[#13][#10]" "[MasStr_]" "[KolEl]"
Loop "1" "[KolEl]" "[i]"
AlertBox "Строка № [i]" "[MasStr_[i]]"
EndLoop

В данном случае вы не обрабатываете никаких путеЙ!
Построчно вы разбиваете содержимое файла file.txt, а вам нужно разбить результат поиска файлов командой zmfindfiles.

Quote (AleksandrArchipov)
-разбиваем потому, что мы не знаем сколько этих файлов на компе.

Это почему же "мы не знаем"?
Очень даже прекрасно знаем:
Quote (Из подобия справки к плагину)
По завершении поиска общее количество найденных файлов выводится в переменную [zmFindFilesCount]

Но можно и "разбить"
StrParse "[Результат поиска]" "[#13][#10]" "[MasStr_]" "[KolEl]"
При этом мы имеем количество файлов [KolEl], а так же список имен файлов: [MasStr_1], [MasStr_2], [MasStr_3], .. [MasStr_ [KolEl]].

Так вот и запускаем цикл (по списку), начиная с первого файла [MasStr_1] до последнего [MasStr_ [KolEl]]
Code
Loop "1" "[KolEl]" "[i]"     
       .Здесь делаем то, что нужно
       .Надо прочитать файл по полученным путям? Поехали:
       FileRead "[MasStr_[i]]" "All" "[Сохраняем куда надо]"     
EndLoop

После каждой итерации цикла переменная [i] будет увеличиваться на единицу, и таким образхом мы прочитаем все файлы (по списку).

Автор - Peter
Дата добавления - 14 Августа 2012 в 21:57
AleksandrArchipovДата: Вт, 14 Августа 2012, 22:52 | Сообщение # 24
Новичок
Спасибо. Я понимал, что это так должно быть.
Quote
В данном случае вы не обрабатываете никаких путеЙ!
Построчно вы разбиваете содержимое файла file.txt, а вам нужно разбить результат поиска файлов командой zmfindfiles.
Я имел введу. Что после окончания поиска, запускается подпрограмма в которая сохраняет результат поиска в переменную. ваш способ разумнее. Сейчас попробую.

Добавлено (14 Августа 2012, 22:13)
---------------------------------------------
Тьфу. результат поиска в фаил.

Добавлено (14 Августа 2012, 22:19)
---------------------------------------------
Всем, кто принимал участие-огромное спасибо! Со всем разобрался. Без вашей помощи не знаю, что и делал.

Добавлено (14 Августа 2012, 22:52)
---------------------------------------------
По поиску: где ошибка?

Code
Loop "1" "[KolEl]" "[i]"
SearchStr "[baza_poiska_[i]]" "[files[i]]" "[kolvosovpadeniy_[i]]" ""
  EndLoop

Нужно чтобы искала все комбинации (они разбиты с этим все хорошо) во всех файлах-они прочитаны
 
СообщениеСпасибо. Я понимал, что это так должно быть.
Quote
В данном случае вы не обрабатываете никаких путеЙ!
Построчно вы разбиваете содержимое файла file.txt, а вам нужно разбить результат поиска файлов командой zmfindfiles.
Я имел введу. Что после окончания поиска, запускается подпрограмма в которая сохраняет результат поиска в переменную. ваш способ разумнее. Сейчас попробую.

Добавлено (14 Августа 2012, 22:13)
---------------------------------------------
Тьфу. результат поиска в фаил.

Добавлено (14 Августа 2012, 22:19)
---------------------------------------------
Всем, кто принимал участие-огромное спасибо! Со всем разобрался. Без вашей помощи не знаю, что и делал.

Добавлено (14 Августа 2012, 22:52)
---------------------------------------------
По поиску: где ошибка?

Code
Loop "1" "[KolEl]" "[i]"
SearchStr "[baza_poiska_[i]]" "[files[i]]" "[kolvosovpadeniy_[i]]" ""
  EndLoop

Нужно чтобы искала все комбинации (они разбиты с этим все хорошо) во всех файлах-они прочитаны

Автор - AleksandrArchipov
Дата добавления - 14 Августа 2012 в 22:52
СергейДата: Вт, 14 Августа 2012, 23:47 | Сообщение # 25
Необукер
вот демка, кликай по кнопке появится результат
Это я как понял задумку

Добавлено (14 Августа 2012, 23:20)
---------------------------------------------
Тока я использовал два листбокса, т.с. для наглядности

Добавлено (14 Августа 2012, 23:40)
---------------------------------------------
Quote (AleksandrArchipov)
Нужно чтобы искала все комбинации

во втором примере ищет по всей базе ключевых слов

Добавлено (14 Августа 2012, 23:47)
---------------------------------------------
Кстати, что значит "чтобы искала все комбинации"?
Если в одном файле встечается несколько искомых слов, то тогда надо организовывать еще один цикл.
Или пересмотреть организацию проекта. Одну задачу можно решить по разному!
1- делать несколько циклов
2- возможно организовать все через бд
3- плагин (или js) и работать регуляркой
Но, чтоб определить как и что делать, надо знать задачу полностью!
А не фрагменты.

Прикрепления: search.rar (3.2 Kb) · 9790849.rar (3.3 Kb)


Сообщение отредактировано
Сергей - Вт, 14 Августа 2012, 23:39
 
Сообщениевот демка, кликай по кнопке появится результат
Это я как понял задумку

Добавлено (14 Августа 2012, 23:20)
---------------------------------------------
Тока я использовал два листбокса, т.с. для наглядности

Добавлено (14 Августа 2012, 23:40)
---------------------------------------------
Quote (AleksandrArchipov)
Нужно чтобы искала все комбинации

во втором примере ищет по всей базе ключевых слов

Добавлено (14 Августа 2012, 23:47)
---------------------------------------------
Кстати, что значит "чтобы искала все комбинации"?
Если в одном файле встечается несколько искомых слов, то тогда надо организовывать еще один цикл.
Или пересмотреть организацию проекта. Одну задачу можно решить по разному!
1- делать несколько циклов
2- возможно организовать все через бд
3- плагин (или js) и работать регуляркой
Но, чтоб определить как и что делать, надо знать задачу полностью!
А не фрагменты.


Автор - Сергей
Дата добавления - 14 Августа 2012 в 23:47
AleksandrArchipovДата: Ср, 15 Августа 2012, 09:29 | Сообщение # 26
Новичок
Сергей, за демку спасибо. А поиск нужен такой- например, у пользователя несколько файлов с именем 1.тхт, 2.тхт, 3.тхт. Есть так называемая база поиска. Назовем ее bazapoiska.txt. В ней 10 строчек. Программа разбивает на строчки, каждой строчке присваивается переменная. Далее поиск: нужно найти в файлах 1,2,3 все возможные комбинации. Точнее-сначала один файил погонять по базе поиска, второй, третий и т.д.

Добавлено (15 Августа 2012, 09:29)
---------------------------------------------
Мне подходит, кажется, search2. Но мне нужно брать базу поиска их файла, а не лист бокса. Переделаю.

 
СообщениеСергей, за демку спасибо. А поиск нужен такой- например, у пользователя несколько файлов с именем 1.тхт, 2.тхт, 3.тхт. Есть так называемая база поиска. Назовем ее bazapoiska.txt. В ней 10 строчек. Программа разбивает на строчки, каждой строчке присваивается переменная. Далее поиск: нужно найти в файлах 1,2,3 все возможные комбинации. Точнее-сначала один файил погонять по базе поиска, второй, третий и т.д.

Добавлено (15 Августа 2012, 09:29)
---------------------------------------------
Мне подходит, кажется, search2. Но мне нужно брать базу поиска их файла, а не лист бокса. Переделаю.


Автор - AleksandrArchipov
Дата добавления - 15 Августа 2012 в 09:29
GorezcaidДата: Ср, 15 Августа 2012, 12:07 | Сообщение # 27
Ветеран форума
Изучите этот код, и разберитесь как он работает.
Code
.=========/Загрузка базы данных/=========
FileRead "!BazaDan" "All" "[file]"
StrParse "[file]" "[#13][#10]" "[MasBazaDan_]" "[KolElBazaDan]"
.[MasBazaDan_]-массив проверяемых строк
.[KolElBazaDan]-количество элементов массива
.=========/Поиск имён файлов/=========
.[NameFile_]=Массив имён файлов
SetVar "[NameFile_1]" "ИмяФайла1.txt"
SetVar "[NameFile_2]" "ИмяФайла2.txt"
SetVar "[NameFile_3]" "ИмяФайла3.txt"
SetVar "[NameFile_4]" "ИмяФайла4.txt"
.[KolElNameFile]=Кол-во файлов
SetVar "[KolElNameFile]" "4"
.=========/Чтение строк всех файлов/=========
Loop "1" "[KolElNameFile]" "[h]"
      .[h]=№ имени файла
      .[NameFile_[h]]=Имя файла
      FileRead "![NameFile_[h]]" "All" "[file]"
      .[file]=содержимое файла
      .//////////
      .Здесь обрабатывать строки всего файла сразу
      Loop "1" "[KolElBazaDan]" "[j]"
         SearchStr "[MasBazaDan_[j]]" "[file]" "[result]" ""
         If "[result]" "<>" "0"
            .Значение [MasBazaDan_[j]] найдено в файле [NameFile_[h]]
         Else
            .Значение не найдено в файле
         EndIf
      EndLoop
      .//////////
      .Построчно
      StrParse "[file]" "[#13][#10]" "[MasStr_]" "[KolEl]"
      Loop "1" "[KolEl]" "[i]"
           .[i]=Номер строки в файле
           .[MasStr_[i]]=Одна из строк файла, по порядку
           .Здесь обрабатывать одну строку одного файла
      EndLoop
      .//////////
EndLoop

'Поиск имён файлов' на сколько я знаю у вас уже есть.
В этом примере производится поиск по базе данных в файле, где каждая строка базы данных ищется по всему файлу.

Добавлено (15 Августа 2012, 12:07)
---------------------------------------------

Quote (AleksandrArchipov)
Не первый раз делаю такие проекты.

scratch может и не первый, но такие вещи как цикл лучше самому изучать используя отладку.
Иначе дальше будет всё сложнее....и сложнее...


Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera
 
СообщениеИзучите этот код, и разберитесь как он работает.
Code
.=========/Загрузка базы данных/=========
FileRead "!BazaDan" "All" "[file]"
StrParse "[file]" "[#13][#10]" "[MasBazaDan_]" "[KolElBazaDan]"
.[MasBazaDan_]-массив проверяемых строк
.[KolElBazaDan]-количество элементов массива
.=========/Поиск имён файлов/=========
.[NameFile_]=Массив имён файлов
SetVar "[NameFile_1]" "ИмяФайла1.txt"
SetVar "[NameFile_2]" "ИмяФайла2.txt"
SetVar "[NameFile_3]" "ИмяФайла3.txt"
SetVar "[NameFile_4]" "ИмяФайла4.txt"
.[KolElNameFile]=Кол-во файлов
SetVar "[KolElNameFile]" "4"
.=========/Чтение строк всех файлов/=========
Loop "1" "[KolElNameFile]" "[h]"
      .[h]=№ имени файла
      .[NameFile_[h]]=Имя файла
      FileRead "![NameFile_[h]]" "All" "[file]"
      .[file]=содержимое файла
      .//////////
      .Здесь обрабатывать строки всего файла сразу
      Loop "1" "[KolElBazaDan]" "[j]"
         SearchStr "[MasBazaDan_[j]]" "[file]" "[result]" ""
         If "[result]" "<>" "0"
            .Значение [MasBazaDan_[j]] найдено в файле [NameFile_[h]]
         Else
            .Значение не найдено в файле
         EndIf
      EndLoop
      .//////////
      .Построчно
      StrParse "[file]" "[#13][#10]" "[MasStr_]" "[KolEl]"
      Loop "1" "[KolEl]" "[i]"
           .[i]=Номер строки в файле
           .[MasStr_[i]]=Одна из строк файла, по порядку
           .Здесь обрабатывать одну строку одного файла
      EndLoop
      .//////////
EndLoop

'Поиск имён файлов' на сколько я знаю у вас уже есть.
В этом примере производится поиск по базе данных в файле, где каждая строка базы данных ищется по всему файлу.

Добавлено (15 Августа 2012, 12:07)
---------------------------------------------

Quote (AleksandrArchipov)
Не первый раз делаю такие проекты.

scratch может и не первый, но такие вещи как цикл лучше самому изучать используя отладку.
Иначе дальше будет всё сложнее....и сложнее...

Автор - Gorezcaid
Дата добавления - 15 Августа 2012 в 12:07
AleksandrArchipovДата: Ср, 15 Августа 2012, 12:26 | Сообщение # 28
Новичок
Вот-вот так я и делаю.

Добавлено (15 Августа 2012, 12:26)
---------------------------------------------
Вот, первый раз циклом пользуюсь. Пытаюсь...

 
СообщениеВот-вот так я и делаю.

Добавлено (15 Августа 2012, 12:26)
---------------------------------------------
Вот, первый раз циклом пользуюсь. Пытаюсь...


Автор - AleksandrArchipov
Дата добавления - 15 Августа 2012 в 12:26
AleksandrArchipovДата: Ср, 15 Августа 2012, 12:47 | Сообщение # 29
Новичок
Бкдк разбираться. Вот прикрепляю фаил. Так, будет еще понятнее, что я пытаюсь сделать.

Добавлено (15 Августа 2012, 12:47)
---------------------------------------------
Очепятка буду*

Прикрепления: 8602172.rar (5.4 Kb)
 
СообщениеБкдк разбираться. Вот прикрепляю фаил. Так, будет еще понятнее, что я пытаюсь сделать.

Добавлено (15 Августа 2012, 12:47)
---------------------------------------------
Очепятка буду*


Автор - AleksandrArchipov
Дата добавления - 15 Августа 2012 в 12:47
GorezcaidДата: Ср, 15 Августа 2012, 12:59 | Сообщение # 30
Ветеран форума
Жуть.
1)
Code
FileWrite "[PubDir]/temp.txt" "All" "[FindFiles]"
FileLen "[PubDir]/temp.txt" "[test]"

Зачем записывать в файл и читать по циклу?

Просчёт всё равно каждый раз заново.После поиска можно обратится к любому файлу
Code
StrParse "[FindFiles]" "[#13][#10]" "[MasFind_]" "[el]"
AlertBox "[el]" ""

2)
Code
Loop "1" "[KolEl]" "[i]"
  endLoop
...
  Loop "1" "[skik]" "[i]"
  endLoop

Циклы пустые

Это всё что получилось?


Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera

Сообщение отредактировано
Gorezcaid - Ср, 15 Августа 2012, 13:01
 
СообщениеЖуть.
1)
Code
FileWrite "[PubDir]/temp.txt" "All" "[FindFiles]"
FileLen "[PubDir]/temp.txt" "[test]"

Зачем записывать в файл и читать по циклу?

Просчёт всё равно каждый раз заново.После поиска можно обратится к любому файлу
Code
StrParse "[FindFiles]" "[#13][#10]" "[MasFind_]" "[el]"
AlertBox "[el]" ""

2)
Code
Loop "1" "[KolEl]" "[i]"
  endLoop
...
  Loop "1" "[skik]" "[i]"
  endLoop

Циклы пустые

Это всё что получилось?

Автор - Gorezcaid
Дата добавления - 15 Августа 2012 в 12:59
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Автоматизация количества команд
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: