Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по Pascal, беда с графом видимо 
:(
    Опции темы
Wefast
Дата 23.12.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.12.2009

Репутация: нет
Всего: нет



В общем у меня ргрка, при выводе графического изображения, шрифт сбивается в полноэкранном режиме во всем паскаля, там черте что творится. А если переключится в оконный режим то все вроде нормально. В чем собственно проблема может быть? Может я где что не так прописал? Что там и где надо прописывать?
PM MAIL   Вверх
ФедосеевПавел
Дата 24.12.2009, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: 2
Всего: 10



Если я правильно понял, то при выполнении программы на Turbo Pascal, после возврата из графического режима в текстовый вместо русских букв на экране "крокозябры", а программе ещё нужно что-то выполнять. Посмотри здесь.
PM   Вверх
Wefast
Дата 25.12.2009, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.12.2009

Репутация: нет
Всего: нет



В указаной вами теме, я ничего не понил и там видать уже идет работа не с .PAS а уже с компилированой прогой, мнеже надо что бы я запускал через паскаль, мне по ней как бы отчитываться. Да и подключать что то извне да и делать что либо в Паскале я не особо умею.

Если ставить текст мод, то буквы только слегка съезжают, но препода это не устраивает, всякие точки то там то тут появляются, некоторые цифры съезжа.т. В общем помогите плиз , скажите что исправить. И напишите какие и где пути надо указать? Ну как я понимаю в процедуре графа надо указать путь до папки с графом(BGI)/ и в directories в поле unit до папки UNITS. И все вроде бы

Вот текст проги приложил:
Код

program rgr;
uses crt,graph;
var
 operat,option:char;
 rez,ch1,ch2:real;
 l:integer;
 label lb1;
 
{-----------Заставка---------}
     procedure zastavka;
     var
      x,y:integer;
 
      grDriver: integer;
      grMode:integer;
      ErrCode:integer;
      res:integer;
      begin
      grDriver:=detect;
      InitGraph (grDriver, grMode, 'h:\tp\bgi');
      ErrCode:=GraphResult;
      if ErrCode = grOk then
      begin
      x:=150;
      y:=150;
 
      SetFillStyle (SolidFill,White);
      Bar (x,y,x+30,y+150);
      SetFillStyle (SolidFill,White);
      Bar(x+30,y,x+80,y+30);
      SetFillStyle (SolidFill,White);
      Bar(x+80,y+30,x+65,y+65);
      SetFillStyle (SolidFill,White);
      Bar(x+80,y+100,x+30,y+65);
 
      SetFillStyle (SolidFill,Blue);
      Bar (x+110,y,x+140,y+150);
      SetFillStyle (SolidFill,Blue);
      Bar(x+110,y,x+190,y+30);
 
      SetFillStyle (SolidFill,Red);
      Bar (x+220,y,x+250,y+150);
      SetFillStyle (SolidFill,Red);
      Bar(x+250,y,x+300,y+30);
      SetFillStyle (SolidFill,REd);
      Bar(x+300,y+30,x+285,y+75);
      SetFillStyle (SolidFill,Red);
      Bar(x+300,y+100,x+250,y+75);
      end;
      readln;
      CloseGraph;
      end;
     {-----------Помощь------------------------}
 
     procedure help2;
     begin
        clrscr;
        textcolor (white);
        writeln('Пример:');
        writeln('Преобразовать целое число (125)"10" в "2"');
        writeln('125:2=62     1');
        writeln('62 :2=31     0');
        writeln('31 :2=15     1');
        writeln('15 :2=7      1');
        writeln('7  :2=3      1');
        writeln('3  :2=1      1');
        writeln('1  :2=0      1');
        writeln('(125)"10"=(1111101)"2"');
        writeln('Для перевода правильной дроби "10" в систему с основанием b(2) необходимо последовательно умножать исх');
        writeln('одную дробь и дробные части получающихся произведений на b(2). Искомые цифры искомого представления 10');
        writeln('-чного числа есть последовательность целых частей произведений, причем первая из них даёт старшую цифр');
        writeln('у a(1)');
        writeln('Пример:');
        writeln('Преобразовать правильную дробь (0.567)"10" в 8-ную систему счисления');
        writeln('0.567   0.536   0.288   0.304   0.432   0.456');
        writeln('*   8   *   8   *   8   *   8   *   8   *   8');
        writeln('4.536   4.288   2.304   0.432   3.456   3.648');
        writeln('(0.567)"10"=(0.442033)"8"');
        readln;
   end;
 
{----------Помошь-------------------------------------}
 
        procedure help1;
        begin
        clrscr;
        textcolor (white);
        writeln('Преобразование чисел из одной системы счисления в другую.');
        writeln('Пусть N - число в системе с основанием b(1), которое требуется представить в системе с основанием b(2)');
        writeln('Так как легко оперировать только с десятичными числами,то преобразование осущес');
        writeln('твляется через промежуточную систему счисления:десятичную. Условно это выглядит так: b(1)=>10=>b(2)');
        writeln('1)Перевод из b(1) а 10-чную систему');
        writeln('Метод преобразования состоит в представлении числа N в виде многочлена по степен');
        writeln('ям b(1) и вычислении этого многочлена с помощью десятичной арифметики');
        writeln('Пример:');
        writeln('Преобразуем число (571.31) из "8" в число в системе с основанием 10');
        writeln('(571.31)"8"=5*8^2+7*8^1+1*8^0+3*8^-1+1*8^-2=(377.390625)"10"');
        writeln('2)Перевод из 10 в b(2)');
        writeln('Для перевода целого числа N по основанию 10 в систему с основанием b(2) необход');
        writeln('имо последовательно делить исходное число N и образующиеся частные на b(2) до ');
        writeln('получения частного,равного 0. Искомое представление числа N по основанию b(2) есть последовательность ');
        writeln('остатков от операций деления,причём первый остаток  даёт младшую цифру');
        readln;
        help2;
    end;
{---------------Титульный лист-----------------}
procedure titul;
begin
 clrscr;
 textcolor(white);
gotoxy (14,2);writeln('Саратовский государственный технический университет.');
gotoxy (18,3);writeln('Министерство образования Российской Федерации');
gotoxy (12,5);writeln('Кафедра программного обеспечения вычислительной техники');
gotoxy (25,6);writeln('и информационных систем.');
 
gotoxy (20,9);writeln('Расчетно-графическая работа по дисциплине');
gotoxy (30,10);writeln('"Информатика"');
gotoxy (35,12);writeln('Тема:');
gotoxy (10,13);writeln('"Перевод чисел из любой системы счисления(СС) в любую СС."');
gotoxy (50,16);writeln('Выполнил:');
gotoxy (50,17);writeln('Студент ФЭТиП, СГТУ, ПВС-11');
gotoxy (50,18);writeln('Командровский В.С.');
gotoxy (50,20);writeln('Проверила: профессор кафедры');
gotoxy (50,21);writeln('Матвеева И.А.');
gotoxy (35,25);writeln('Саратов 2009.');
readkey
         end;
        {-------Перевод из любой степени в 10-ю--------------------------}
        function step1 (b1:integer; num1:string):string;
          var k,i,n:longint;
          err:integer;
          num2,weight:real;
 
begin
     k:=-1;
     num2:=0;
     if (num1[1]='-') then    {Если есть - то удаляем его и запоминаем}
     begin
     Delete(num1,1,1);
     l:=1;
     for i:=1 to length(num1) do
     if (num1[i]='.') then break else k:=k+1;
        weight:=1;
     for i:=1 to k do
            weight:=weight*b1;
     for i:=1 to length(num1) do begin
         val(num1[i],n,err); {Преобразование строки в число}
         if (n>=b1) then
         begin
              writeln('Ошибка ввода:число должно быть с основанием выбраной вами СС');
              break
         end
         else begin if (num1[i]<>'.') then
         begin
              if (num1[i]>='0') and (num1[i]<='9') then
         val(num1[i],n,err) else n:=ord(num1[i])-55; {порядковое значение выражения.}
         num2:=num2+n*weight;
         weight:=weight/b1;
         end;end;end;
    str(num2:20:10, num1); {Число в строку}
    step1:=num1;
    end
    else
    begin     {Если "-" не было тогда}
     for i:=1 to length(num1) do
     if (num1[i]='.') then break else k:=k+1;
        weight:=1;
     for i:=1 to k do
            weight:=weight*b1;
     for i:=1 to length(num1) do begin
         val(num1[i],n,err);
         if (n>=b1) then
         begin
              writeln('Ошибка:число должно быть с основанием выбраной вами СС ',b1);
              break
         end
         else begin if (num1[i]<>'.') then
         begin
              if (num1[i]>='0') and (num1[i]<='9') then
         val(num1[i],n,err) else n:=ord(num1[i])-55;
         num2:=num2+n*weight;
         weight:=weight/b1;
         end;end;end;
    str(num2:20:10, num1);
    step1:=num1;
    end;
end;
{-------------------Перевод из 10-й в любую--------------}
procedure step2 (b2:integer; number1:string);
var num,fraction,next:real;
    int_part, ost,i,n:longint;
    err:integer;
    str1:char;
begin
     val(number1, num, err);
     int_part:=trunc(num); {вещественное в целое}
     fraction:=num-int_part;
     number1:='';
     while (int_part<>0) do
     begin
          ost:=int_part mod b2;
          if (ost>=10) then str1:=chr(ost+55)
          else str1:=chr(ost+48);
          int_part:=int_part div b2;
          number1:=str1+number1;
     end;
     if (fraction<>0) then number1:=number1+'.';
     for i:=1 to 10 do
     begin
          next:=fraction*b2;
          if (next<>0) then
          begin
               n:=trunc(next);
               if (n>=10) then str1:=chr(n+55)
               else str1:=chr(n+48);
               fraction:=next - trunc(next);
               number1:=number1+str1;
          end
          else break
     end;
     if l=1 then
     begin
     Insert('-',number1,1);
     writeln(number1);
     end
     else
     writeln(number1);
end;
procedure main;
var b1,b2:integer;
    number1:string[50];
begin
     clrscr;
     writeln('Введите СС из которой вы будете переводить число');
     readln(b1);
     writeln('_____________________________________________________');
     writeln('Введите число с учетом выбраной вами СС');
     readln(number1);
     writeln('_____________________________________________________');
     writeln('Введите СС в которую вы хотите перевести число');
     readln(b2);
     writeln('_____________________________________________________');
     if (b1=b2)
     then writeln('Ответ:', number1)
     else
     if (b1>0) and (b2>0) then
     begin
          number1:=step1(b1,number1);
          step2(b2,number1);
     end
     else writeln('Ошибка, основание системы счисления должно быть больше 0');
     readln;
end;
 
 
 
     {-----------------------------------------}
   begin
     lb1:
     clrscr;
     begin
     textcolor (white);
     gotoxy(9,1); writeln('Перевод чисел из любой СС в любую СС.');
     gotoxy(9,5); writeln('1. Заставка.');
     gotoxy(9,6); writeln('2. Титульный лист.');
     gotoxy(9,7); writeln('3. Запустить Программу.');
     gotoxy(9,8); writeln('4. Справка.');
     gotoxy(9,9); writeln('0. Выход.');
     gotoxy(9,11); writeln('Выберите действие: ');
     gotoxy(58,11); readln(option);
     end;
     case option of
     '1': begin  zastavka;goto lb1;end;
     '2': begin titul; goto lb1; end;
     '3': begin main; goto lb1; end;
     '4': begin help1; goto lb1; end;
     '0': exit;
   end;
readkey
end.


Это сообщение отредактировал(а) volvo877 - 25.12.2009, 09:57
PM MAIL   Вверх
volvo877
Дата 25.12.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



А можно мне объяснить, зачем надо было в одной программе совмещать и текстовый и графический режим? Умудрился заставку сделать в графическом - так и работай в графике теперь. Нечего туда-сюда переключаться... Подключай кириллические CHR-шрифты (по вышеприведенной ссылке можно их найти), и все... gotoxy+writeln заменяется на outtextxy. Ничего сложного.
PM MAIL   Вверх
ФедосеевПавел
Дата 26.12.2009, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: 2
Всего: 10



Полностью согласен с volvo877.

И кроме того, если добавить модуль swfont, то придётся объяснять преподавателю как он работает.


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0813 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.