Как лучше хранить данные?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Как лучше хранить данные?

Сообщение Tarik » 22.12.2003 (Пн) 20:03

Здравствуйте, люди! У меня тут назрел один вопросец. Недавно я всё же дописал свой универсальный тест - всё пашет, практически без глюков :) . Но вот какая проблема: сейчас все вопросы и ответы содержатся в базе данных, а это не есть гут (для тех условий, в которых его будут использовать). Так вот, может кто-нибудь подкинет идею альтернативного вместилища информации? Лично у меня мелькали идеи по поводу текстовых файлов с табуляцией, но этот способ не подходит, т. к. вопросы очень часто бывают многострочными. По той же причине отпали ini-файлы :(
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 22.12.2003 (Пн) 20:16

хмм ну можешь хранить вопросы так:
Код: Выделить всё
q.txt:
[question]
[text]текст вопроса
можно много строчек[/text]
[var]вариант ответа[/var]
[var]вариант ответа2[/var]
[var]вариант ответа3[/var]
...
[/question]


ну и все=) потом читать это все... можно еще сделать у тега [question] параметры н-р
[question num=1] номер вопроса, можно сделать у [var] параметр goto
[var goto 2] после ответа на этот вопрос перевдресация идет на 2 вопрос =)) ну и т.д =) и реализуется это несложно =)

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 22.12.2003 (Пн) 20:38

Мда, похоже, дело запахло парсерами. Не люблю я парсеры... Но что делать, придётся... :)
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 22.12.2003 (Пн) 21:36

А нафига!!! Вы что, братцы - парсер у нас универсальный - от MS для XML. Храните в XML формате и не надо мучаться!
Всего-то:

Код: Выделить всё
<question info="">
<answer is_right="1"></answer>
<answer is_right="0"></answer>
</question>
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 22.12.2003 (Пн) 21:43

А где сию радость достать можно? И информацию, как это всё работает и каким макаром это всё использовать? Вообще, до меня уже давно доходили слухи о Великом и Могучем XML :) , но я с ним до сих пор как-то не сталкивался :oops:
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 22.12.2003 (Пн) 21:54

А посмотри в References - найди библиотечку с XML. А там в Object Browser :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 22.12.2003 (Пн) 22:08

Я поражён! Вау! :shock: Для каждого свойства описание есть! Хоть и краткое, но есть! Да, не часто такое увидишь... Как сказал бы один мой препод по Инглишу (к слову, бааальшой приколист): "It's just a completely WOW!" :) Что ж, бум разбираться... Спасибо за дельный совет!
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 23.12.2003 (Вт) 16:51

Не понял... Он что, русский язык в принципе не понимает? :cry:
Есть файл "Test.xml":
<root>
<testinfo>
<testname>Testing...</testname>
</testinfo>
</root>

и есть код:
Код: Выделить всё
Dim Doc As New MSXML2.DOMDocument
Dim NodeList As MSXML2.IXMLDOMNodeList
Dim nNode As MSXML2.IXMLDOMNode

Private Sub Form_Load()
Set Doc = CreateObject("MSXML.DOMDocument")
Doc.Load (App.Path & "\tests\test.xml")
Set NodeList = Doc.getElementsByTagName("testinfo")
For i = 0 To NodeList.length - 1
    Set nNode = NodeList.Item(i)
    MsgBox nNode.childNodes(0).Text
Next
End Sub

Запускаю - всё в норме, в мессажбоксе выдаёт "Testing...". Меняю в файле "Testing..." на "Тестируем...":
<root>
<testinfo>
<testname>Тестируем...</testname>
</testinfo>
</root>

запускаю - ничего не происходит... В чём дело-то :?:
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 23.12.2003 (Вт) 17:04

Учитесь у гуру ;).

Пример:

Код: Выделить всё
<?xml version='1.0' encoding="windows-1251"?>
<claim>
<author>
    <name>ФИО</name>
    <adress>Полный почтовый адрес с индексом</adress>
    <tel>Телефон, если есть</tel>
    <fax>Факс, если есть</fax>
    <age>Дата рождения в формате dd.mm.yyyy</age>
    <date>Дата представления заявки dd.mm.yyyy</date>
    <lang>Язык проекта (русский/английский)</lang>
    <skill>Языки программирования и технологии, которыми Вы владеете</skill>
</author>
<project>
    <name>Название проекта</name>
    <description>Краткое описание</description>
    <archive>Название архива</archive>
    <net>Использованные преимущества .net</net>
    <windows>Использованные функции платформы Windows</windows>
    <web>Использованные Web технологии</web>
</project>
</claim>
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 23.12.2003 (Вт) 18:00

Ух ты, и вправду пашет! :P Ещё раз большое спасибо!
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 23.12.2003 (Вт) 19:16

Учите XML баитенька, за ним будущее...
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 23.12.2003 (Вт) 20:37

Надо же, уже god... Что ж дальше-то будет? :lol:
А XML - штука действительно полезная, хоть многие его и ругают... :roll:
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

sanches
El compa&#241;ero
El compa&#241;ero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 23.12.2003 (Вт) 23:27

Ух ты, теперь надо XML заняться. Хотя я раньше я для такой проги использовал почти парсер (ну это громко сказано конечно) - промучался n-ое количество времени. И кстати вопросы у меня там все в RTF формате были.
А кстати, правилно ли распознаются тексты между тэгами, если в них будет закрывающий тэг, например:
<question>тра та та ... тра та та </question> тра та та тра та та </question>
<question>...</question>
ну всякое же может быть :wink:
Изображение

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 26.12.2003 (Пт) 15:27

А вот и ещё вопрос: как записать данные в node? Я пробовал так:
Код: Выделить всё
nNode.childNodes(sqNumber).childNodes(0).Text = tQuest.Text

всё оставалось без изменений. Потом так:
Код: Выделить всё
Set nNode.childNodes(sqNumber).childNodes(0).Text = tQuest.Text

Писал, что неправильное использование св-ва Text. Птом ещё вот так:
Код: Выделить всё
nNode.childNodes(sqNumber).childNodes(0).nodeValue = tQuest.Text

Пишет, что это действие невозможно выполнить для узла типа ELEMENT. В дебаге выясняется, что nNode.childNodes(sqNumber).childNodes(0).nodeValue = null. Пробовал даже так:
Код: Выделить всё
set nNode.childNodes(sqNumber).childNodes(0).nodeValue = tquest.text

вообще пишет, что object required.
Что я делал не так? И как всё же записать данные в этот самый нод???
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 26.12.2003 (Пт) 17:21

ААА!!! ПАМАГИТЕ!!! Маразм атакует :!: Это ж как надо было переучиться, чтобы не увидеть мааааленькую процедурку Save в DOMDocument!!! Ужас какой :evil: ! Позор на мою седую голову! :)
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

acoustic
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 09.12.2003 (Вт) 17:30

Сообщение acoustic » 27.12.2003 (Сб) 12:43

Может быть стоит взглянуть на готовое решение:
vbXML 0.04 хотя... чисто в целях изучения кода. Есть кое какие недостатки и недоделки, типа невозможности обрабатывать, как разные, значения с одинаковыми именами типа:
Код: Выделить всё
<currency>
    <name>USD</name>
    <value></value>
</currency>
<currency>
    <name>EUR</name>
    <value></value>
</currency>

:wink:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 8

    TopList