Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Извлечение данных из файла txt
foxjonДата: Четверг, 08 Ноября 2007, 13:45 | Сообщение # 1
Новый участник
Группа: Пользователи
Сообщений: 5
Репутация: 0
Награды: 0
Статус: Offline
Всем доброго дня.

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

Возможно мне окажут помощь мастера, которые освоили программу.

Проблема заключается в следующем –
Для вывода данных в окне программы по определенным строкам из текстового файла необходимо построить следующую структуру:

Например

Название - Nokia N70
Цвет – черный
Антенна – встроенная
Гарантия – 3 года
Просмотреть – www.kjjlkj.ru
Email – ghghg@mail.ru

Количество моделей телефонов занесенных в текстовый файл не должно ограничивать возможности работы скрипта при выводе данных по ним.
Названия телефонов желательно поместить в список, а при клике на определенную модель в заранее размеченные поля окна программы выводятся указанные характеристики и контактные данные

На небольшом примере надеюсь освоить предоставленный урок и пользоваться им при дальнейшем изучении программы.

Всем спасибо.

 
as-masterДата: Четверг, 08 Ноября 2007, 14:51 | Сообщение # 2
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Тебе вполне подойдет пример "База данных" от WWS:
http://www.mmbuilder.ru/files/base.zip

Суть состоит в следующем.
Структура текстового файла должна быть такой, что каждая строка файла
представляет собой массив на только одну модель телефона, а в этом массиве
все данные разделены делимитером, в качестве которого обычно используют
знак решетки #. Пример строки файла:

Nokia N70#черный#встроенная#3 года#www.kjjlkj.ru#ghghg@mail.ru#

И так для всех моделей.

Затем формируется список следующим скриптом (здесь list$ - это путь к текстовому файлу):

