1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

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

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

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

  1. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    539
    исходник 3 метра ровно

    Добавлено через 4 минуты
    Касательно кода - я фиг че понял. Что из этого нуна, а что нет? Я с СИ никогда не общался:(
     
    Последнее редактирование: 2 май 2006
  2. Dimouse King of Mice

    Dimouse

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

    Регистрация:
    18 апр 2003
    Сообщения:
    34.671
    Опа! Я тут у себя нашел на паскале такую же прогу еще для первого Саймона:

    Program Translator_for_Simon_letters_Russian_to_English ;
    Uses Crt;
    Const
    InName = 'IN.DAT';
    OutName = 'OUT.DAT';
    Var
    InFile, OutFile : File;
    BufA, BufB : Byte;
    N, BeginNum, EndNum : LongInt;
    I : Word;
    Function Change (P_In : Byte) : Byte;
    Var
    P_Out : Byte;
    Begin
    Case Char(P_In) Of
    'А' : P_Out := $41;
    'Б' : P_Out := $42;
    'В' : P_Out := $43;
    'Г' : P_Out := $44;
    'Д' : P_Out := $45;
    'Е' : P_Out := $46;
    'Ж' : P_Out := $47;
    'З' : P_Out := $48;
    'И' : P_Out := $49;
    'К' : P_Out := $4A;
    'Л' : P_Out := $4B;
    'М' : P_Out := $4C;
    'Н' : P_Out := $4D;
    'О' : P_Out := $4E;
    'П' : P_Out := $4F;
    'Р' : P_Out := $50;
    'С' : P_Out := $51;
    'Т' : P_Out := $52;
    'У' : P_Out := $53;
    'Ф' : P_Out := $54;
    'Х' : P_Out := $55;
    'Ц' : P_Out := $56;
    'Ч' : P_Out := $57;
    'Ш' : P_Out := $58;
    'Щ' : P_Out := $59;
    'Э' : P_Out := $5A;
    'Ю' : P_Out := $2A;
    'Я' : P_Out := $60;
    'а' : P_Out := $61;
    'б' : P_Out := $62;
    'в' : P_Out := $63;
    'г' : P_Out := $64;
    'д' : P_Out := $65;
    'е' : P_Out := $66;
    'ё' : P_Out := $67;
    'ж' : P_Out := $68;
    'з' : P_Out := $5E;
    'и' : P_Out := $6A;
    'й' : P_Out := $6B;
    'к' : P_Out := $5F;
    'л' : P_Out := $6D;
    'м' : P_Out := $6E;
    'о' : P_Out := $6F;
    'н' : P_Out := $70;
    'п' : P_Out := $71;
    'р' : P_Out := $72;
    'с' : P_Out := $73;
    'т' : P_Out := $74;
    'у' : P_Out := $75;
    'ф' : P_Out := $76;
    'х' : P_Out := $77;
    'ц' : P_Out := $78;
    'ч' : P_Out := $79;
    'ш' : P_Out := $7A;
    'щ' : P_Out := $40;
    'ъ' : P_Out := $3D;
    'ь' : P_Out := $3C;
    'ы' : P_Out := $5B;
    'э' : P_Out := $3E;
    'ю' : P_Out := $5C;
    'я' : P_Out := $5D;
    Else P_Out := P_In;
    End;
    Change := P_Out;
    End;
    Begin
    WriteLn('Perfoming...');
    Assign(OutFile,OutName);
    Rewrite (OutFile,1);
    Assign(InFile,InName);
    Reset(InFile,1);
    N:=FileSize(InFile); {-- Got size of file --}
    { For GAMEPC must be such parameters }
    { BeginNum := $14; }
    { EndNum := $3516; }
    { For other textes parameters like that }
    { BeginNum := $1; }
    { EndNum := $10000; }
    BeginNum := $1;
    EndNum := $10000;
    ClrScr;
    Write ('Total = ', N);
    For I:=1 To N Do
    Begin
    BlockRead (InFile, BufA, 1);
    GotoXY (1, 2);
    WriteLn ('Gone ', I);
    If (I >= BeginNum) And (I <= EndNum) Then BufB := Change (BufA) Else BufB := BufA;
    BlockWrite (OutFile, BufB, 1);
    End;
    Close(InFile);
    Close(OutFile);
    End.
     
  3. SAS io.sys

    SAS

    Администратор

    Регистрация:
    8 июл 2003
    Сообщения:
    19.653
    Dimouse, грамотно написано. Хоть BlockRead/BlockWrite используешь :)
     
  4. CaH51o Target lifeform

    CaH51o

    Регистрация:
    30 ноя 2004
    Сообщения:
    1.480
    а зачем они здесь?


    для оригинальной проги: может нужно насильно вычистить буфер выходного файла :unsure:
     
  5. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    539
    2 CaH51o
    а как?
    2 Dimouse
    Чейто я туплю. Чесно говоря не очень понимаю, как эта прога работает. Можно с примером и ражжеванно построчно?
     
  6. CaH51o Target lifeform

    CaH51o

    Регистрация:
    30 ноя 2004
    Сообщения:
    1.480
    Malcolm, flush
     
  7. CryAngel

    CryAngel

    Регистрация:
    27 апр 2006
    Сообщения:
    62
    BlockRead/BlockWrite если мне не изменяет память пользуются для буферизированного ввода/вывода. Вот ток если как в примере - BlockRead (InFile, BufA, 1); то не пойму смысла - всерно читается/пишется ток по одному байту. А вообще ИМХО удобнее через потоки, по крайней мере в Дельфе...
     
  8. VorteX DrAgON Троллей не кормлю, сами сдохнут.

    VorteX DrAgON

    Legacy

    Регистрация:
    20 сен 2004
    Сообщения:
    3.050
    Malcolm! 46a9b2d05437ea874b5a646f00a643c4.gif

    А зачем заново велисапет изобретать? У меня же ест тулзы, с помощью которых я локализацию делал. Все они конверсию в транслит и обратно для Даггера поддерживают (ты же не думаешь, что я текст суржиком даггеровским набирал? ;) ). Можешь для этих целей использовать или RSC Editor или QRC Editor

    Тулзы вот где и валяются: http://vxdao.hut1.ru/tools.html

    Копируешь текст в буфер, вставляешь в окно редактора, конвертишь в транслит и дальше делаешь с ним что хочешь :)

    ЗЫ Там же и исходники под C++Builder, если кому интересно :)
     
  9. CryAngel

    CryAngel

    Регистрация:
    27 апр 2006
    Сообщения:
    62
    А мот люди в программировании хтят попрактиковаться?:D ИМХО эт иногда полезно )))
     
  10. VorteX DrAgON Троллей не кормлю, сами сдохнут.

    VorteX DrAgON

    Legacy

    Регистрация:
    20 сен 2004
    Сообщения:
    3.050
    Спору нет, пусть практикуются :)

    Таблица соответствий буковок:
    Код:
    char NewRusLetters[66]="ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхжъЭЮбфисвуапршолдьтщзйкыегмцчняХЖЪБюэ";
    char NewEngLetters[66]="ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^>`abcdefghijklmnopqrstuvwxyz{|}~<@";
     
    
    Вот кусок кода, отвечающий за конверсию туда-обратно (и прошу прощения, если обломал с творческими поисками решения конверсии) :)
    Код:
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
     TButton *sb=(TButton *)Sender;
     AnsiString f;
     int i,j,k;
     bool found=false;
     f=Memo->Text;//Копируем текст из окна редактора в промежуточный буфер
     sb->Tag=~sb->Tag;
     if(sb->Tag==0)sb->Caption="Rus -> Eng";
     else sb->Caption="Eng -> Rus";
     for(i=1;i<=f.Length();i++)
     {
      //пропуск при натыкании на спецкоды форматирования, которые надо пропустить при конверсии
      if(f.SubString(i,3)=="<0x")
      {
       for(j=i+1;j<=f.Length();j++)if(f[j]=='>')break;
       i=j;
      }
     }
     //или переменные, которые иногда встречаются в текстах Даггеровских
     else if(f[ i]==dfVar1)
     {
      for(j=i+1;j<=f.Length();j++)
      if((f[j]<'a' || f[j]>'z')&&(f[j]<'0' || f[j]>'9'))break;
      i=j-1;
     }
     //тоже переменные
     else if(f[ i]=='_' || f[ i]=='=')
     {
      for(j=i+1;j<=f.Length();j++)
      if((f[j]<'a' || f[j]>'z')&&(f[j]<'0' || f[j]>'9'))break;
      i=j-1;
     }else
     //Вооот! А теперь нормальный текст, вот его и будем конвертить
     {
      found=false;
      //Поиск соответствия в таблице в зависимости от направления конверсии
      for(j=0;j<66;j++)
      {
        if(sb->Tag==0 && f[ i]==NewEngLetters[j])
        {found=true;break;}
        else if(f[ i]==NewRusLetters[j])
        {found=true;break;}
       }   
       //Если есть чего конвертить, конвертим текущий символ
       if(found)
       {
        if(sb->Tag==0)f[ i]=NewRusLetters[j];
        else f[ i]=NewEngLetters[j];
       }
      }
     }
     //Окончательный вариант заносим в окно редактора
     Memo->Text=f;
    }
    
    Добавлено через 9 минут
    Если хотите попрактиковаться, пусть напишут редактор картинок Даггеровских, чтобы тексты можно было на них править, а то лично у меня только просмотрщик вышел.

    Еще интересная задача - редактор шрифтов ;)
     
    Последнее редактирование: 3 май 2006
  11. CaH51o Target lifeform

    CaH51o

    Регистрация:
    30 ноя 2004
    Сообщения:
    1.480
    VorteX DrAgON, говорят же, что надо паскаль а не с++:D
     
  12. CryAngel

    CryAngel

    Регистрация:
    27 апр 2006
    Сообщения:
    62
    Мона б и поковыряться... ток у мя Даггер-а нетути. Тама ж видать как обычно каки-то свои форматы бут? Короче, в чем собсно задача - расковырять форматы (картинок, шрифтов) или написАть алгоритмы для ряботы с какими-то форматами?
     
  13. VorteX DrAgON Троллей не кормлю, сами сдохнут.

    VorteX DrAgON

    Legacy

    Регистрация:
    20 сен 2004
    Сообщения:
    3.050
    CaH51o
    >> говорят же, что надо паскаль а не с++

    А это родственные языки. Переделать трудов не составит на тот же Дельфи ;)

    CryAngel
    >> Короче, в чем собсно задача - расковырять форматы (картинок, шрифтов) или написАть алгоритмы для ряботы с какими-то форматами?

    Формат расковырян давно. Нужна возможность накладывать матрицы букв на эти картинки и сохранять в том же формате эти картинки. Я из-за нехватки времени только на просмотрщик сподобился.

    ЗЫ А вообще меня больше интересует формат графических файлов из Battlespire, вот где просто рай для кодеров, ибо там часть картинок зашифрована, а с механизмами шифрования я не занимался.
     
  14. CaH51o Target lifeform

    CaH51o

    Регистрация:
    30 ноя 2004
    Сообщения:
    1.480
    VorteX DrAgON, очень родственные, один структурный, a другой объектно ориентированный. Как ты на паскале объекты кнопок создавать собрался:unknw:
    А переделать при желании можно куда угодно, хоть на машину Тюринга:D
     
  15. CryAngel

    CryAngel

    Регистрация:
    27 апр 2006
    Сообщения:
    62
    VorteX DrAgON, ок. напису ишшо тута... тоесть ты хош чтоб примерно как в фотошопе, прям по картинке писАть мон было? Не карандашом, как в паинте, по точке, а типа каку букавку на клаве нажал, та и на картинке нарисовалась?
     
  16. CaH51o Target lifeform

    CaH51o

    Регистрация:
    30 ноя 2004
    Сообщения:
    1.480
    а может лучше сделать конвертер форматов?
     
  17. CryAngel

    CryAngel

    Регистрация:
    27 апр 2006
    Сообщения:
    62
    Гм... а мот и конвертор... Так мот даже проже бут - править в любом графическом редакторе мон будет... над подумать:yes:
     
  18. VorteX DrAgON Троллей не кормлю, сами сдохнут.

    VorteX DrAgON

    Legacy

    Регистрация:
    20 сен 2004
    Сообщения:
    3.050
    очень родственные, один структурный, a другой объектно ориентированный.

    Delphi и C++Builder - обе среды объектно-ориентированные, и пример я привел на ООП ;)

    Как ты на паскале объекты кнопок создавать собрался
    Никак, а речь просто зашла о Дельфи, а это уже далеко не простой структурный Паскаль
     
  19. Malcolm

    Malcolm

    Регистрация:
    9 мар 2006
    Сообщения:
    539
    Тов. Вортех! Чесно говоря я как то и не подумал спросить про эти прогу у тебя. На сайте то твоем их не увидал (ибо слепенький) и давай сам копаться... Попрактиковаться конечно нуна, но лениво. Спасибо за ссылочки ;):sorry:
     
    Последнее редактирование: 3 май 2006
  20. SAS io.sys

    SAS

    Администратор

    Регистрация:
    8 июл 2003
    Сообщения:
    19.653
    VorteX DrAgON, можешь аттачем приложить описание графического формата даггера?
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление