Предлагаю на суд класс работы с ini

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 24.06.2008 (Вт) 22:36

и какое это отношение имеет к этому топику?
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.06.2008 (Вт) 23:23

Zenitchik
Это зависит от того, чем сохранялся txt.

SLIM
Прямое. Вам бы с Zenitchik'ом скооперироваться, и заняться упражнениями с КА вместе.

Всё равно это то, что, что я тебе собрался написать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 25.06.2008 (Ср) 8:32

Zenitchik
в txt строки разделены так, как их разделил редактор (или программа), создавший этот txt. Если говорить о например редакторе AkelPad, то там можно самому произвольно переключаться между vbNewLine и Chr(13). А VB, как и блокнот, конечно же пишет vbNewLine (Chr(10) + Chr(13))
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.06.2008 (Ср) 8:42

Не <10><13>, а <13><10>. Это стандарт в Windows.
В *nix-системах используется <10>.
Какие фантазии пришли в голову разработчикам AkelPad я не знаю, но <13> не является стандартным разделителем строк.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.06.2008 (Ср) 8:54

Денис
Обязательно надо повторять то, что сказал я, дополняя сведениями с ошибками?

alibek
AFAIK, на маках <13> является стандартным разделителем.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 25.06.2008 (Ср) 18:04

Всё равно это то, что, что я тебе собрался написать.

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.06.2008 (Ср) 18:42

Так напишу. Просто так бы тебе было быстрее.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 25.06.2008 (Ср) 20:31

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

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 25.06.2008 (Ср) 20:50

Хакер:
Вообще, у тебя какая-то помесь ООП-а с ПОП-ом.


Что-то я почитал почитал и немного запутался.
Если я хочу дать возможность сделать так:

Код: Выделить всё
MyIni.Sections.("sss").AddKey"sss","333"

или так

Код: Выделить всё
Dim MySect As CSection

Set MySect = myIni.Sections("MySect")

MySect.AddKey "Weight", "900kg"
MySect.AddKey "Voltage", "380V"
MySect.AddKey "Protection", "IP20"

Set MySect = Nothing


То я уже создаю не один, а два модуля класса? Один myIni, другой Sectons, и из одного вызываю другой...что-то запутался.
Есть класс,на основе него есть объект, в нем метод, этот метот он же и объект, кторый имеет методы и т.д. до неизвестной границы. Это все реализовывается в одном модуле класса или в разных.
Тогда сколько нужно будет модулей если я вдруг зохочу сделать более расширенно(например еще и для ключей)....Как это вообще реализовывается?
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.06.2008 (Ср) 20:54

Как это вообще реализовывается?


Класс CIniFile
Класс CIniSection
(Опционально класс CIniSections).

У CIniFile есть свойство Sections
оно As Collection, или, если ты стал делать CIniSections -- то As CIniSections

Внутри CIniSection твой AddKey и т.д.

Но, имхо, ещё потребуется CIniKey, чтобы внутри CIniSection свойство Keys.

Тогда можно будет писать

myIni.Sections("settings").Keys("volume") = "100db"

А если сделать свойства Sections и Keys как свойства по-умолчанию, так вообще:

myIni("settings")("volume") = "100db"


Тогда сколько нужно будет модулей если я вдруг зохочу сделать более расширенно(например еще и для ключей)....

Уменьшение количества модулей -- это не то, к чему нужно стремиться.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 25.06.2008 (Ср) 21:00

Уменьшение количества модулей -- это не то, к чему нужно стремиться.

Я не об этом. Просто если кто-то будет этим пользоваться, то ему придется подллючать 1, 2 , 3 , 4 ....т.д. модулей. Кому оно надо? Я согласен что это удобнее, но и ресурсов больше и т.д. Самому программисту не удобно ведь.
получаем
1. Класс для работы с ini
2.Класс для работы с секциями
3.Класс для работы с ключами

и.т.д

Что-то мня все это ведет к созданию Dll....или я ошибаюсь?
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.06.2008 (Ср) 21:56

Просто если кто-то будет этим пользоваться, то ему придется подллючать 1, 2 , 3 , 4 ....т.д. модулей.

Ну и что? Нет ничего сложного в подключении 4 модулей.

Я согласен что это удобнее, но и ресурсов больше и т.д.

Каких ресурсов?

Самому программисту не удобно ведь.

Да удобно ему, удобно. Его же не 20 модулей подключать заставляют, а всего-то 4.

1. Класс для работы с ini
2.Класс для работы с секциями
3.Класс для работы с ключами

Фраза "Класс для работы с" must die в виду своей кривости, неправильности и неполности.