Code
For I=1 To NOL(list$)
    string$=StrFromFile(list$,I,1)
    model$[I]=GetArrayItem(string$,#,1)
    ListBoxAddItem("SongList","model$[I]")
Next I

Этот сценарий заполнит список SongList названиями моделей: Nokia N70 м т.д.

Далее пишем скрипт, который будет запускаться по щелчку на пункте списка
(здесь numitem - это номер пункта, по которому кликнули мышью):

Code
string$=StrFromFile(list$,numitem,1)
model$=GetArrayItem(string$,#,1)
color$=GetArrayItem(string$,#,2)
antenna$=GetArrayItem(s tring$,#,3)
garant$=GetArrayItem(string$,#,4)
site$=GetArrayItem(string$,#,5)
mail$=GetArrayItem(string$,#,6)

Таким образом мы получаем все значения, относящиеся к данной модели.
Осталось только вывести их в нужные поля. Всё smile

Если ни шиша не понял, могу сделать пример. За рубль :)


Да пребудет с вами ММВ!
 
as-masterДата: Четверг, 08 Ноября 2007, 15:36 | Сообщение # 3
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Собственно, вот и готовый пример.
Среди прочего, заодно грузится и картинка модели данного телефона.
Выложу потом пример на сайт, потому-что тема актуальна. Кстати, именно
по такому принципу организована моя программулина My Cookery Book smile


Проект сделан на ММВ497, можно запускать в режиме проверки по F5,
потому-что файл базы и картинки сделаны внедренными файлами.

Прикрепления: phone.zip (67.2 Kb) · 1140247.png (19.4 Kb)


Да пребудет с вами ММВ!
 
toizyДата: Четверг, 08 Ноября 2007, 16:49 | Сообщение # 4
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
as-master, ты воистину реактивный!

Жизнь оказалась не такой уж и забавной, как поначалу...
 
as-masterДата: Четверг, 08 Ноября 2007, 17:15 | Сообщение # 5
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (toizy)
as-master, ты воистину реактивный!

Да блин у меня ж всё заранее было, готовые решения, в кулинарной книжке smile
Только нашел несколько картинок телефонов - и всё. 15 минут работы.





Да пребудет с вами ММВ!
 
ИгорьДата: Пятница, 09 Ноября 2007, 07:23 | Сообщение # 6
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
Я вот посмотрел на все это... подумал... раза два... На кой наши студенты делали базу студентов в громоздком и дорогом Access (или как он там правильно пишется), который еще и не на всех машинах есть, а не, например, подобным образом... ну, хоть в Delfi, они его изучают... И дешевле, и запускается на любой машине, и дизайн можно какой угодно сварганить...

Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету...
Марк Твен
 
as-masterДата: Пятница, 09 Ноября 2007, 09:52 | Сообщение # 7
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (Игорь)
который еще и не на всех машинах есть

Вот-вот, я его, этот Эксес, только вчера и установил, потому-что у меня не шла
одна программа, и я подумал, что требуется поддержка его баз даных. Но... ни фига
не помогло. Сегодня снесу его нафиг обратно. А заодно и Пауер Паинт снесу,
так что и презентации у меня больше не будут поддерживаться smile

Резюме: ММВ - форева! smile


Да пребудет с вами ММВ!
 
ИгорьДата: Пятница, 09 Ноября 2007, 09:59 | Сообщение # 8
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
Quote (as-master)
А заодно и Пауер Паинт снесу

Я подумываю... в свете грандиозных "борьб" с пиратством... на некоторые машины установить OpenOffice - абсолютно бесплатный, не такой громоздкий, поддерживает форматы Офиса... Что еще нужно для обычного ведения документации? Убейте меня валенком, не понимаю я, для чего наши студенты ставят еще порядочно сырой офис 2007, чтобы потом печатать в нем рефераты... Или я старею??? dry


Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету...
Марк Твен
 
as-masterДата: Пятница, 09 Ноября 2007, 10:06 | Сообщение # 9
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (Игорь)
для чего наши студенты ставят еще порядочно сырой офис 2007

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

При всем при том, что офис - крутейшая программа, всё же плата за это
слишком дорогая (я имею в виду засорение системного диска всяким хламом).
Могу только представить, КАК засоряет систему Офис-2007.


Да пребудет с вами ММВ!
 
ИгорьДата: Пятница, 09 Ноября 2007, 10:11 | Сообщение # 10
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
Quote (as-master)
Могу только представить, КАК засоряет систему Офис-2007

И еще нужно учитывать, что файлы, созданные на нем, уже не открываются в более старых версиях


Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету...
Марк Твен
 
as-masterДата: Пятница, 09 Ноября 2007, 10:31 | Сообщение # 11
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (Игорь)
что файлы, созданные на нем, уже не открываются в более старых версиях

Не, ну само собой, что надо выбирать Save As...
Так, в теме, где про копирование файлов с CD, сейчас напишу.

И самое главное:
foxjon, дорогой ты наш автор вопроса данной темы!
Помог ли тебе мой совет? А то развели мы тут флуд не по теме.


Да пребудет с вами ММВ!
 
humanoidДата: Пятница, 09 Ноября 2007, 10:41 | Сообщение # 12
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
А как в этом примере реализовать возможность построчного редактирования контента...?

Кстати для меня My Cookery Book - это как бы совершенно новая, на более высоком качестве концепция...в реализации возможностей ММВ... как бы мы подходим к более глубокому осмыслению скрытых возможностей и фич...


Hi, from Moon!
 
as-masterДата: Пятница, 09 Ноября 2007, 10:49 | Сообщение # 13
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (humanoid)
А как в этом примере реализовать возможность построчного редактирования контента...

В принципе ничего сложного, но автор вопроса данную задачу перед нами не ставил.
Вопрос стоял только О ВЫВОДЕ ДАННЫХ, а не о вводе их.

По сути, надо вместо текстовых объектов, куда выводятся данные, использовать эдитбоксы,
затем собирать все данные в одну переменную-строку, вставляя между ними делимитер #,
и затем готовую строку записывать в файл. Если новая запись - использовать команду
StrToFile(list$,string$,TRUE,TRUE), а если редактирование имеющейся записи -
то StrToLine(list$,string$,numitem,TRUE).

Quote (humanoid)
My Cookery Book - это как бы совершенно новая, на более высоком качестве
концепция в реализации возможностей ММВ...

Вот если у Алекса хватит терпения довести до ума плагин для работы с базами данных,
то, как он обещает, ММВ будет просто летать на таких операциях :)


Да пребудет с вами ММВ!
 
foxjonДата: Пятница, 09 Ноября 2007, 15:33 | Сообщение # 14
Новый участник
Группа: Пользователи
Сообщений: 5
Репутация: 0
Награды: 0
Статус: Offline
Quote (as-master)
И самое главное:
foxjon, дорогой ты наш автор вопроса данной темы!
Помог ли тебе мой совет? А то развели мы тут флуд не по теме.

Да помогло, спасибо за помощь и поддержку, вопрос по сути своей элементарный но для не совсем шарящих и это иногда становится проблемой.

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

Спасибо.

Добавлено (09 Ноября 2007, 15:33)
---------------------------------------------
Появился еще вопрос.

В моем случае скрипт работает с базой данных, это понятно, а вот каким образом можно осуществить идею перехода по веб адресу и отправить письмо e-mail

В моем примере это строки

Просмотреть – www.kjjlkj.ru
Email – ghghg@mail.ru

 
humanoidДата: Пятница, 09 Ноября 2007, 16:19 | Сообщение # 15
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
Code
В моем случае скрипт работает с базой данных, это понятно, а вот каким образом можно осуществить идею перехода по веб адресу и отправить письмо e-mail

Года три назад я делал, что-то похожее, где линки сразу становились активными... проект назвался Personal Inscriber...

Типа записной книжки... где-то должен на диске валяться... пока найдти не могу


Hi, from Moon!
 
foxjonДата: Пятница, 09 Ноября 2007, 16:23 | Сообщение # 16
Новый участник
Группа: Пользователи
Сообщений: 5
Репутация: 0
Награды: 0
Статус: Offline
Personal Inscriber

вот здесь он лежит

http://www.mmbuilder.ru/project_all.html

щас гляну что внутри

 
as-masterДата: Пятница, 09 Ноября 2007, 16:26 | Сообщение # 17
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (foxjon)
каким образом можно осуществить идею перехода
по веб адресу и отправить письмо e-mail

Если это простые текстовые объекты, то назначить на них действие Run()
с переменной site$ или mail$.

Вот тот же пример, чуть доработанный.

Прикрепления: phone.zip (67.3 Kb)


Да пребудет с вами ММВ!
 
foxjonДата: Пятница, 09 Ноября 2007, 16:47 | Сообщение # 18
Новый участник
Группа: Пользователи
Сообщений: 5
Репутация: 0
Награды: 0
Статус: Offline
там работает плагин, как применить данный вариант на свой пример я не знаю

Добавлено (09 Ноября 2007, 16:47)
---------------------------------------------
к сожалению моя прога версии 4.9.7 ваш пример phone.zip открыть мне не удалось

 
as-masterДата: Пятница, 09 Ноября 2007, 17:18 | Сообщение # 19
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (foxjon)
к сожалению моя прога версии 4.9.7
ваш пример phone.zip открыть мне не удалось

Прошу прощения, я-то уже не слежу за версиями...
Вот в версии 497.




Прикрепления: phone.zip (67.3 Kb)


Да пребудет с вами ММВ!
 
YURIYДата: Пятница, 09 Ноября 2007, 18:09 | Сообщение # 20
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Игорь)
На кой наши студенты делали базу студентов в громоздком и дорогом Access (или как он там правильно пишется), который еще и не на всех машинах есть

Для работы с базой Access не нужен сам Акцес. Все запросы выполняются программным методоми. У меня есть исходник на Basic, где программа работает с такой базой и работает без Access.



Вечная память Андрею Сергееву!
 
as-masterДата: Пятница, 09 Ноября 2007, 18:45 | Сообщение # 21
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (Yuriy)
Для работы с базой Access не нужен сам Акцес

Да, редкий случай для Майкрософт. Можно сказать, уникальный smile

Еще бы их презентации в Power Point работали без самого Пауэр Паинта...




Да пребудет с вами ММВ!
 
humanoidДата: Пятница, 09 Ноября 2007, 20:06 | Сообщение # 22
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
Quote
Да, редкий случай для Майкрософт. Можно сказать, уникальный

Еще бы их презентации в Power Point работали без самого Пауэр Паинта...

А уменя есть где-то старинный модуль который запускает презентации ПоверПойнта...

Поискать надо... я делал на MMB рантайм и запускал всю эту бадягу... в полный экран.. без установленного ПП

Добавлено (09 Ноября 2007, 20:06)
---------------------------------------------
Вот кому надо отдельный модуль для запуска PowerPoint презентаций... пользуйтесь (работает автономно... проверено)

http://rapidshare.com/files/68551819/pptrun.zip.html ~3mb

много вопросов не задавайте там и так все понятно... таже концепция вьюера (только не работает с плагинами эффектов от сторонних разработчиков)

можно в Авторане прописать строку Ppview32.exe file.ppt и записать на диск... можно батник повесить... можно батник конвертнуть в Экзек... можно на ММВ сделать ЕХЕ рантайм... короч и так все ясно...


Hi, from Moon!
 
foxjonДата: Суббота, 10 Ноября 2007, 13:02 | Сообщение # 23
Новый участник
Группа: Пользователи
Сообщений: 5
Репутация: 0
Награды: 0
Статус: Offline
Попробовал предложенній вариант с переменніми Run("site$","") и Run("mail$","")
mail$ по какой то причине не запускается, винда выдает ошибку, site$ работает нормально.

Но опять появился вопрос, рассмотрим пример массива данных

Nokia N70#черный#встроенная#3 года#www.kjjlkj.ru#ghghg@mail.ru#Стильный дизайн##www.tttttttt.ru#вес 170 гр#www.aaaaaa.ru#

С переменно Run("site$","") будет запускаться только тот адрес что стоит первым в массиве данных даже при клике на других www адресах которые видны так же как ссылки, в моем случае это будет только www.kjjlkj.ru

Вопрос состоит в следующем как правильно разделить www адреса, чтобы каждый работал как отдельная ссылка.

 
toizyДата: Суббота, 10 Ноября 2007, 16:12 | Сообщение # 24
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (foxjon)
mail$ по какой то причине не запускается

Мож она должна содержать mailto: в начале?


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Воскресенье, 11 Ноября 2007, 00:31 | Сообщение # 25
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote
Вот если у Алекса хватит терпения довести до ума плагин для работы с базами данных,

В процессе, дбф поддерживает строки длиной 255 символой, что для твоей книги маловато, леплю
свою добавку, под твою базу, сделаю - выложу
 
aparartДата: Понедельник, 17 Марта 2008, 08:40 | Сообщение # 26
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
Почитал эту тему, попробовал сделать как сдесь написано так как надо чтоб даные сохранились, сохранить в файл кое как получилось, а вот загрузить нет и в самом файле сохраняются все данные подряд и за прошлый и за этот запуск, так что он по идеи мог бы сильно разростись если много данных, извиняюсь если вопрос уже был но ничего по этому кроме этой темы ничего не нашел, так как сохранить например инфу из эдит боксов и чтоб они заргурзились с помощью обзора, если не сложно напишите более подробно.
 
as-masterДата: Понедельник, 17 Марта 2008, 11:01 | Сообщение # 27
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Вопрос ты задал слишком сумбурно.
Нельзя ли было понятнее, подробнее объяснить проблему?

Я смог только понять, что тебе нужно очищать файл перед сохранением
в него новой записи. Ну так с этим проблем-то нет!






Да пребудет с вами ММВ!
 
Alex3AДата: Понедельник, 17 Марта 2008, 11:26 | Сообщение # 28
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (as-master)
Вот если у Алекса хватит терпения довести до ума плагин для работы с базами данных,
то, как он обещает, ММВ будет просто летать на таких операциях smile

Плагин давно готов, и лежит уже давно, даже "завонялся!"
 
aparartДата: Понедельник, 17 Марта 2008, 23:37 | Сообщение # 29
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
as-master,
Как сохранить данные из эдитбоксов в текстовый файл, как очищать файл перед сохранением в него новой записи, как загружаются потом данные из тексового файла, вроде понятнее smile буду благодарен за ответ
 
RushДата: Вторник, 18 Марта 2008, 13:47 | Сообщение # 30
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
Quote (aparart)
Как сохранить данные из эдитбоксов в текстовый файл

Допустим, переменная эдитбокса называется EditBox$ (такова она по умолчанию). Пишется в файл она таким образом:
Code
rv=StrToFile(filename$,EdiBox$,append,linefeed)

где filename$ - имя файла, куда ты хочешь записать. append - добавлять или нет запись в конец файла. Если поставить 0 или FALSE, файл перепишется заново, если 1 или TRUE - добавится к существующему. Соответственно, linefeed - добавлять или нет запись с новой строки (синтаксис аналогичен предыдущему).
Это и ответ на вопрос как очистить файл перед сохранением новой записи.
Quote (aparart)
как загружаются потом данные из тексового файла

Загрузка из файла:
Code
text$=StrFromFile(filename$,fromline,numberoflines)

где fromline - номер строки, с которой начинается чтение из файла. numberoflines - к-во строк, которые нужно считывать. Если нужно прочитать весь файл, то fromline=1, а numberoflines=-1.

Все это прекрасно описано в справке. Причем на русском. Надо только не лениться и читать. Ну и осмысливать, конечно, желательно...

Сообщение отредактировал Rush - Вторник, 18 Марта 2008, 13:52
 
  • Страница 1 из 1
  • 1
Поиск: