Клиппер 5. Справочник

вызывать проблемы при сохранении информации


    вызывать проблемы при сохранении информации в memo-полях или в файлах.
    Этот символ используется как маркер конца файла и располагающаяся за
    ним информация при чтении может стать недоступна.
 
    Способом предотвращения такой потери информации является удаление
    CHR(26) из символьной строки или замена его другими символами. Для
    этого может быть предложено несколько решений, примеры которых
    приведены ниже.
 
  Короткие строки
 
    В строке длиной менее 256 байтов не могут появляться все символы
    ASCII-кода, поэтому, выявив присутствие CHR(26), можно определить


    перечень неиспользуемых символов и один из них выделить для замены:
 
    IF (CHR(26) $ cString) .AND. (LEN(cString) < 256)
        cList := CHARNOLIST(cString)            // Все отсутствующие символы
        CHARREPL(CHR(26), @cString, cList)
    ENDIF
 
  Длинные строки
 
    В более длинных строках могут появляться все 256 символов ASCII-кода,
    поэтому, выявив присутствие CHR(26), можно используя функцию
    ZEROINSERT(), преобразовать исходную строку таким образом, что в ней
    после каждых пяти подряд идущих битов со значением 1 будет вставлен
    бит со значением 0. Благодаря этому в новой строке не будет ни одного
    байта со всеми единицами - CHR(255), которым можно заменить все
    CHR(26):
 
    cString := ZEROINSERT(cString)
    CHARREPL(CHR(26), @cString, CHR(255))
 
    После чтения следует произвести обратное преобразование:
 
    CHARREPL(CHR(255), @cString, CHR(26))
    cString := ZEROREMOVE(cString)
 

 

 ADDASCII()
 Добавляет число к ASCII-коду каждого символа строки.
------------------------------------------------------------------------------
 
  Синтаксис
 
    ADDASCII([@]<cString>, <nValue>, [<nPosition>]) --> cAddString
 
  Параметры
 
    [@]<cString> - символьный параметр, допускающий передачу по ссылке и

Содержание раздела