1. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.

кто рубит в паскале?

Тема в разделе "Hard & Soft", создана пользователем Malcolm, 2 май 2006.

  1. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    Я тут последнее время в руссифицированный даггерфолл бегаю. Скачал редактор сэйвов - в нем можно редактить history героя. Сие мне очень понравилось, но писать тяжко. Например вот что должно получиться, если набрать фразу

    "бородый, жадный и юродивый эклектик"

    "`jhjlsq, \flysq b <hjlbdsq @rktrnbr"

    Дык решил програмульку чиркануть - чтоб козябру в русский и обратно конвертировала. Бэйсик я уже совсем не помню (да и не проходили мы в нем работу с файлами) паскаль был в прошлом году, но тож подзабылся. А других языков я и не знал никогда. Ну значиться взялся писать в паскале. Реализовал переделку козябры в русский, но почемуто в получаемом тексте последние несколько слов не отображаються. Не могу понять почему. Кто поможет?
     
  2.  
  3. Agent Provocateur Тролль из Высших

    Agent Provocateur

    Legacy

    Регистрация:
    17 дек 2005
    Сообщения:
    4.250
    Ну, я, в принципе, в бауманке экзамен по нему сдал на 4...Кидай код, посмотрим ;)
     
  4. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    послал личкой, но как то криво получилось. Если надо - давай на мыло кину.
    Кто нить еще присоединиться?
     
  5. Agent Provocateur Тролль из Высших

    Agent Provocateur

    Legacy

    Регистрация:
    17 дек 2005
    Сообщения:
    4.250
    А чего именно Pascal? Я просто синтаксис плохо помню, алгоритм посмотрю ;)
    Кидай на мыло gae13@yandex.ru.
    И, кстати, почему бы не сменить в первой процедуре порнографию с if...then/else на условный оператор case? Короче будет раза в 2.
     
  6. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    мине очена стыдна, но мои познания ограничиваються нашим скромным курсом паскаля. И нас case учили использовать только для выбора пункта меню. Приведи пример, пожалуйсто, что ты имеешь ввиду.

    Добавлено через 6 минут
    Ошибка
    Недопустимый адрес
    Адрес gae13@yandex.ru. не существует или заблокирован. Письмо не было послано. Исправьте ошибку и отправьте письмо еще раз
     
    Последнее редактирование: 2 май 2006
  7. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    29.576
    Листинг проги сюда кинь, мы с Максом думаю поможем:)
     
  8. Agent Provocateur Тролль из Высших

    Agent Provocateur

    Legacy

    Регистрация:
    17 дек 2005
    Сообщения:
    4.250
    Ты для каждой буквы делаешь условный оператор
    if w='A' then
    w:='Ф'

    Удобнее будет:
    case w of
    'A' : 'Ф';
    'B' : 'И'
    <...>
    end;

    2_Dimouse О, ну если тут будут ты и MaxEd, могу спокойно отправляться курить мох и осозновать собственную ничтожность =)
     
    Последнее редактирование: 2 май 2006
  9. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    Когда кидаю в форум как-то криво выходит - пробелы пропускаються, ну ладно.
    program filestext;
    uses crt;
    var f,f1,readme:text;
    menu:char;

    Procedure kozrus(var f, f1:text);
    var w:char;
    begin
    Clrscr;
    while not seekeof (f) do begin
    while not eoln (f) do begin
    read (f,w);
    if w='A' then
    w:='Ф';
    if w='B' then
    w:='И';
    if w='C' then
    w:='С';
    if w='D' then
    w:='В';
    if w='E' then
    w:='У';
    if w='F' then
    w:='А';
    if w='G' then
    w:='П';
    if w='H' then
    w:='Р';
    if w='I' then
    w:='Ш';
    if w='J' then
    w:='О';
    if w='K' then
    w:='Л';
    if w='L' then
    w:='Д';
    if w='M' then
    w:='Ь';
    if w='N' then
    w:='Т';
    if w='O' then
    w:='Щ';
    if w='P' then
    w:='З';
    if w='Q' then
    w:='Й';
    if w='R' then
    w:='К';
    if w='S' then
    w:='Ы';
    if w='T' then
    w:='Е';
    if w='U' then
    w:='Г';
    if w='V' then
    w:='М';
    if w='W' then
    w:='Ц';
    if w='X' then
    w:='Ч';
    if w='Y' then
    w:='Н';
    if w='Z' then
    w:='Я';
    if w='[' then
    w:='х';
    if w='\' then
    w:='ж';
    if w=']' then
    w:='ъ';
    if w='^' then
    w:='Э';
    if w='>' then
    w:='Ю';
    if w='`' then
    w:='б';
    if w='a' then
    w:='ф';
    if w='b' then
    w:='и';
    if w='c' then
    w:='с';
    if w='d' then
    w:='в';
    if w='e' then
    w:='у';
    if w='f' then
    w:='а';
    if w='g' then
    w:='п';
    if w='h' then
    w:='р';
    if w='i' then
    w:='ш';
    if w='j' then
    w:='о';
    if w='k' then
    w:='л';
    if w='l' then
    w:='д';
    if w='m' then
    w:='ь';
    if w='n' then
    w:='т';
    if w='o' then
    w:='щ';
    if w='p' then
    w:='з';
    if w='q' then
    w:='й';
    if w='r' then
    w:='к';
    if w='s' then
    w:='ы';
    if w='t' then
    w:='е';
    if w='u' then
    w:='г';
    if w='v' then
    w:='м';
    if w='w' then
    w:='ц';
    if w='x' then
    w:='ч';
    if w='y' then
    w:='н';
    if w='z' then
    w:='я';
    if w='{' then
    w:='Х';
    if w='|' then
    w:='Ж';
    if w='}' then
    w:='Ъ';
    if w='~' then
    w:='Б';
    if w='<' then
    w:='ю';
    if w='@' then
    w:='э';
    write(f1, w);
    end;
    writeln(f1);
    end;
    writeln('Ј®в®ў®');
    readkey;
    end;

    Procedure win;
    begin
    textbackground(0);
    clrscr;
    window(5,2,77,24);
    textbackground(1);
    textcolor(11);
    clrscr;
    writeln;
    writeln(' ЙНННННННННННMAIN MENUННННННННННН»');
    writeln(' є є');
    writeln(' є 1.Ё§ Є®§пЎал ў агббЄЁ© є');
    writeln(' є є');
    writeln(' є 2.Ё§ агббЄ®Ј® ў Є®§пЎаг є');
    writeln(' є є');
    writeln(' є 3.Їа®зҐбвм readme є');
    writeln(' є є');
    writeln(' є 4.ўл室 є');
    writeln(' ИНННННННННННННННННННННННННННННННј');
    gotoXY(1,29);
    write(' ўлЎҐаЁвҐ Їг*Єв ¬Ґ*о Ё **¦¬ЁвҐ ENTER: ');
    end;

    begin
    assign (f, '1.txt');
    assign (f1, '2.txt');
    assign (readme, 'readme.txt');
    reset (readme);
    reset (f);
    rewrite (f1);
    { write (f1, ' ');}


    repeat
    win;
    read(menu);
    case menu of
    '1':begin
    kozrus(f,f1);
    exit;
    end;
    '2':{ruskoz(f,f1)};
    '3':{help};
    '4':exit;
    end;
    until menu='4';


    { while not seekeof (f) do
    while not eoln (f) do begin
    read (f,w);
    if w=' ' then begin
    writeln (f1);
    write(f1, ' '); end
    else
    write (f1,w);

    end;}
    close (f); close(f1);

    readkey
    end.
     
  10. Agent Provocateur Тролль из Высших

    Agent Provocateur

    Legacy

    Регистрация:
    17 дек 2005
    Сообщения:
    4.250
    Чего-то я не понял, а в процедуре Win так и должны быть кракозябры?

    Все, понял, туплю =)
     
    Последнее редактирование: 2 май 2006
  11. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    прога то досовская получиться. Соответственно кодовая страничка другая. При исполнении программы получаеться нормальное псевдографическое окошко с менюшкой на русском внутре. Иногда в винде (по крайней мере 95 98) в полноэкранном режиме они так и остаються крякозябликами - тогда надо запускать в окне.

    Исправил
    на
    case w of
    'A':w:='Ф'
    <...>
    end;
    а так, как сказал gae13 - не работает.
     
  12. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    29.576
    Боже какой изврат:) На сях это гораздо лучше выглядело (Макс писал аналогичную прогу, даже несколько, только наоборот - с русского в кракозябры:))
    Проверил вроде все нормально с точки зрения кода. Во первых, дай пример исходного файла и что из него получается твоей прогой. Важно где она обрывается и почему.
     
  13. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    вот примерно то, что на экране появляеться:
    вот пример исходного файла
    вот что получаеться:
    если приглядитесь, то увидете, что в конечном файле нескольких слов не хватает. Более того - количество пропущенного зависит от кол-ва символов в первоначальном. Если в первоначальном 2 или менее строк - в результирующем вообще пусто.

    Добавлено через 51 секунду
    БЛИН! Форум убирает "лишние" пробелы! Ну надеюсь вы поняли, что я имел ввиду.

    Добавлено через 12 минут
    ?
    Так может мне не заморачиваться, а просто взять имеющуюся прогу? В принципе с русского в козябру нужнее, это я для комплекта решил сделать туда-обратно.
     
    Последнее редактирование: 2 май 2006
  14. Agent Provocateur Тролль из Высших

    Agent Provocateur

    Legacy

    Регистрация:
    17 дек 2005
    Сообщения:
    4.250
    Собственно, на Ruby это выглядит так. И вроде даже работает, хоть это и "демо-версия":D

    #Перевод из кракозябров на русский ;)
    def krakrus(f,f1) #Процедура перевода
    f1 = case f
    when "A"
    "ф"
    when "B"
    "И"
    when "C"
    "C"
    else
    <Error 1> #Ошибка: неверный ввод
    end
    puts f1

    text=File.new("gametext.txt") #Файл
    str=text.readlines #Строка-массив с текстом

    for i in 1..str.size #Гоняем цикл по массиву
    krakrus(str)
    end
     
  15. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    кто такая ruby? А зачема мине этот код?
     
  16. Agent Provocateur Тролль из Высших

    Agent Provocateur

    Legacy

    Регистрация:
    17 дек 2005
    Сообщения:
    4.250
    Ruby - как ни странно, язык программирования. А код - скорее умным товарищам, т.к. я никакой ошибк не вижу, а паскалевские проги мне на компе запускать не на чем, написал на Руби.
     
  17. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    на самом деле меня устроят 2 варианта - либо кто-нить поможет отловить ошибку в моей проге, либо кто-то напишет сам (да я очень наглый ;) )
     
  18. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    29.576
    Ну я сам на паскале никогда толком не программировал на самом деле. text это типа как в сях char* да? У него походу длина ограниченная, файлик получается четко 256 байтов, либо если уменьшить его, то обрезает на 128 байтов. Хрен его знает почему. Давай я тебе лучше листинг сишной проги выложу.
     
  19. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    540
    СИ у мя нету, куда я его засуну?
    text - это файловый тип
    char - в паскале этот тип принимает значения в виде 1-ого символа.

    Если помочь никак, но есть возможность самому написать - большой спасиб!
    соответсвие символов:
    ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхжъЭЮбфисвуапршолдьтщзйкыегмцчняХЖЪБюэ
    ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^>`abcdefghijklmnopqrstuvwxyz{|}~<@

    Добавлено через 3 минуты
    вот ща попробовал обработать файлик по больше - результирующий 2.87 Kb
     
    Последнее редактирование: 2 май 2006
  20. Agent Provocateur Тролль из Высших

    Agent Provocateur

    Legacy

    Регистрация:
    17 дек 2005
    Сообщения:
    4.250
    А исходник сколько?

    Интерпретатор, или как там это называется, для С качается из сети с легкостью. ;)
     
  21. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    29.576
    Ну в любом случае он округляется почему-то. Вот в общем код, скачешь турбо си хотябы и все скомпилируешь. Программка немного более сложную процедуру делает - она вставляет переконвертированные куски в заданные места в определенном файле. Ты не извращайся, сделай один ин файл, один аут и офсет положи нулем. Таблицу символов переделай как тебе надо.

    ****
    Скрою-ка я этот код от греха подальше, там дальше паскальный код отыскался, а этот не хочу оставлять, а то паранойя замучает:)
    ****


    Добавлено через 4 минуты
    Кстати если кому-то вздумается с помощью этого кода разрусифицировать наш перевод Саймона и использовать его в своих целях, то предупреждаю, что файлы в русификаторе еще закодированы сверх этого, на всякий случай:)
     
    Последнее редактирование: 2 май 2006
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление