|
знак переноса строки?
|
|||
---|---|---|---|
#18+
WildSery если не пользоваться isql с только что найденной тобой ошибкой Это не ошибка, это фича. isql приводит переводы строки перед отправкой в БД и после получения. Отсюда, кстати, растут ноги удвоения возврата каретки, на которое тут жаловались недавно: isql несколько неправильно обращается с исходниками, который в БД загнаны другими инструментами. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2009, 21:55 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
WildSery... Ещё раз, медленно, по буквам - если не пользоваться isql с только что найденной тобой ошибкой, и сделать-таки varchar(2), с каковой поправкой я согласился, то на чём работает КЛИЕНТ, под ту систему и будет скомпилен ПЕРЕНОС СТРОКИ . Безо всяких дополнительных проверок унутре процедуры. Ну да, примерно так и есть... И если процедуру создать из-под Windows и даже с Varchar(2) получить перевод строки в виде \x0d\x0a, то клиент работающий под Linux будет очень удивлен вот этому \x0d, точнее он не удивится, а выведет его на экран (и в зависимости от того, где конкретно это случится можно получить много вариантов...) и кроме того, у такого клиента полученная строка '\x0d\x0a' (т.е. только сам перевод строки, без ничего дополнительно) не будет равен пустой строке - это будет строка с длиной в 1 символ. Вот именно поэтому ascii_char( 10 ) будет работать практически всегда. Ну кроме тех случаев, когда клиент ждет перевод строки именно из двух символов CR и LF. Но это я считаю просчетом проектирования... PS: И дело не в isql, не ошибка это в нем... С чего ты вдруг решил, что это ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 00:00 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov WildSery если не пользоваться isql с только что найденной тобой ошибкой Это не ошибка, это фича. isql приводит переводы строки перед отправкой в БД и после получения. Отсюда, кстати, растут ноги удвоения возврата каретки, на которое тут жаловались недавно: isql несколько неправильно обращается с исходниками, который в БД загнаны другими инструментами . Вот именно! По правильному было бы это делать так, как еще во времена MS-DOS делалось - на входе (это например то место, откуда читается текст процедуры...) все символы возврата каретки CR (0x0D) просто пропускать, а символ перевода строки LF (0x0A) и считать переводом строки. А на выходе перед символом LF добавлять символ CR. Если для той системы в которой работает isql это нужно (под Windows - да, под *nix - нет) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 00:07 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
DzirtПо правильному было бы это делать так, как еще во времена MS-DOS делалось... Глубоко задумался: - А иде эт оно в PS-DOS делалось? И про "По правильному было бы это делать так" - это кому правильно? DzirtЕсли для той системы в которой работает isql это нужно (под Windows - да, под *nix - нет) Хм... Так во времна PS-DOS, какбэ, DOS был DOS-ом, UNIX - unix-ом. И ни кто не требовал, штоп оно все в "одном флаконе" работало... Так что сцылка на хистори - не в зачет. Как бы народ FB тут не первый день юзает, из-под чего только не юзают, а кипишь ток ты поднял. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 00:46 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Во-первых, PS-DOS - это не MS-DOS. Впрочем, различий именно по этой части в них я не припомню. Во-вторых, если таки действительно поведение будет различаться для разных систем (а судя по всему, это так), то говорить что все тут нормально - глупо. Хотя тезис - проверяйте все на конкретных клиентах (подходящий нам - у которых все клиенты виндовые) - имеет место быть. Вот как-то так... Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 01:04 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Di_LIneDzirtПо правильному было бы это делать так, как еще во времена MS-DOS делалось... Глубоко задумался: - А иде эт оно в PS-DOS делалось? ... Я могу напомнить... Вот пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Код: plaintext 1. 2. 3. 4.
Вот так это и работало. Di_LIne... И про "По правильному было бы это делать так" - это кому правильно? DzirtЕсли для той системы в которой работает isql это нужно (под Windows - да, под *nix - нет) Хм... Так во времна PS-DOS, какбэ, DOS был DOS-ом, UNIX - unix-ом. И ни кто не требовал, штоп оно все в "одном флаконе" работало ... Так что сцылка на хистори - не в зачет. Ну вот и прикинь - никто вроде не требовал, а писали так, чтобы работало правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 09:48 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
DzirtНу вот и прикинь - никто вроде не требовал, а писали так, чтобы работало правильно.Гы. Открыл в FAR-е файлик сделал 10 "ентеров". Сохранил. Открыл как HEX. И чиго? - 10 штук 0D0A налицо. Размер файлика = 20 байт. Ы? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 10:40 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Di_LIneDzirtНу вот и прикинь - никто вроде не требовал, а писали так, чтобы работало правильно.Гы. Открыл в FAR-е файлик сделал 10 "ентеров". Сохранил. Открыл как HEX. И чиго? - 10 штук 0D0A налицо. Размер файлика = 20 байт. Ы? Ты открыл для себя Фар? Поздравляю! :) А что сказать-то хотел? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 10:43 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
По сабжу - а неплохо бы иметь спец. константу для этого дела, имхо... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 10:46 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
DzirtТы открыл для себя Фар? Поздравляю! :) А то! FAR - супер ось! Вот только какой-то гад к моей версии форточки прикрутил... Не знаешь, как их открутить от FAR-а? DzirtА что сказать-то хотел? А то, что сделай такой файлик.txt и посмотри, как его отобразят редакторы в разных осях... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 10:53 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Экспиримент №2: Создай 2 файлика: 1. с содержанием 0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0A 2. с содержанием 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0D И отправь оба на принтер (9 pin) и удивись. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 10:59 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Отсюда, кстати, растут ноги удвоения возврата каретки, на которое тут жаловались недавно: isql несколько неправильно обращается с исходниками, который в БД загнаны другими инструментами. Начитавшись тут про бедные вернутые каретки, попробовал я извлечь метаданные isql'ем. Беглый взгляд на результат выявил, что "лишние" символы вставляются только при выводе текстовый блобов (тексты процедур, вьюх, описаний и т.п.). В моей базе они все с crlf, а выводятся crcrlf. Залез я в исходники птицы (которые 2.1.3) и нашёл там виновника - SHOW_print_metadata_text_blob, которая вызывает ISQL_printf, которая, в свою очередь, вызывает стандартную fprintf, которая пишет в поток isqlGlob.Out. Насколько я помню (с помощью гугла :) ), если поток открыт в текстовом режиме, то при выводе lf заменяется на crlf, что мы и наблюдаем. :) НО! Есть один нюанс: isqlGlob.Out открывается через fopen(ftmp.c_str(), "w+b"), то есть в двоичном (непреобразующем) режиме. Вывод: 1) либо я чего не увидел/не понял (оченно вероятно); 2) у MS VC мания заменять лыфы на цырылыфы превозмогает над стандартом. ;)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 11:20 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Di_LIneЭкспиримент №2: Создай 2 файлика: 1. с содержанием 0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0A 2. с содержанием 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0D И отправь оба на принтер (9 pin) и удивись. Не буду я удивляться, я и так знаю, что произойдет. Если написанное тобой в символах, то так и выведет: 0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0D и каретка будет установлена после последнего символа, а если это в в HEX-кодах, то соответственно: 1. Каретка в начале строки (сколько ему не посылай CR "начальнее" строки не бывает), прогон бумаги на 1 строку (один LF) 2. Прогон бумаги на 16 строк (у тебя 16 LF, я посчитал), каретка в начало строки (один CR) Опять таки - ты чего сказать-то хотел? PS: Я тебе еще напомню (это чтобы предвосхитить эксперимент №3), что у матричных принтеров перевод строки (LF который) не вызывал автоматического возврата каретки, т.е. она в какой позиции была в такой и оставалась. PPS: Я подозреваю, что тебе просто скучно... ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 11:50 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
dennis-rSHOW_print_metadata_text_blob, Именно в нём стоит коммент, который сбил меня с толку. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:06 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
dennis-r... НО! Есть один нюанс: isqlGlob.Out открывается через fopen(ftmp.c_str(), "w+b"), то есть в двоичном (непреобразующем) режиме. Вывод: 1) либо я чего не увидел/не понял (оченно вероятно); 2) у MS VC мания заменять лыфы на цырылыфы превозмогает над стандартом. ;)) А еще в файле isql.cpp есть функция Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: plaintext
Код: plaintext 1. 2. 3. 4. 5.
При выводе же на экран isqlGlob.Out содержит файл STDOUT (файловый дескриптор 1), который по умолчанию считается текстовым, и CR перед каждым LF тоже добавляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:30 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
dennis-r... НО! Есть один нюанс: isqlGlob.Out открывается через fopen(ftmp.c_str(), "w+b") , то есть в двоичном (непреобразующем) режиме. ... Это ты нашел в функции Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:34 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Dzirt Это ты нашел в функции Код: plaintext 1. 2. 3.
Каюсь, смотрел по F7 методом косого чтения. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:44 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Можно попробовать сделать например так (функция void SHOW_print_metadata_text_blob(FILE* fp, ISC_QUAD* blobid, bool escape_squote), файл src\isql\show.epp, строка 1031) - вместо: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
написать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:44 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov dennis-rSHOW_print_metadata_text_blob, Именно в нём стоит коммент, который сбил меня с толку. Да. Коммент там классный. Особенно приписка от некого CVC, что коммент и код ничуть не совпадают. Да здравствует копи-паст! :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:46 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
DzirtМожно попробовать сделать например так Код: plaintext
Это конечно да, но не исключено, что бывают особенные платформы, где правят одни CRы. :] p.s. Ещё чуть-чуть и CORE-915 можно считать закрытым. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:53 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
dennis-rDzirtМожно попробовать сделать например так Код: plaintext
Это конечно да, но не исключено, что бывают особенные платформы, где правят одни CRы. ... Ну, тогда так: Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:57 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Dzirt Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Кстати! Код, который в if, вааще-то насчёт квотированных строк, а не переводов строк. И для печати метаданных используется то, что в else. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 12:58 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Dzirt Ну, тогда так: Код: plaintext 1. 2. 3. 4. 5. 6.
Это не наш метод. Надо, чтоб у всех всё было одинаково! Одинаково плохо. Например, переводить текстовые блобы в html, а вместо crlf - <br>. Хы. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 13:04 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
dennis-r... Кстати! Код, который в if, вааще-то насчёт квотированных строк, а не переводов строк. И для печати метаданных используется то, что в else. :) Я знаю. Просто цикл совместил в один, и то что было в else "ушло". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 13:07 |
|
знак переноса строки?
|
|||
---|---|---|---|
#18+
Dzirt Я знаю. Просто цикл совместил в один, и то что было в else "ушло". А! Точно! Не заметил. Ну, тогда это пора комитить в cvs и сделать товарища zaher dirkey счастливым. Обещанного, говорят, три года ждут. 30 августа будет как раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2009, 13:17 |
|
|
start [/forum/topic.php?fid=40&msg=36071590&tid=1561046]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 314ms |
total: | 447ms |
0 / 0 |