Страница 1 из 2
		
			
				ошибка?
				
Добавлено: 
25.12.2009 06:17:54 prom-net-pixel
				Привет all!
На форуме недавно, не знал куда написать, написал сюда.
В TSQLite3Dataset наблюдаю следующую вещь: при изменении значения FileName в "инспекторе объектов" путём выбора файла в дальнейшем невозможно работать с БД, которая находится по-умолчанию в каталоге с программой. При изменении этого свойства на (существующую) "database.db" создаётся таблица с таким именем в домашнем каталоге. 
Возможно, кто-нибудь проверит и запостит ошибку на багтрекере..
Ubuntu 9.10
Lazarus 0.9.28.2-0
			 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 10:18:06 Padre_Mortius
				TSQLite3Dataset позволяет работать только с одной базой данных, путь к которой прописывается в FileName. если вам необходимо данный компонент использовать с несколькими БД, то необходимо либо перепрописывать FileName, либо использовать второй компонент TSqliteDataset
			 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 19:54:48 prom-net-pixel
				Padre_Mortius писал(а):TSQLite3Dataset позволяет работать только с одной базой данных, путь к которой прописывается в FileName. если вам необходимо данный компонент использовать с несколькими БД, то необходимо либо перепрописывать FileName, либо использовать второй компонент TSqliteDataset
Вы меня неправильно поняли. Попробую объяснить ещё раз. Раньше я мог указать "database.db" для имени файла и компонент работал с БД, находящейся в в каталоге с программой. Теперь компонент ищет БД не в каталоге с программой, а в домашнем (/home/username) каталоге, а не находя, создаёт.
 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 20:02:50 Padre_Mortius
				Сории. неправильно понял. В общем это все-таки наверное не баг, а фича. Если не указываем полный путь, а только относительный, то при нормальном подходе к безопасности и разграничению прав, единственной доступной папкой на запись является папка профиля
Добавлено спустя 2 минуты 59 секунд:
Да и жесткая привязка базы к определенной папке, по моему мнению, не есть хорошо. Случаи всякие бывают. поэтому всегда делаю данный параметр настраиваемым
			 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 20:37:54 prom-net-pixel
				Хм, об этом конечно не подумал... Но странно, согласись: сначала я указывал просто имя файла и было всё нормально, БД лежал там, где должен по-умолчанию. Но стоило мне только 1 раз нажать на изменение этого параметра и, даже не указывая, просто отменить - ничего не работает как раньше... 
Если это на самом деле фича, то она с багом 

 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 21:22:09 Padre_Mortius
				А путь нигде не меняется в проекте? Посмотрел внимательнее и не получил такой баг. Правда проверял по Win32. Как только Буду дома, то проверю под CentOS. Но вроде там тоже ругался если не вводить полный путь. В исходниках ничего похожего на папку профиля нет.
			 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 21:28:12 prom-net-pixel
				Путь меняется при нажатии баттона, но это не имеет значения. Банально невозможно переключить свойство TSQLite3Dataset Active в True, ругается на отсутствие таблиц в БД, которую только что создал 
 
  
 Если вписать вместо "database.db" "./database.db" то проблема решается. Но ведь раньше так не нужно было делать, ога...
 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 22:26:11 Padre_Mortius
				свежая svn ревизия от 25-12-2009 lazarus. 
Если вписать вместо "database.db" "./database.db" то проблема решается
Получаю сообщение "SQLITE_ERROR - no such table"
И все таки более грамотно будет писать полный путь к базе данных в поле FileName
 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 22:56:52 prom-net-pixel
				prom-net-pixel писал(а): ругается на отсутствие таблиц в БД, которую только что создал 
 
  
Padre_Mortius писал(а):Получаю сообщение "SQLITE_ERROR - no such table"
 Это, вобщем, одно и то же.
prom-net-pixel писал(а):Если вписать вместо "database.db" "./database.db" то проблема решается. Но ведь раньше так не нужно было делать, ога...
-это для линуха.
Дак как ? Это ошибка или нет? Так, сами разберутся 
 Добавлено спустя 8 минут 42 секунды:
Добавлено спустя 8 минут 42 секунды:Padre_Mortius писал(а):И все таки более грамотно будет писать полный путь к базе данных в поле FileName
Всё-таки вопрос не в том, что более грамотно, а в том, как это должно работать.
 
			
		
			
				Re: ошибка?
				
Добавлено: 
25.12.2009 23:52:32 Padre_Mortius
				Судя по коду компонента в поле FileName должен заносится полный путь к базе данных, т.к. никаких подстановок в коде нет
			 
			
		
			
				Re: ошибка?
				
Добавлено: 
26.12.2009 10:33:08 Vadim
				prom-net-pixelА Вы, когда программа работает правильно и когда неправильно, проверьте, в каком каталоге находитесь с помощью функции 
GetCurrentDir и тогда сразу всё станет ясно. 

 
			 
			
		
			
				Re: ошибка?
				
Добавлено: 
26.12.2009 13:21:37 alexrayne
				Сдается мне что даже если и есть возможность правильного указания имени к базе, всеравно ето больше баг а не фича. ибо по моему опыту естественно начинать поиск файлов в каталоге с программой а не в гдето еще.
для линуха может быть ето и нетак но насколько я понял на виндовс вообще забили. ето раз.
имхо, любые изменения\фиксы\нововведения должны по максимуму обеспечивать обратную совместимость кода\преемственность. а тут она нарушена 100%. ето два.
имхо надо постить рапорт о баге.
			 
			
		
			
				Re: ошибка?
				
Добавлено: 
26.12.2009 15:38:13 Mr.Smart
				alexrayne писал(а):... ибо по моему опыту естественно начинать поиск файлов в каталоге с программой а не в гдето еще....
Раз вы заговорили про Windows, то внесу свою лепту. Ваше утверждение справедливо только для обычных приложений Windows, а если ваше приложение является сервисом (службой) то это не так 

 
			
		
			
				Re: ошибка?
				
Добавлено: 
26.12.2009 15:58:56 AbakAngelSoft
				Начинать поиск с папки рядом с программой неправильно в любом случае вне зависимости от операционки. Windows позволяет это делать для совместимости с досом, но категорически не рекомендует так делать!
Для хранения данных программы в windows есть реестр и несколько специально отведенных папок, например ApplicationData, ProgrammData и т.д.
			 
			
		
			
				Re: ошибка?
				
Добавлено: 
26.12.2009 23:59:23 alexrayne
				Начинать поиск с папки рядом с программой неправильно в любом случае вне зависимости от операционки. Windows позволяет это делать для совместимости с досом, но категорически не рекомендует так делать!
Для хранения данных программы в windows есть реестр и несколько специально отведенных папок, например ApplicationData, ProgrammData и т.д.
а в чем проблемато? насколько я понимаю поиск в каталогах пользователя типа home требуется для поддержки многопользовательскости, если етого ненужно то невижу никакой беды в этом.
я пишу проги на винду тоже, и мне для простоты использования неохота заниматься связями с реестром и пользовательскими настройками если я могу прекрасно обойтись без этого. а возможность обойтись без установки программы и обойтись простым ее копированием я весьма ценю. так что претензии против примитивизма DOSа мне както неукладываются. если его хватает для повседневного пользования то зачем отбрасывать? а если вы уж затачиваетесь под многопользовательскость, то какие проблемы явно запользовать пользовательские папки.
кстати по моему опыту работы в bash, поиск файла он вел таки сначала в текущей папке, а папку ~home надо было указывать явно.