ошибка?

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

ошибка?

Сообщение prom-net-pixel » 25.12.2009 06:17:54

Привет all!

На форуме недавно, не знал куда написать, написал сюда.
В TSQLite3Dataset наблюдаю следующую вещь: при изменении значения FileName в "инспекторе объектов" путём выбора файла в дальнейшем невозможно работать с БД, которая находится по-умолчанию в каталоге с программой. При изменении этого свойства на (существующую) "database.db" создаётся таблица с таким именем в домашнем каталоге.
Возможно, кто-нибудь проверит и запостит ошибку на багтрекере..

Ubuntu 9.10
Lazarus 0.9.28.2-0
prom-net-pixel
новенький
 
Сообщения: 13
Зарегистрирован: 21.12.2009 02:25:50

Re: ошибка?

Сообщение Padre_Mortius » 25.12.2009 10:18:06

TSQLite3Dataset позволяет работать только с одной базой данных, путь к которой прописывается в FileName. если вам необходимо данный компонент использовать с несколькими БД, то необходимо либо перепрописывать FileName, либо использовать второй компонент TSqliteDataset
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: ошибка?

Сообщение prom-net-pixel » 25.12.2009 19:54:48

Padre_Mortius писал(а):TSQLite3Dataset позволяет работать только с одной базой данных, путь к которой прописывается в FileName. если вам необходимо данный компонент использовать с несколькими БД, то необходимо либо перепрописывать FileName, либо использовать второй компонент TSqliteDataset

Вы меня неправильно поняли. Попробую объяснить ещё раз. Раньше я мог указать "database.db" для имени файла и компонент работал с БД, находящейся в в каталоге с программой. Теперь компонент ищет БД не в каталоге с программой, а в домашнем (/home/username) каталоге, а не находя, создаёт.
prom-net-pixel
новенький
 
Сообщения: 13
Зарегистрирован: 21.12.2009 02:25:50

Re: ошибка?

Сообщение Padre_Mortius » 25.12.2009 20:02:50

Сории. неправильно понял. В общем это все-таки наверное не баг, а фича. Если не указываем полный путь, а только относительный, то при нормальном подходе к безопасности и разграничению прав, единственной доступной папкой на запись является папка профиля

Добавлено спустя 2 минуты 59 секунд:
Да и жесткая привязка базы к определенной папке, по моему мнению, не есть хорошо. Случаи всякие бывают. поэтому всегда делаю данный параметр настраиваемым
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: ошибка?

Сообщение prom-net-pixel » 25.12.2009 20:37:54

Хм, об этом конечно не подумал... Но странно, согласись: сначала я указывал просто имя файла и было всё нормально, БД лежал там, где должен по-умолчанию. Но стоило мне только 1 раз нажать на изменение этого параметра и, даже не указывая, просто отменить - ничего не работает как раньше...
Если это на самом деле фича, то она с багом :)
prom-net-pixel
новенький
 
Сообщения: 13
Зарегистрирован: 21.12.2009 02:25:50

Re: ошибка?

Сообщение Padre_Mortius » 25.12.2009 21:22:09

А путь нигде не меняется в проекте? Посмотрел внимательнее и не получил такой баг. Правда проверял по Win32. Как только Буду дома, то проверю под CentOS. Но вроде там тоже ругался если не вводить полный путь. В исходниках ничего похожего на папку профиля нет.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: ошибка?

Сообщение prom-net-pixel » 25.12.2009 21:28:12

Путь меняется при нажатии баттона, но это не имеет значения. Банально невозможно переключить свойство TSQLite3Dataset Active в True, ругается на отсутствие таблиц в БД, которую только что создал :)
:idea: Если вписать вместо "database.db" "./database.db" то проблема решается. Но ведь раньше так не нужно было делать, ога...
prom-net-pixel
новенький
 
Сообщения: 13
Зарегистрирован: 21.12.2009 02:25:50

Re: ошибка?

Сообщение Padre_Mortius » 25.12.2009 22:26:11

свежая svn ревизия от 25-12-2009 lazarus.
Если вписать вместо "database.db" "./database.db" то проблема решается


Получаю сообщение "SQLITE_ERROR - no such table"

И все таки более грамотно будет писать полный путь к базе данных в поле FileName
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: ошибка?

