21.04.2014, 22:34 | #11 (permalink) |
Member
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
мой паскаль ругается, выдает ошибку "file not found" в первой строке. ему не нравится модуль Graph( |
21.04.2014, 22:34 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме можно найти похожие топики, помогу вам в этом Турбо Паскаль. Тип запись Турбо Паскаль. Рекурсии Программа в Турбо-Паскаль 7,0 Задание Паскаль |
22.04.2014, 11:08 | #12 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Так, ну этого я и опасался.
Ну что же, попробуем решить проблему. Начнем с вопроса: есть ли в составе Вашего пакета TurboPascal файл по имени graph.tpu? Всё остальное - только в случае положительного ответа на этот вопрос. Итак, если таковой файл имеется, то: 1. Открываем Турбо Среду. 2. Там лезем в Options - Directories. 3. В открывшемся окошке находим строку Unit Directories. Убеждаемся, что там правильно прописан путь к папке, в которой сидит graph.tpu. Если строка пустая или путь не соответствует, то вписываем правильный путь (напр. у меня это C:\TP\UNITS), после чего жмём ОК, потом обязательно вновь щелкаем по Options, а затем по Save. 4. Запускаем программу "Гармошка". Если она перестанет ругаться на отсутствие файла, но тем не менее не запустится, то начнем конфигурировать параметры процедуры запуска InitGraph. Но это уже следующий этап. Если же файла graph.tpu у Вас не обнаруживается, то это означает, что либо там встроена другая (не Borland) графика, либо графика отсутствует вовсе. Если так, то - увы! P.S. Света, всё-таки было бы очень желательно, если бы Вы смогли появляться здесь почаще. А то при коротких визитах раз в неделю мы, боюсь, протелепаемся с этой задачкой до Нового года. |
22.04.2014, 22:27 | #13 (permalink) |
Member
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
я сделала, как вы мне сказали. итог: на отсутствие файла перестал ругаться, но выдал следующее сообщение: BGI Error: Graphics not initialized (use InitGraph)
|
22.04.2014, 22:40 | #14 (permalink) |
Хозяин Медной Горы
Регистрация: 01.08.2011
Адрес: Армавир
Сообщений: 12,159
Записей в дневнике: 8
Сказал(а) спасибо: 751
Поблагодарили 88 раз(а) в 27 сообщениях
Репутация: 57416
|
Тогда в этой строке вашей программы
Код:
InitGraph(grDriver, grMode, ''); Код:
InitGraph(grDriver, grMode, 'D:\TP\BIN\'); |
23.04.2014, 21:19 | #15 (permalink) |
Member
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
программа заработала, спасибо. только получается, что гармошка не "играет туда-обратно" а растягивается только в одном направлении. можно, пожалуйста, подредактировать так, чтобы гармошка "играла в обе стороны"?)
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
24.04.2014, 09:38 | #16 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Ага, кажется понял, "где собачка порылась". Вероятно, Ваш Паскаль несколько строже относится к совместимости типов данных, чем мой. А потому попробуйте заменить функцию LeftBorder на такой вариант: Код:
Function LeftBorder(Step:Word):Boolean; var LB:Integer; begin LB:=-16*Step-35+X0; LeftBorder:=LB>0; end; |
|
24.04.2014, 11:22 | #18 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Правда, есть одно "но": оба пакета я гоняю исключительно в DOS-моде с эмуляцией VGA-экрана (640х480). А Вы, вероятно, запускаете в оконном? Может быть, дело в этом? Ладно, поразмыслю над другим вариантом прерывания цикла растяжки и перехода к циклу сжатия. |
|
24.04.2014, 11:37 | #19 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Протестируйте, пожалуйста, такой вариант:
Код:
Uses CRT, Graph; Var X0,Y0,StepX,StepX_max:Word; grDriver, grMode: Integer; Procedure Garm(Step:Word); var i:byte; begin SetLineStyle(SolidLn,0,ThickWidth); Line(X0,Y0-40,X0,Y0+40); for i:=1 to 8 do begin Line(X0-Step*2*i,Y0-40,X0-Step*2*i,Y0+40); Line(X0+Step*2*i,Y0-40,X0+Step*2*i,Y0+40); end; SetLineStyle(SolidLn,0,NormWidth); for i:=1 to 8 do begin Line(X0-Step*(2*i-1),Y0-30,X0-Step*(2*i-1),Y0+30); Line(X0+Step*(2*i-1),Y0-30,X0+Step*(2*i-1),Y0+30); end; MoveTo(X0,Y0-40); for i:=1 to 8 do begin LineTo(X0-step*(2*i-1),Y0-30); LineTo(X0-step*2*i,Y0-40); end; MoveTo(X0,Y0+40); for i:=1 to 8 do begin LineTo(X0-step*(2*i-1),Y0+30); LineTo(X0-step*2*i,Y0+40); end; MoveTo(X0,Y0-40); for i:=1 to 8 do begin LineTo(X0+step*(2*i-1),Y0-30); LineTo(X0+step*2*i,Y0-40); end; MoveTo(X0,Y0+40); for i:=1 to 8 do begin LineTo(X0+step*(2*i-1),Y0+30); LineTo(X0+step*2*i,Y0+40); end; end; Procedure Left(Step:Word); begin SetLineStyle(SolidLn,0,ThickWidth); Rectangle(X0-16*Step,Y0-40,X0-16*Step-35,Y0+40); Line(X0-16*Step-20,Y0-40,X0-16*Step-20,Y0+40); end; Procedure Right(Step:Word); begin SetLineStyle(SolidLn,0,ThickWidth); Rectangle(X0+16*Step,Y0-40,X0+16*Step+20,Y0+40); end; Begin grDriver:=Detect; InitGraph(grDriver, grMode, '________'); - тут самостоятельно! X0:=GetMaxX div 2; Y0:=GetMaxY div 2; StepX_max:=Trunc((X0-35)/16); StepX:=4; ClearDevice; Garm(StepX); Left(StepX); Right(StepX); SetTextJustify(CenterText,BottomText); OutTextXY(X0,Y0*2-20,'Press any key to start...'); ReadKey; Repeat StepX:=4; repeat StepX:=StepX+1; If StepX<=StepX_max then begin ClearDevice; Garm(StepX); Left(StepX); Right(StepX); OutTextXY(X0,Y0*2-20,'Press any key to stop...'); Delay(100); end; until (StepX>=StepX_max) or KeyPressed; repeat StepX:=StepX-1; If StepX>3 then begin ClearDevice; Garm(StepX); Left(StepX); Right(StepX); OutTextXY(X0,Y0*2-20,'Press any key to stop...'); Delay(100); end; until (StepX=3) or KeyPressed; Until KeyPressed; ReadKey; CloseGraph; End. |
24.04.2014, 12:41 | #20 (permalink) |
Member
Регистрация: 05.03.2014
Сообщений: 200
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
|
подтверждаю. в DOS-mode работает туда и обратно. запускал через DOSBox 0.74.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|