Pascal Верхний и нижний регистры символов

Тема в разделе "Delphi - FAQ", создана пользователем Impactor, 11 дек 2009.

  1. Impactor

    Impactor Гость

    Доброго времени суток уважаемые.

    Столкнулся с такой проблемой:

    чтобы привести символ к верхнему регистру у TP7 есть функция UpCase, а вот к нижнему регистру что бы привести я не нашёл функции.
    В PascalABC такова имеется LowCase. Но мне нужно именно для TP7.

    Подскажите как выйти из ситуации. Если такой функции нет, то может кто то уже сталкивался с таким и есть готовая функция(процедура) такого преобразования?
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Попробуй ето:
    Код (Text):
    function MyLowCase(ch:char):char;
    { Переводит СИМВОЛ из верхнего регистра в нижний. }
    var k:byte;
    begin
    k:=Pos(ch,s_u);
    if (k>0) then MyLowCase:=s_l[k]
    else MyLowCase:=ch;
    end;

    function StLowCase(st:string):string;
    { Переводит СТРОКУ из верхнего регистра в нижний. }
    var L:byte absolute st;
    i:byte;
    begin
    for i:=2 to L do
    st[i]:=MyLowCase(st[i]);
    StLowCase:=st;
    end;
    Взято с http://delphid.dax.ru/www/exampl4.htm
     
  3. Impactor

    Impactor Гость

    А что за s_l??
    Код (Text):
    if (k>0) then MyLowCase:=s_l[k]
     
  4. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    если зайти на страницу с которой взята инфа то можно увидеть:
    Код (Text):
    uses Dos;
    const MaxSN=220;
    var f,event:text; { Входной и выходной файлы }
    s1,s_win,s_dos:string; { s_win,s_dos строки для перекодировки WIN<=>DOS }
    s2:array[1..MaxSN] of string; { Массив, в котором хранится блок текста (несколько строк) }
    { Правильнее было бы конечно организовать связанный список, но для упрощения используется массив }
    i,k2:byte;
    q:boolean;
    search_st,st:string;
    date,delim:string[20]; { delim содержит список разделителей слов }
    d,er_code:integer;
    s_u,s_l:string; { строки для перевода в верхний/нижний регистры }
     
  5. Impactor

    Impactor Гость

    У меня тут мысль возникла... А если просто сдвигать(увеличить) код символа на 32 относительно кодовой таблицы ASCII?

    <!--shcode--><pre><code class='Pascal'>sim:=ord(sim)+32;[/CODE]

    Как то так....
    Как раз вроде и получается большая буква меняется на маленькую? Или это будет не этично и некрасиво(неправильно, некорректно)?
     
  6. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    А почему бы и нет?=)
     
  7. Impactor

    Impactor Гость

    Единственное что наверное придется проверить это входит ли символ в множество 'A'..'Z' или 'А'..'Я'...
     
Загрузка...

Поделиться этой страницей