Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26153
Рейтинг: 2127
#46: 2010-02-04 11:29:52 ЛС | профиль | цитата
3042 писал(а):
Я не про файлы другого типа, я именно про большие файлы


Да причем тут большие файлы Ты читать умеешь, или только учишься

nesco писал(а):
И зачем для других компонентов искать выходы из ситуации, когда они не были замечены в нечитабельности нелатинических путей


Решение было именно для файлов базы данных SQLite, в частности, для движка SQLite.dll, который не понимает кириллицу в путях (млин, я уже запарился одно и то же объяснять по десять раз. Задорнов вспоминается, не в Америке же живем)
карма: 22

0
Ответов: 4641
Рейтинг: 334
#47: 2010-02-04 11:39:22 ЛС | профиль | цитата
[offtop]
nesco писал(а):
млин, я уже запарился одно и то же объяснять по десять раз

да не кипятись ты...... два раза всего то объяснял.[/offtop]

карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1926
Рейтинг: 172
#48: 2010-02-04 11:54:27 ЛС | профиль | цитата
nesco писал(а):
Есть еще один выход -- скопировать файл в temp


Ravilr писал(а):
ага а например файл 100мг то будет он копироваться минуту например


nesco писал(а):
Я не говорил про файлы такого размера, не надо тут приплетать. Разговор шел про чтение базы Elements.db


А я говорю про файлы "такого размера", т.к. файл базы данных может быть очень большим, и копирование - не выход. А вот с короткими путям - в некотором роде выход.
карма: 9
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#49: 2010-02-04 12:05:07 ЛС | профиль | цитата
3042 писал(а):
т.к. файл базы данных может быть очень большим

Вот интересно бы знать, у нас, кроме Tad'a и Alexbotch-a ктото еще имеет файлы SQLIte более 10 Мб А 10 Mb на нормальной машине копируется в секунды

3042 писал(а):
А вот с короткими путям - в некотором роде выход

Не для всех, у некоторых не работает.

Мне кажется, что для каждого конкретного случая нужен свой подход. Ну не используешь ты файлы большого размера, почему нельзя применить метод копирования, он надежнее будет, чем короткие пути, читемые не у всех
карма: 22

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#50: 2010-02-04 12:29:25 ЛС | профиль | цитата
Детальное рассмотрение проблемы SQLite показало, что проблема находится у нас, в неправильном подаваемой кодовой странцы пути

sqlite.org писал(а):
These routines open an SQLite database file whose name is given by the filename argument. The filename argument is interpreted as UTF-8 for sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte order for sqlite3_open16()


У нас применется sqlite3_open(), так что путь необходимо подавать в UTF-8.

Вот этот пример у меня нормально стал работать с длинными кириллическими путями



Add(MainForm,1034065,238,231)
{
Width=519
}
Add(MTStrTbl,7815638,574,273)
{
Width=511
Height=235
Align=2
Name="tab"
}
Add(Button,5475230,238,273)
{
Left=235
Top=240
link(onClick,2816519:doExecute,[])
}
Add(DS_SQLite,7855820,385,273)
{
Name="base"
Point(onError)
link(onOpen,1824278:doEvent1,[])
}
Add(ODialog,2816519,287,273)
{
Filter="Файлы SQLite db|*.db"
link(onExecute,5857427:doCharset,[])
}
Add(DSC_Query,9350671,469,273)
{
SQL="SELECT name AS 'Имя Элемента',info AS 'Описание' FROM Elements ORDER BY Tab, pos;"
DSManager="base"
link(onQuery,16515339:doAddRow,[])
link(onColumns,16515339:doAddCols,[])
}
Add(MST_DB,16515339,525,273)
{
MSTControl="tab"
}
Add(Hub,1824278,434,273)
{
link(onEvent1,9350671:doQuery,[])
link(onEvent2,2752118:doColAction,[(458,286)(458,321)])
}
Add(MST_ColAction,2752118,469,315)
{
Action=9
Index=-1
MSTControl="tab"
}
Add(Charset,5857427,336,273)
{
Type=6
link(onCharset,7855820:doOpen,[])
}


Очень надеюсь, что это оканчательное решение проблемы.

Dilma, возможно это решение поможет преодолеть препятствие использования HiAsm с кириллическими путями
карма: 22

3
Голосовали:Ravilr, 3042, filyaxxxcom
Ответов: 1926
Рейтинг: 172
#51: 2010-02-04 12:32:11 ЛС | профиль | цитата
nesco писал(а):
почему нельзя применить метод копирования


Потому что некрасиво это. Самое надёжное - использовать только латинские пути. Ну или

nesco писал(а):
для каждого конкретного случая нужен свой подход
.
карма: 9
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#52: 2010-02-04 12:33:05 ЛС | профиль | цитата
3042, читай решение проблемы выше для SQLite
карма: 22

0
Ответов: 4641
Рейтинг: 334
#53: 2010-02-04 12:34:07 ЛС | профиль | цитата
nesco писал(а):
так что путь необходимо подавать в UTF-8.

так это надо встроить в компоненты наверно? или как?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1926
Рейтинг: 172
#54: 2010-02-04 12:35:02 ЛС | профиль | цитата
Блин, пока я пишу, уже появляются ответы на мои вопросы!
Ravilr, поддерживаю.
карма: 9
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#55: 2010-02-04 12:35:16 ЛС | профиль | цитата
Тестировать, тестировать и еще раз тестировать...
карма: 22

0
Ответов: 1926
Рейтинг: 172
#56: 2010-02-04 12:36:28 ЛС | профиль | цитата
XP Professional SP3 - работает.
карма: 9
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#57: 2010-02-04 12:36:40 ЛС | профиль | цитата
3042 писал(а):
Блин, пока я пишу, уже появляются ответы на мои вопросы!

Млин, мне стало просто интересно, почему мы не могли этого сделать раньше, и в чем крылась проблема

[offtop]И все же, я заработал себе душевный ништячок, что решил эту проблему[/offtop]
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#58: 2010-02-04 13:09:55 ЛС | профиль | цитата
nesco писал(а):
Млин, мне стало просто интересно, почему мы не могли этого сделать раньше, и в чем крылась проблема
Проблема в том, что у нас не поощеряется чтение - поощеряется метод научного тыка.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#59: 2010-02-04 13:10:56 ЛС | профиль | цитата
Добавил в элементы чтения SQLite базы конвертор путей в UTF-8 согласно спецификации на SQLIte
карма: 22

3
Голосовали:Ravilr, 3042, Tad
Ответов: 16884
Рейтинг: 1239
#60: 2010-02-04 13:22:24 ЛС | профиль | цитата
nesco, между прочим - в последних версиях SQLite (выше нашей) можно назначить (при создании базы)
PRAGMA encoding = "UTF-8";
PRAGMA encoding = "UTF-16";
PRAGMA encoding = "UTF-16le";
PRAGMA encoding = "UTF-16be";
после чего можно применять даже названия колонок на локальном языке и запросы без никаких name AS Фамилия
Проверено на иврите.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)