Класс представляющий секцию, класс представляющий ключ -- ещё допустимо, но тоже криво.

Что-то мня все это ведет к созданию Dll....или я ошибаюсь?

Как хочешь, можешь и Dll содзать. В виду того, что подобная библиотека вряд-ли нуждается в публичных креатабельных классах, рекомендую для её создания воспользоваться моим NativeDLL, экспортировать одну единственную функцию OpenIni, возвращающую объект класса CIniFile, а все классы сделать Public not creatable.

Будет идельно. (И даже регистрация такой библиотеке не потребуется).

Но вообще, я бы пока не брался делать dll на твоём месте.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 25.06.2008 (Ср) 22:19

Хорошо, такой вопрос. В каком модуле что будет обрабатываться
если мы пишем

Код: Выделить всё
Dim MySect As Section

Set MySect = myIni.Section("MySect")

MySect.AddKey "Weight", "900kg"
MySect.AddKey "Voltage", "380V"
MySect.AddKey "Protection", "IP20"


Значит мы объявили myIni и Section
в строке Set MySect = myIni.Section("MySect") мы передаем объект по Proerty Set в модуле Section.....и передаем мы myIni.Section("MySect"), а это уже свойство модуля myIni Property Get....Тогда метод AddKey будет в модуле Section? Или где? Вот что я понять не могу. Где какаой метод или свойство будет находиться....
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.06.2008 (Ср) 22:20

Значит мы объявили myIni и Section
в строке Set MySect = myIni.Section("MySect") мы передаем объект по Proerty Set в модуле Section.....и передаем мы myIni.Section("MySect"), а это уже свойство модуля myIni Property Get....Тогда метод AddKey будет в модуле Section? Или где? Вот что я понять не могу. Где какаой метод или свойство будет находиться....

В целом, глупость какая-то. Где объявишь метод, там он и будет находиться :?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 25.06.2008 (Ср) 22:23

Значит я не прально спросил. Если в Section есть метод AddKey, то нужно
знать куда обавлять. Ну допустим в массив секций/ключей, но он то у меня в ClsIni....... :? :( :oops:
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.06.2008 (Ср) 22:27

В Sections нет методов, Sections это Public-свойство, являющееся объектное-переменной-ссылкой, ссылающейся на коллекцию объектов класса CSection.

Ну допустим в массив секций/ключей, но он то у меня в ClsIni.......

Ничего не понял.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 25.06.2008 (Ср) 22:36

Ясно.....в этом плане я безнадежен......пойду вырью ртути и почитаю ООП, если найду чтонть в нете для VB :scratch: :scratch:
Пишите жизнь на чистовик.....переписать не удастся.....

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Сообщение Zenitchik » 26.06.2008 (Чт) 19:30

SLIM
Госпади... Давно бы книжку по VB купил - любую, у них у всех КПИ порядка 50% (замечено, что чем дешевле книга - тем КПИ выше :lol: )
Знание английского языка - затрудняет понимание кода

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 26.06.2008 (Чт) 21:08

Госпади... Давно бы книжку по VB купил

Да у меня их куча. Причем как в электронном виде так и в классическом. Правда в электронном больше по .NET...
Пишите жизнь на чистовик.....переписать не удастся.....

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Сообщение Zenitchik » 26.06.2008 (Чт) 23:10

И что, де осознали, как работать с классами? Не бойтесь, придет с опытом. Главное - пробовать.
Знание английского языка - затрудняет понимание кода

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сообщение SLIM » 26.06.2008 (Чт) 23:18

Опыт- это наверное одно из самого важного в программировании. Не самое главное знать операторы, функции, процедуры, типы и т.д......Главное нароботать опыт в работе со всем этим. А потом понять, как Хакер как это делается на низком уровне и узнать как это сделать проще......
Пишите жизнь на чистовик.....переписать не удастся.....

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 27.06.2008 (Пт) 9:28

alibek
Хакер
Я перепутал местами 10 и 13. Конечно же #10 в никсах. и #13#10 в винде.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 27.06.2008 (Пт) 14:50

Денис
а не 10 13 часом?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 27.06.2008 (Пт) 18:44

—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Сообщение Zenitchik » 27.06.2008 (Пт) 22:01

Ага. А я тоже делал Asc(vbNewLine) и Asc(Mid(vbNullLine,2)) :))
Получилось 13 и 10 соответственно.
Под DOS я имел дело только с #13, который был знаком возврата каретки (== Enter).
Знание английского языка - затрудняет понимание кода

Пред.

Вернуться в Народный треп

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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 6

    TopList  
cron