1.
Вот эта строчка не имеет смысла
Александр Богданов писал(а):
Код:
Log.Bool(rd.rider.eof);
внутри цикла WHILE ~rd.rider.eof DO
так как внутри цикла она всегда имеет постоянное значение.
2.
Цитата:
Вопрос:
- В какой кодировке должны быть текстовые файлы для ПК? и возможно ли задать нужную мне кодировку (обработанные файлы планируется использовать под win7).
В дистрибутиве ББ версии 1.6 есть поддержка следующих кодировок (см. файл HostTextConv):
- ASCII (ImportDosText) - 8-битная
- Latin1 ? (ImportText) - надмножество ASCII с некоторыми латинскими знаками - 8-битная.
- UCS2 (ImportUnicode) - предшественник UTF-16 - с фиксированной длиной кодовой последовательности 16 бит.
В ОС Windows кодировкой Unicode обозначают UTF-16 Little Endian. Notepad из Windows 7 умеет сохранять в разных кодировках. Лучше выбрать Unicode.
Если я не ошибаюсь, для диапазона знаков из
базовой плоскости языков Юникода (по правде, должного называться
Уникодом), UCS2 и UTF-16 - тождественно равны.
Откроем секцию инициализации модуля ObxAscii:
Код:
BEGIN
conv := Converters.list;
WHILE (conv # NIL) & (conv.imp # "HostTextConv.ImportText") DO
conv := conv.next
END
END ObxAscii.
Отсюда мы видим, что по умолчанию используется конвертер HostTextConv.ImportText, то есть кодировка Latin1.
Затем процедуру
ObxAscii.OpenКод:
PROCEDURE Open* (loc: Files.Locator; IN name: ARRAY OF CHAR): Text;
VAR s: Stores.Store; fname: Files.Name; text: Text;
BEGIN
IF loc = NIL THEN PathToFileSpec(name, loc, fname) ELSE fname := name$ END;
IF loc.res = 0 THEN
Converters.Import(loc, fname, conv, s);
IF (s # NIL) & (s IS TextViews.View) THEN
NEW(text); text.reading := TRUE; text.scan.ConnectTo(s(TextViews.View).ThisModel());
RETURN text
ELSE RETURN NIL
END
ELSE RETURN NIL
END
END Open;
Здесь используется ранее установленный при инициализации конвертер
conv.
Нужно установить конвертер
conv для работы с другими кодировками, подставив название нужной процедуры вместо "HostTextConv.ImportText".
Таким образом, сохранив текстовый документ в Notepad,
читаем в ББ содержимое после установки конвертера в "HostTextConv.ImportUnicode".