Автор Тема: Какая кодировка у BB документов?  (Прочитано 45462 раз)

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #105 : Декабрь 25, 2012, 11:58:42 am »
В обоих.

ББ 1.5 был в плане Framework уже юникодный. Под юникодизацией 1.6 понимается переписывание Host для вызова юникодных WinApi-фукнкций (чтобы с клавиатуры вводился юникод, и т.п.), а также компилятора для поддержки юникодных значений литерных констант. А ещё добавили метаинформацию о сигнатурах процедур (до этого были только фингерпринты от них).

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #106 : Декабрь 25, 2012, 12:01:13 pm »
В обоих.

ББ 1.5 был в плане Framework уже юникодный. Под юникодизацией 1.6 понимается переписывание Host для вызова юникодных WinApi-фукнкций (чтобы с клавиатуры вводился юникод, и т.п.), а также компилятора для поддержки юникодных значений литерных констант. А ещё добавили метаинформацию о сигнатурах процедур (до этого были только фингерпринты от них).
Гм. Тогда интересно когда они юникод в BB вшили.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #107 : Декабрь 25, 2012, 12:19:19 pm »
В CP изначально. А в BB в 1.6  :)

ps некоторый задел уже в 1.5 был

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #108 : Декабрь 25, 2012, 12:20:44 pm »
В CP изначально. А в BB в 1.6  :)

ps некоторый задел уже в 1.5 был
Только вот BB не изначально на CP был :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #109 : Декабрь 25, 2012, 12:38:11 pm »
Кстати, такая кодировка только у BB 1.6, или у BB 1.5 тоже?
И у 1.3, и даже у 1.2, которая ещё Oberon/F. Документами же надо обмениваться.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #110 : Декабрь 25, 2012, 12:45:13 pm »
Что будет если ch := CHR(32768) ?
Извиняюсь. На минус не обратил внимание.
Однако минус не помог. Не работает.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #111 : Декабрь 25, 2012, 12:51:31 pm »
Минус нужно до SHORT'ов ставить, иначе опять INTEGER получается.
И кроме того оно совсем не работает на ch < 256, ибо получается -256

albobin

  • Full Member
  • ***
  • Сообщений: 198
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #112 : Декабрь 25, 2012, 01:22:58 pm »
Вот куски из кода и измышлизмы.
PROCEDURE (rd: StdReader) Read;
        VAR ...; lc: ARRAY 2 OF BYTE;
    BEGIN
        ...
            rd.reader.ReadBytes(lc, 0, 2);
            rd.char := CHR(lc[0] MOD 256 + 256 * (lc[1] + 128)); rd.view := NIL;

lc[0] MOD 256  - приведение байта к положительному целому с идентичным битовым представлением значимого байта
а вот для старшего байта почему то придуман "трюк" c 128 (для увода из отрицательных значений )  и  тогда соответственно в коде ниже присутствует вычитание 128

PROCEDURE (wr: StdWriter) WriteChar (ch: CHAR);
            ...
            fw.WriteByte(SHORT(SHORT(ORD(ch))));
            fw.WriteByte(SHORT(SHORT(ORD(ch) DIV 256 - 128)));

М.б. есть ещё какие нюансы работы в исполняемом коде в двух случаях:
1. SHORT(SHORT(ORG(ch))
2. SHORT(SHORT( от арифм.выражения  ORD(ch) DIV 256 )
И эти нюансы вынудили изощряться со 128  :)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #113 : Декабрь 25, 2012, 01:36:07 pm »
Напомню по результатам обсуждения в соседней ветке, что в данном случае отнимать 128 вообще некошерно, так как это приводит к инвертированию старшего бита у целевого байта. ilovb указал, что сей факт можно учесть при чтении, но на мой взгляд это удар "под перекладину". Тот, кто будет читать не обязан помнить, что при это нужно подправить старший бит.

albobin

  • Full Member
  • ***
  • Сообщений: 198
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #114 : Декабрь 25, 2012, 01:43:10 pm »
В лоб всё равно не читают.
Есть придуманный формат, и процедуры чтения/записи учитывающие его.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #115 : Декабрь 25, 2012, 01:51:00 pm »
М.б. есть ещё какие нюансы работы в исполняемом коде в двух случаях:
1. SHORT(SHORT(ORG(ch))
2. SHORT(SHORT( от арифм.выражения  ORD(ch) DIV 256 )
И эти нюансы вынудили изощряться со 128  :)
Единственный нюанс - оно не работает без вычитания 128. ;)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #116 : Декабрь 25, 2012, 01:52:06 pm »
Кстати, а почему тут не используют SET'ы для манипулирования битиками?
Y = λf.(λx.f (x x)) (λx.f (x x))

albobin

  • Full Member
  • ***
  • Сообщений: 198
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #117 : Декабрь 25, 2012, 02:09:58 pm »
М.б. есть ещё какие нюансы работы в исполняемом коде в двух случаях:
1. SHORT(SHORT(ORG(ch))
2. SHORT(SHORT( от арифм.выражения  ORD(ch) DIV 256 )
И эти нюансы вынудили изощряться со 128  :)
Единственный нюанс - оно не работает без вычитания 128. ;)
Занудно поясню, что имел ввиду вопрошая.
вот имеем код  SHORT(SHORT(ORD(ch))ch двухбайтный,  ORD(ch) в диапазоне целых 80-FFFF
всё компилится и работает как, видимо, задумано, на выходе байт (в битах 80-FF)
или от -128  до  127 (как BYTE) 

А вот код SHORT(SHORT(ORD(ch) DIV 256)  может быть уже не хочет работать и взбрыкивается (нюансы кодогенерации)  хотя ORD(ch) DIV 256  даёт значения от 0 до FF

И вот тут приходит на помощь волшебное 128  и значения загоняются в диапазон BYTE, хотя в первом случае этого не понадобилось.


albobin

  • Full Member
  • ***
  • Сообщений: 198
    • Просмотр профиля
Re: Какая кодировка у BB документов?
« Ответ #118 : Декабрь 25, 2012, 02:15:42 pm »
на выходе байт (в битах 80-FF)
на выходе байт (в битах 00-FF)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Какая кодировка у BB документов?
« Ответ #119 : Декабрь 25, 2012, 03:12:49 pm »
facepalm...

Цитировать
1. SHORT(SHORT(ORG(ch))
2. SHORT(SHORT( от арифм.выражения  ORD(ch) DIV 256 )

Цитировать
всё компилится и работает как, видимо, задумано, на выходе байт (в битах 80-FF)

Да не работают эти строчки. Ни первая, ни вторая.
ПЕРЕПОЛНЕНИЕ.

С отключенной проверкой ОБЕ РАБОТАЮТ