Сообщение prom-net-pixel » 25.12.2009 22:56:52

prom-net-pixel писал(а): ругается на отсутствие таблиц в БД, которую только что создал :)

Padre_Mortius писал(а):Получаю сообщение "SQLITE_ERROR - no such table"

Это, вобщем, одно и то же.
prom-net-pixel писал(а):Если вписать вместо "database.db" "./database.db" то проблема решается. Но ведь раньше так не нужно было делать, ога...

-это для линуха.
Дак как ? Это ошибка или нет? Так, сами разберутся :)

Добавлено спустя 8 минут 42 секунды:
Padre_Mortius писал(а):И все таки более грамотно будет писать полный путь к базе данных в поле FileName

Всё-таки вопрос не в том, что более грамотно, а в том, как это должно работать.
prom-net-pixel
новенький
 
Сообщения: 13
Зарегистрирован: 21.12.2009 02:25:50

Re: ошибка?

Сообщение Padre_Mortius » 25.12.2009 23:52:32

Судя по коду компонента в поле FileName должен заносится полный путь к базе данных, т.к. никаких подстановок в коде нет
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: ошибка?

Сообщение Vadim » 26.12.2009 10:33:08

prom-net-pixel
А Вы, когда программа работает правильно и когда неправильно, проверьте, в каком каталоге находитесь с помощью функции GetCurrentDir и тогда сразу всё станет ясно. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: ошибка?

Сообщение alexrayne » 26.12.2009 13:21:37

Сдается мне что даже если и есть возможность правильного указания имени к базе, всеравно ето больше баг а не фича. ибо по моему опыту естественно начинать поиск файлов в каталоге с программой а не в гдето еще.
для линуха может быть ето и нетак но насколько я понял на виндовс вообще забили. ето раз.
имхо, любые изменения\фиксы\нововведения должны по максимуму обеспечивать обратную совместимость кода\преемственность. а тут она нарушена 100%. ето два.
имхо надо постить рапорт о баге.
alexrayne
постоялец
 
Сообщения: 125
Зарегистрирован: 03.12.2008 16:56:26

Re: ошибка?

Сообщение Mr.Smart » 26.12.2009 15:38:13

alexrayne писал(а):... ибо по моему опыту естественно начинать поиск файлов в каталоге с программой а не в гдето еще....

Раз вы заговорили про Windows, то внесу свою лепту. Ваше утверждение справедливо только для обычных приложений Windows, а если ваше приложение является сервисом (службой) то это не так :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: ошибка?

Сообщение AbakAngelSoft » 26.12.2009 15:58:56

Начинать поиск с папки рядом с программой неправильно в любом случае вне зависимости от операционки. Windows позволяет это делать для совместимости с досом, но категорически не рекомендует так делать!
Для хранения данных программы в windows есть реестр и несколько специально отведенных папок, например ApplicationData, ProgrammData и т.д.
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: ошибка?

Сообщение alexrayne » 26.12.2009 23:59:23

Начинать поиск с папки рядом с программой неправильно в любом случае вне зависимости от операционки. Windows позволяет это делать для совместимости с досом, но категорически не рекомендует так делать!
Для хранения данных программы в windows есть реестр и несколько специально отведенных папок, например ApplicationData, ProgrammData и т.д.

а в чем проблемато? насколько я понимаю поиск в каталогах пользователя типа home требуется для поддержки многопользовательскости, если етого ненужно то невижу никакой беды в этом.
я пишу проги на винду тоже, и мне для простоты использования неохота заниматься связями с реестром и пользовательскими настройками если я могу прекрасно обойтись без этого. а возможность обойтись без установки программы и обойтись простым ее копированием я весьма ценю. так что претензии против примитивизма DOSа мне както неукладываются. если его хватает для повседневного пользования то зачем отбрасывать? а если вы уж затачиваетесь под многопользовательскость, то какие проблемы явно запользовать пользовательские папки.

кстати по моему опыту работы в bash, поиск файла он вел таки сначала в текущей папке, а папку ~home надо было указывать явно.
alexrayne
постоялец
 
Сообщения: 125
Зарегистрирован: 03.12.2008 16:56:26

След.

Вернуться в Обучение Free Pascal

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru