powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Универсальная функция добавления новой записи open for random
15 сообщений из 15, страница 1 из 1
Универсальная функция добавления новой записи open for random
    #37076565
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В начале модуля указно много обьявлений Type с полями

Код: plaintext
1.
Public StatusVidkrBazDanih As String *  255  ' Змінна містить інформацію про відкриті файли

Раньше когда я работал с б/д я всегда каджый раз открывал файл и выходя с функции или процедуры закрывал. Сейчас переделал на такой способ:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Function OpenAllFilesForBD(Nom As Long) As Boolean
  Select Case Nom
    Case  130 : Dim tm As NGBD_Artist: Open PapkiPathMax + "\BD_Artist1.txt" For Random As # 130  Len = Len(tm): Mid(StatusVidkrBazDanih,  130 ,  1 ) = "+"
'   Case 131:........
'   Case 132:........Другие файлы и другие типы для tm
'   Case 133:........
  End Select
End Function

Закрытия всех открытых файлов происходит по команде Reset при выходе с формы.

Когда я сделал максимум упрощенный вариант добавления записи, мне пришло в голову сделать его универсальным:
Сдесь рабочий вариант
Код: plaintext
1.
2.
3.
4.
5.
Public Function FN_NG_Artist_Add(tmBaza As NGBD_Artist) As Boolean
  Const NmFileForFN =  130 : If Mid(StatusVidkrBazDanih, NmFileForFN,  1 ) <> "+" Then Call OpenAllFilesForBD(NmFileForFN)
  MaxZ = (LOF(NmFileForFN) \ Len(tmBaza))
  Put #NmFileForFN, MaxZ +  1 , tmBaza
End Function
Содержание:
1. если байт №130 не позначен как "+" значит файл не открыт - открываем
2. узнаем количество записей
3. добавляем данные

а универсальный вариант должен был бы работать если б константу NmFileForFN передавать как параметр в функцию переименовав ее например в FN_NG_Add, да вот к сожелению когда я делаю tmBaza As Variant - VB начинает ругаться. Видимо невозможно универсальную функцию сделать для любых Type'ов ?

с уважением Андрей
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37076569
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.. Ну а если tmBaza As NGBD_Artist вопше не передавать как параметр а tmBaza задать как глобальную переменну
Надеюсь Redim не подведет ? Еще с ним в плотную не работал
Тоесть какие мои действия...
Я могу например сначало давать Redim а потом присвоить значения нужные для добавления а потом вызвать по ходу универсальную функцию добавления. Попробую.
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37076571
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нифига... ReDim только для измереных масивов может дать пространство. Я не вижу больше вариантов
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37076622
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159,

пытался заставить себя прочитать ваш код - не смог.
Что именно вы хотите сделать ?
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37076742
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeпытался заставить себя прочитать ваш код - не смог.
Что именно вы хотите сделать ?
+1
можно как-то упростить вопрос, оставив только самую суть?
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37076803
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Авторы: Shocker.Pro, big-duke
> Что именно вы хотите сделать ?


Самая суть в том, что Андруй хочет сделать аналог перегруженной функции, которая в зависимости от передаваемого
пользовательского типа данных производила сохранение этого типа в файл.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37077052
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Видимо невозможно универсальную функцию сделать для любых Type'ов ?Да.
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37077216
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Видимо невозможно универсальную функцию сделать для любых Type'ов ?Для любых невозможно. Можно было бы наверное что-нибудь придумать, если бы Public Type-ы были описаны в библиотеке типов, тогда бы была доступна информация о типе через стандартные системные интерфейсы.

Но такой подход свойственен процедурному программированию. В ООП такие задачи решаются вполне стандарно и элегантно. Сущности (Type-ы) превращаются в классы, если у них есть общая группа (одна или более) операций (например, сериализация), то она описывается интерфейсом, который должен реализовать класс. Тогда универсальная функция работает с переданными ей ссылками на интерфейс единообразно, главное, чтобы этот интерфейс ей предоставлял необходимую для работы информацию.
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37077235
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... однако на этом этапе стоит задуматься о переходе на БД.
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37077297
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

или на расставание с VB.
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37078501
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я хотел избавится от большого количества кода на каждую таблицу, хоть если разобраться все идет по одному шаблону (Просто раньше я также упустил что есть функция LOF и измерял макс.количество зап. через Do Loop :(. От этого и было больше не только кода но и задержок). А сейчас не столь много нужно исправить чтоб быстренько подготовить новую функцию для новой таблицы. Мысля потом пришла что можна через Select Case Nom также все зделать и впихнуть в ту же функцию все причандаля. В любом случае помогли разобраться. Идиотскии затеи всегда приходят когда распечатаного кода стает на несколько десятков метров
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37078530
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я также упустил что есть функция LOF и измерял макс.количество зап. через Do Loop :(Жуть. Даже не зная про функцию lof, нужно соображать, что количество записей = размер файла / длина записи.
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37078641
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раньше не задумывался. Самоучка. Нас немножко учили только GWBaisc
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37078894
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159,

попробуйте почитать умные книжки - Фаулер, Макконел. Почитайте про ORM.
...
Рейтинг: 0 / 0
Универсальная функция добавления новой записи open for random
    #37084771
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот про ORM вроде как понятно. Я создавал три-четыре года назад шаблон и его тестил, интересовался как Binary и Random способ отличаются. Сейчас база данных у меня работает по нескольким шаблонам, даже сделал себе предварительно програму-помшника, где задаю поля и выбираю какие мне нужны действия с таблицой, после нажатия на "Создать" в текстовом поле меня ждет уже подготовленный код для копирования и вставки в VB. Вначале у меня было много ошибок, но со временем их стало меньше и пока не наблюдается. Все же нужно ручками работать даже после помошника. Немного хотел упростить механизм - не получается. Оставить как есть - не могу успокоится, что-то не хватает. Кода много - проблематично искать что-то, выручают только REM-ы. Обьемная база работает сравнительно медленней чем написанный код вручную, а у меня к разрабатываемому приложению нужно именно скорость и результат. Много времени на это ушло но есть уже результаты. Чтоб они были нескромными нужно еще много поработать. С быстрой сортировкой увы на визуале туго. Такое решение должно было бы быть в VB но его не нахожу.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Универсальная функция добавления новой записи open for random
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]