Сокращение строк
|
|
Sam726 | Дата: Воскресенье, 25 Апреля 2010, 19:52 | Сообщение # 1 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Всем привет! Мне нужна помощ. Нужно сократить множество строк к одному целому. У меня к примеру есть скрипт в котором находится 10 строк: Code file$='<SrcDir>\Data\Holidays.dat' a1$=StrFromFile(file$,1,1) SongListAdd("a1$") a2$=StrFromFile(file$,2,1) SongListAdd("a2$") a3$=StrFromFile(file$,3,1) SongListAdd("a3$") ... a10$=StrFromFile(file$,10,1) SongListAdd("a10$") И в других похожих случаях Code file$='<SrcDir>\Data\Number.dat' a1$=StrFromFile(file$,1,1) LoadText("Text8","a1$") a2$=StrFromFile(file$,2,1) LoadText("Text9","a2$") a 3$=StrFromFile(file$,3,1) LoadText("Text10","a3$") ... a10$=StrFromFile(file$,10,1) LoadText("Text10","a10$") Так вот. Таких скриптов допустип тоже 10. Получается что всего 100 строковых кодов. Но загвоздка еще в том что в каждом скрипте идет продолжение предыдущего скрипта. Code 1 Скрипт - 1,2,3...10. 2 Скрипт - 11,12,13...20. .... 10 Скрипт - 90,91,92...100 Возможно есть какойто способ что бы не писать в каждом скрипте кучу одного и того же только с разными цифрами, возможно это все можно сократить. Может через масивы или что... У меня что-то ничего покаместь не получается. Приходится писать большие скрипты и внимательно менять цифры что бы не сбится... грустно
|
|
| |
Alex3A | Дата: Воскресенье, 25 Апреля 2010, 20:02 | Сообщение # 2 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (Sam726) Возможно есть какойто способ что бы не писать в каждом скрипте кучу одного и того же только с разными цифрами, возможно это все можно сократить. Это просто недостаток твоего алгоритма, пошевели своим мозгом, и у тебя все выйдет Узучи что такое циклы скриптаймеры и массивы, и будет тебе благо.
|
|
| |
toizy | Дата: Воскресенье, 25 Апреля 2010, 20:07 | Сообщение # 3 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Основа алгоритма: Code For i = 1 To 10 a$[i]=StrFromFile(file$,i,1) SongListAdd("a$[i]") Next i
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
YURIY | Дата: Воскресенье, 25 Апреля 2010, 20:08 | Сообщение # 4 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| По порядку. Quote (Sam726) У меня к примеру есть скрипт в котором находится 10 строк: Чтобы загрузить из файла всё в SongList, делаешь вот так: Code SongListLoad("<SrcDir>\Data\Holidays.dat","TXT") Читаем нелюбимую справку для подробностей. Quote (Sam726) И в других похожих случаях Ни фига себе "похожий случай" Каждую строку грузить в отдельный текстовый объект? Тогда тупо цикл. Код сильно укоротится, для того они и придуманы. Уточняй задачу. Что-то тут не так...
Вечная память Андрею Сергееву!
|
|
| |
Alex3A | Дата: Воскресенье, 25 Апреля 2010, 20:23 | Сообщение # 5 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| YURIY, Цикл он и в африке цикл, не в зависимости от его реализации, толи по фор некст, то ли на таймерах, мож конечно и рекурсивно. Sam726, можеш считать нормальным, если все у тебя будет описанно по одному разу. Quote (YURIY) брр, Дима... Сотри Дык энто то и есть основа алгоритма, не путай с реализацией, если по человечески, то повторить н раз одно и то же, а уж реализовать мона и циклом и таймером и рекурсией. Так что Sam726, не понимай превратно В одном ты прав, что то Sam726, не додумал, вот и получаются монстоузы.
|
|
| |
YURIY | Дата: Воскресенье, 25 Апреля 2010, 20:27 | Сообщение # 6 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Alex3A) YURIY, Цикл он и в африке цикл, не в зависимости от его реализации, толи по фор некст, то ли на таймерах, мож конечно и рекурсивно. Это ты мне хочешь объяснить? Нет, мне не нужно. Автору топика.
Вечная память Андрею Сергееву!
|
|
| |
Alex3A | Дата: Воскресенье, 25 Апреля 2010, 20:33 | Сообщение # 7 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| YURIY, а его сначала надо тупо по циклам погонять, для восприятия понятий, а уж потом всякия хитрости, всеж цикл есть основа. Че надо человеку для полного счастья Разобратся с циклами и условными переходами.
|
|
| |
YURIY | Дата: Воскресенье, 25 Апреля 2010, 20:35 | Сообщение # 8 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Согласен Начинать нужно с основ программирования, а потом уже что-то делать. Но многие любят поступать наоборот.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Воскресенье, 25 Апреля 2010, 21:06 | Сообщение # 9 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Я так понимаю что все сводится к начулу. К тому что я и думал, нужны всякие цыклы, масивы, повторы короче. Это кок раз то что я толком так и не понял всего и полностью. toizy, Суть я примерно понял. Ну а продолжение то будет фурычить или нет? Мне же нужно все по очередно что бы ишло. Code For i = 1 To 10 a$[i]=StrFromFile(file$,i,1) SongListAdd("a$[i]") Next i Потом в другом скрипте Code For i = 11 To 20 a$[i]=StrFromFile(file$,i,1) SongListAdd("a$[i]") Next i В этом то и получилась у меня зацепка. Да и я еще думал может что-то другое есть... YURIY, Quote Чтобы загрузить из файла всё в SongList, делаешь вот так: Это я уже давно знаю (основу я нор знадю), но мне нужно загрузить некоторые строки из файла, а не все и сразу. Quote Ни фига себе "похожий случай" А что там нет похожего? Суть таже. В первом мы строки грузим в список, а во втором тексты.
Сообщение отредактировал Sam726 - Воскресенье, 25 Апреля 2010, 21:07 |
|
| |
Alex3A | Дата: Воскресенье, 25 Апреля 2010, 21:15 | Сообщение # 10 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Sam726, посмотри - видиш у тебя два почти одинаковых блока кодов-значит что еше не все додумал, можно обойтись и одним. Quote (Sam726) но мне нужно загрузить некоторые строки из файла, а не все и сразу. Вот для этого и нужны условные операторы. А как разберешся со своей требухой, то можно будет так вовсе и не делать, но это полезно для понимания. Когда чего то много, то можно и базу данных юзать.
|
|
| |
YURIY | Дата: Воскресенье, 25 Апреля 2010, 22:13 | Сообщение # 11 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Sam726) В первом мы строки грузим в список То есть, тебе нужны строки группами по 10 штук, к примеру? Тогда так: Code path$='C:\1.txt' del$=CHR(13)+CHR(10) s$=StrFromFile(path$,1,10)+del$ For i=1 To GetArrayNum(s$,del$) item$=GetArrayItem(s$,del$,i) SongListAdd("item$") Next i Считаю такой вариант хорошим потому, что к файлу обращаемся 1 раз, а не 10, как у Димы. К тому же зачем он всё записывает параллельно в массив - я не соображу. Quote (Sam726) а во втором тексты Тоже самое: Code path$='C:\1.txt' del$=CHR(13)+CHR(10) s$=StrFromFile(path$,1,10)+del$ For i=1 To GetArrayNum(s$,del$) item$=GetArrayItem(s$,del$,i) object$='Text'+CHAR(i) LoadText("object$","item$") Next i Добавлено (25 Апрель 2010, 22:13) --------------------------------------------- Из этих вариантов легко сможешь сделать всё универсально под свою задачу. Просто если бы я от и до знал её... Впрочем, этого для подсказки хватит. Дальше додумай сам.
Вечная память Андрею Сергееву!
|
|
| |
Alex3A | Дата: Воскресенье, 25 Апреля 2010, 22:39 | Сообщение # 12 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| А что мешает загрузить сразу все и обработку сделать в одном цикле?
|
|
| |
YURIY | Дата: Воскресенье, 25 Апреля 2010, 22:51 | Сообщение # 13 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Alex3A) А что мешает загрузить сразу все и обработку сделать в одном цикле? Для меня написать универсальный алгоритм - совершенно не проблема. Да и если рассматривать мой сценарий, там поменяются только параметры в StrFromFile. А циклы будут составляться исходя из задачи. Я просто не хочу запутать автора - это раз. А два - точно не ясно, что он хочет и зачем всё это. Я не удивлюсь, если всё можно сделать вообще иначе, то есть он пошёл не по тому пути. Короче, ждём ответа. Да и в конце-концов, пусть тоже включает голову и думает хоть немного над задачей.
Вечная память Андрею Сергееву!
|
|
| |
Alex3A | Дата: Воскресенье, 25 Апреля 2010, 23:03 | Сообщение # 14 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (YURIY) А два - точно не ясно, что он хочет и зачем всё это. Вот это, по моему, и есть основное.
|
|
| |
Sam726 | Дата: Понедельник, 26 Апреля 2010, 16:04 | Сообщение # 15 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Вижу у меня как-то туго получается обяснять что мне нужно. Вот маленький проэкт вылаживаю, там все есть, но в малых дозах, только на 3 ступени, а у меня их будет много. Думаю там будет все понятно Добавлено (26 Апрель 2010, 16:04) --------------------------------------------- Впрочем цикл то есть... Code name$[1]='1' name$[2]='2' name$[3]='3' name$[4]='4' name$[5]='5'
For x=3 To 5 FileExist("name$[x]","Check") Count=Count+Check MessageEx("Сообщение","name$[x]") Next x Оно нормально вроде... Но это не тот случай. Мне нужны просто цифры. Этого будет достаточно.
|
|
| |
YURIY | Дата: Понедельник, 26 Апреля 2010, 19:52 | Сообщение # 16 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Вынос мозга, честно говоря. Sam726, слабо доказать, что мой пример выше не подходит тебе? Я не понимаю, зачем мусолить одно и то же миллион раз, когда решение давно дано? Неужели так сложно включить голову и правильно внедрить его в проект?
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Понедельник, 26 Апреля 2010, 21:27 | Сообщение # 17 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Да! Спасиб. Это просто пример добавил, может кто что-то еще предложит... Твой код роботает... Но! Но есть загвоздка. При использовании CHR символов он оставляет пометки... ну и короче оно не то что нужно получается. Естественно это образец, его еще нужно доработать, но все же спасибо. Буде что-то химичить.
Сообщение отредактировал Sam726 - Понедельник, 26 Апреля 2010, 22:23 |
|
| |
YURIY | Дата: Понедельник, 26 Апреля 2010, 23:13 | Сообщение # 18 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Sam726) При использовании CHR символов он оставляет пометки... Ну так никто не мешает исправить это. А я, честно говоря, не заметил Code path$='C:\1.txt' ** Считываем строки с 1 по 10 s$=StrFromFile(path$,1,10) ** Заменяем переводы строк на | del$=CHR(13)+CHR(10) s$=StrChange(s$, del$, |)+'|' ** Выбираем все данные For i=1 To GetArrayNum(s$,|) item$=GetArrayItem(s$,|,i) Next i Quote (Sam726) ну и короче оно не то что нужно получается Quote (Sam726) Естественно это образец, его еще нужно доработать Ну ясное дело, я же не экстрасенс делать, как тебе нужно Давай, пробуй. Если что - спрашивай.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Вторник, 27 Апреля 2010, 00:53 | Сообщение # 19 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Эээ... Что я не понял. Но этот твой новый код вообще не пашет. Предыдущий работает с помехами, а это что-то у меня не хочет. Quote Ну ясное дело, я же не экстрасенс делать, как тебе нужно А я для чего образец выложил. Вы ж сами писали что не можете толком понять что нужно, я и выложил пример в котором можно эксперементировать.
|
|
| |
YURIY | Дата: Вторник, 27 Апреля 2010, 00:58 | Сообщение # 20 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Sam726) Предыдущий работает с помехами, а это что-то у меня не хочет. Не может быть. Что-то делаешь не так. Кстати, часто нужно бы советовать новичкам пользоваться отладчиком для выявления ошибок. Попробуй в этот раз! Подробнее в справке. Quote (Sam726) А я для чего образец выложил Ну вообще-то я тот код написал раньше твоего примера. А сейчас вижу, что пример всё равно актуален. За тебя ведь 2 цифры и 2 переменные я менять не буду...
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Вторник, 27 Апреля 2010, 01:12 | Сообщение # 21 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Я пойму, я научусь, я добюсь нужного результата. Там то ведь получается нужно все голиш менять обычные цифры. Нужно только понять как...
|
|
| |
YURIY | Дата: Вторник, 27 Апреля 2010, 01:14 | Сообщение # 22 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Sam726) Я пойму, я научусь, я добюсь нужного результата. Ну вот, уже хорошо. Вникай, пробуй, учись.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Вторник, 27 Апреля 2010, 01:31 | Сообщение # 23 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| АААААААААА!!!!!!!!!!!!!!! Получилось!!! Вот то что мне нужно было: Code For i=1 To 3 file$='<Embedded>\0.txt' a1$=StrFromFile(file$,i,1) SongListAdd("a1$") Next i Всего-то! Вот что справка с человеком делает, ну и желание то же нужно
|
|
| |
YURIY | Дата: Вторник, 27 Апреля 2010, 01:34 | Сообщение # 24 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Это, конечно, хорошо, но... Три раза идёт присваивание переменной file$ одного и того же. Три раза идёт чтение из файла. Молодец, дошёл до этого. А теперь попробуй разобрать мой пример
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Вторник, 27 Апреля 2010, 01:39 | Сообщение # 25 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Да я на твои примеры и не смотрел особо. Первый выдает не совсем то что нужно. В списке получается баг: И получается что файл не грузится. И к чему там CHR ??? Их там по суте вообще не долно быть. Они все малину портят
|
|
| |
YURIY | Дата: Вторник, 27 Апреля 2010, 01:46 | Сообщение # 26 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Sam726) В списке получается баг: Воспроизведи-ка мне его с кодом последнего моего примера. Quote (Sam726) И к чему там CHR ??? К тому, что не нужно задавать странные вопросы, если не можешь разобраться. Quote (Sam726) Их там по суте вообще не долно быть Ну да, расскажи это программисту по образованию и с опытом... Что там должно быть, а чего нет. Злит уже, блин Надоело глупости слушать. Пришёл за советом, получил его. Сделал всё равно по-своему, через попу. Рассказал мне кучу сказок и как ты хочешь, чтобы я тебе помогал потом?
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Вторник, 27 Апреля 2010, 01:50 | Сообщение # 27 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| Нет. Все. Спасибо большое. С твоим кодом попробую разобратся. Но второй код реально не пашет. Первый я скопировал, вставил, запустил, получилось, но с дефектом. Второй код скопировал, вставил, и вообще ноль, ничего нет. Да же и не знаю почему оно так...
|
|
| |
YURIY | Дата: Вторник, 27 Апреля 2010, 01:53 | Сообщение # 28 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Sam726) Второй код скопировал, вставил Так называемый эффект "копи-паст". Нужно ведь не только это делать, но ещё почесать макушку и исправить под себя! Я тебе ещё раз повторю. Добрый совет, между прочим. Почитай в справке про отладку проекта! Кучу времени сэкономишь и 500 раз спасибо потом скажешь.
Вечная память Андрею Сергееву!
|
|
| |
Sam726 | Дата: Среда, 28 Апреля 2010, 14:19 | Сообщение # 29 |
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
| В чем загвоздка? Все ж правельно. Code For i=1 To 42 a1$='Text'+CHAR(i) file$='<SrcDir>\Data\Number.dat' a2$=StrFromFile(file$,i,1) LoadText("a1$","a2$") Next i И еще один Code For i=1 To 42 a2$='<list>'+CHAR(i) LoadText("a1$","a2$") a3$=StrFromFile(a1$,i,1) a4$='Object'+CHAR(i) SetObjectParam("a4$","a3$") Next i Главное при проверке нормально все, а на деле не хочет...
Сообщение отредактировал Sam726 - Среда, 28 Апреля 2010, 14:20 |
|
| |
YURIY | Дата: Среда, 28 Апреля 2010, 19:41 | Сообщение # 30 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (Sam726) В чем загвоздка? Все ж правельно. Совершенно верно. Всё правильно. Неправильно только запускать такой проект клавишей F5, раз указываешь относительный путь. Запусти отладчик, задолбал уже! И посмотри, что у тебя хранится в каждой переменной. Даже намекну - фигня.
Вечная память Андрею Сергееву!
|
|
| |