DFD, CacheTPSABC - не понял

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
RaFaeL
Ветеран
Сообщения: 874
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

DFD, CacheTPSABC - не понял

Сообщение RaFaeL » 23 Май 2019, 19:01

kreator писал(а):
23 Май 2019, 15:43
К сожалению в tps нет поля varchar. .
CSTRING оно и есть

kreator
✯ Ветеран ✯
Сообщения: 3356
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

DFD, CacheTPSABC - не понял

Сообщение kreator » 24 Май 2019, 10:56

gopstop2007 писал(а):
23 Май 2019, 18:35
а чем CSTRING плох?
RaFaeL писал(а):
23 Май 2019, 19:01
CSTRING оно и есть
CSTRING declares a character string terminated by a null character (ASCII zero). The memory assigned to the CSTRING is initialized to a zero length string unless the AUTO attribute is present.

CSTRING matches the string data type used in the "C" language and the "ZSTRING" data type of the Btrieve Record Manager. Storage and memory requirements are fixed-length, however the terminating null character is placed at the end of the data entered. CSTRING should be used to achieve compatibility with outside files or procedures.
Нет уверенности, что хранится будет строка переменной длины. Во-вторых, кто-нибудь пользует этот тип в tps? То, что при импорте скульных таблиц в словарь Кларион даёт строкам тип CSTRING, ничего не значит. И SV рекомендует использовать этот тип для совместимости с внешними файлами и процедурами:
CSTRING should be used to achieve compatibility with outside files or procedures.
И, в-третьих, не слишком удобный тип для работы. Есть отличия от обычного String, например, slicing-операции.
finsoftrz писал(а):
23 Май 2019, 17:52
Я думал, что кларионисты это все знают... В tps всегда записи переменной длины. Информация автоматически упаковывается.
Согласен, строки обрезаются. Похоже хранится так - обрезанная строка + количество пробелов до конца. Упаковки в общем случае нет. Это STRING. А вот CSTRING не режется, хранятся полностью.
We are hard at work… for you. :)

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 874
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

DFD, CacheTPSABC - не понял

Сообщение RaFaeL » 24 Май 2019, 11:22

kreator писал(а):
24 Май 2019, 10:56
Во-вторых, кто-нибудь пользует этот тип в tps?
Ну мы используем, у нас же одинаковая база для tps и для MS SQL, поэтому в SQL все в varchar а в tps все в cstring, причем переменные строковые внутри программы в основном тоже в cstring, чтоб клиповать поменьше. fixed-length это не хранение всей строки, это означает, что строка должна иметь заданный (максимальный) размер, а не быть переменной длины "сколько-то там до null"

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 24 Май 2019, 11:33

kreator писал(а):
24 Май 2019, 10:56
finsoftrz писал(а):
23 Май 2019, 17:52
Я думал, что кларионисты это все знают... В tps всегда записи переменной длины. Информация автоматически упаковывается.
Согласен, строки обрезаются. Похоже хранится так - обрезанная строка + количество пробелов до конца. Упаковки в общем случае нет. Это STRING. А вот CSTRING не режется, хранятся полностью.
Откуда взяли то? STRING в tps упаковываются, а не просто обрезаются. Точно алгоритм не скажу, не интересовался. Типа кодирования и замены повторяющихся символов. Если действительно нужно, поищите в архивах переписки, обсуждалось когда-то.
Рязань решает.

kreator
✯ Ветеран ✯
Сообщения: 3356
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

DFD, CacheTPSABC - не понял

Сообщение kreator » 24 Май 2019, 13:35

finsoftrz писал(а):
24 Май 2019, 11:33
Откуда взяли то? STRING в tps упаковываются, а не просто обрезаются.
Просто взял и посмотрел.
tps.png
Для сведения - CSTRING:
tps2.png
We are hard at work… for you. :)

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 24 Май 2019, 13:48

Поставьте Encrypt Data Rows в декларации таблицы.
Рязань решает.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 24 Май 2019, 14:35

Попробовал в C6, Encrypt не повлиял на размер. Но в не зашифрованном файле я не вижу названий. В C7 были изменения в tps для поддержки различных алгоритмов шифрации. Может, с этим связано.
Рязань решает.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 24 Май 2019, 15:02

Еще, шифрованный файл мало жмется архиватором, а не шифрованный вполне хорошо жмется. Содержание и размер исходных файлов одинаковый. Это в C6.
Рязань решает.

kreator
✯ Ветеран ✯
Сообщения: 3356
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

DFD, CacheTPSABC - не понял

Сообщение kreator » 24 Май 2019, 15:41

С Encrypt'ом неинтересно. Что там увидишь? Есть у меня tps-файлы конца того века, начала этого. Всё также. Формат если и менялся, то совместимость осталась.
We are hard at work… for you. :)

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 24 Май 2019, 17:07

Фик знает, какой там алгоритм. У меня почти все с Encrypt. Точно писали, что используется упаковка и числовых значений, и строковых. Но сейчас проверял, размер файлов с шифрацией и без практически одинаковый. На справочнике товаров ~30 мб.
Попробуйте еще с Encrypt свой пример с повторяющимися testtesttest, изменится ли размер файла. Если упаковка происходит, то такие повторения и должны сжиматься.
Рязань решает.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 24 Май 2019, 17:12

Не пробуйте, проверил, одинаковый размер.
Рязань решает.

Ответить