Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2008, 12:56   #1
non1ka
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 13
По умолчанию Преобразования Pascal в Delphi

Добрый день господа Мастера ...
У меня есть проблемка которая требует решения...

Вобщем один мой знакомый попросил меня составить ему программу для решения "хода коня" на Delphi...

Я с этим языком не знаком и с помощью книжки смог написать листинг на Turbo Pascale... Я слышал что Delphi и Pascal вроде как бы родственные языке...

Задача заключается в слудеющем мне нужно "перекомпилировать" листинг в Delphi нужна ваша помощ.....

Заранее спасибо!!
non1ka вне форума Ответить с цитированием
Старый 28.05.2008, 14:54   #2
LLIypLLIyH
Пользователь
 
Аватар для LLIypLLIyH
 
Регистрация: 27.05.2008
Сообщений: 58
По умолчанию

Если как в паскале то нужно в делфи писать её в консоле

оставляешь не тронутой только
program

{$APPTYPE CONSOLE} (Эта штука нужна!)

uses
SysUtils; (И эта тож )
LLIypLLIyH вне форума Ответить с цитированием
Старый 28.05.2008, 14:57   #3
master_root
Пользователь
 
Регистрация: 18.05.2008
Сообщений: 30
По умолчанию re

Импортируй *.pas файлы в Delphi проект(console application). Заменяй модули uses на Delphi совместимые. А лучше выкладывай код сюда и тебе его переведут в Delphi совместимый модуль. Delphi основан на pascal, но не является им. Некоторые поправки всё-равно нужны.
master_root вне форума Ответить с цитированием
Старый 28.05.2008, 15:09   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А какая разница? Если слегка переводить то будет такая же консоль как и в обычном паскале.
Может автору нужна оконная Win прога...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.05.2008, 17:02   #5
master_root
Пользователь
 
Регистрация: 18.05.2008
Сообщений: 30
По умолчанию

да в принципе, разницы нет.Разве,что для win32 придётся основную программу представить ввиде функции или процедуры и реализовывать в каком-нить обработчике событий. Главное правильно раздел подключения модулей(uses) переконвертировать.Короче ждём уточнений автора топика.
>non1ka
Выложи код если не понял что да как. Проще будет
master_root вне форума Ответить с цитированием
Старый 02.06.2008, 10:35   #6
non1ka
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 13
По умолчанию

Хорошо... спасибо зарранее... в ближайшее время выложу листинг...

Кстати по поводу оконной WIN программы... если это будет возможно то было бы вообще супер... Просто цель программы отобразить графически ход коня по шахматной доске... если это будет win приложением то это просто замечательно

Последний раз редактировалось Stilet; 02.06.2008 в 13:01.
non1ka вне форума Ответить с цитированием
Старый 03.06.2008, 10:50   #7
non1ka
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 13
По умолчанию

Вылаживаю листинг программы на Turbo Pascale...
Код:
Program HorseMoving;
Uses
  CRT;
Var
Field:  Array [1..20] of Array [1..20] of Integer;
N:  Integer;
MaxX, MaxY: Integer;
x, y:  Integer;
Procedure WritePosition;
Var
X, y:  Integer;
Begin
ClrScr;
For y:=1 to MaxY do
  For x:=1 to MaxX do
  Begin
  GotoXY (x*4, y*2);
  Write (Field[x, y]);
  End;
End;

Procedure  Move(x, y: Integer);
Begin
N :=  N+1;
Field [x,y] := N;
If N = MaxX * MaxY Then
  Begin
  WriteLN (‘ Есть Решение!!!‘);
  WritePosition;
  ReadKey;
  Halt;
  End;
If (x+2<=MaxX) and (y+1<=MaxY) Then
  If Field[x+2, y+1]=0 Then move (x+2, y+1);
If (x+1<=MaxX) and (y+2<=MaxY) Then
  If Field[x+1, y+2]=0 Then move (x+1, y+2);
If (x-1>0) and (y+2<=MaxY) Then
  If Field[x-1, y+2]=0 Then move (x-1, y+2);
If (x-2>0) and (y+1<=MaxY) Then
  If Field[x-2, y+1]=0 Then move (x-2, y+1);
If (x-2>0) and (y-1>0) Then
  If Field [x-2, y-1]=0 Then move (x-2, y-1);
If (x-1>0) and (y-2>0) Then
  If Field [x-1, y-2]=0 Then move (x-1, y-2);
If (x+1<=MaxX) and (y-2>0) Then
  If Field [x+1, y-2]=0 Then move (x+1, y-2);
If (x+2<=MaxX)and (y-1>0) Then
  If Field[x+2, y-1] = 0 Then move (x+2, y-1);
N := N - 1;
Field[x, y]:=0;
End;

Begin
ClrScr;
N := 0;
Write (‘ Введите ширину поля (от 1 до 20): ’);
ReadLn (MaxX);
Write (‘Введите высоту поля (от 1 до 20):’);
ReadLn(MaxY);
For x:=1 To MaxX Do
  For y:=1 To MaxY Do Field[x,y]:=0;
ClrScr;
Move (1,1);
WriteLn (‘Решение не найдено…’);
End.
Жду Конвертации

From Stilet: Правильно оформление поста, Я натякаю на тег кода, дает вероятную гарантию успешного решения

Последний раз редактировалось Stilet; 03.06.2008 в 10:56.
non1ka вне форума Ответить с цитированием
Старый 03.06.2008, 10:53   #8
non1ka
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 13
По умолчанию

И кстати если не затруднит скиньте ссылочку на Delphi просто не кайф лить верссии 2007 или 7.. я на работе а трафик платный.. такую самую урезанную версию что бы эта программа запустилась и сделала свое дело
non1ka вне форума Ответить с цитированием
Старый 03.06.2008, 15:02   #9
non1ka
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 13
По умолчанию

^^^ Извените за флуд ^^^ Просто не отвечают на топ. Хотел его в списке поднять....
non1ka вне форума Ответить с цитированием
Старый 04.06.2008, 09:34   #10
non1ka
Пользователь
 
Регистрация: 28.05.2008
Сообщений: 13
По умолчанию

Очень нужна помощь... Я как бы с помощью знакомых попробывал переделать.. проверьте пожалуйста не в чем не ошибся...
Код:
Program HorseMoving;
{$APPTYPE CONSOLE}
uses
 Windows;
Var
 Field: Array [1..20] of Array [1..20] of Integer;
 N: Integer;
 MaxX, MaxY: Integer;
 x, y: Integer;
 Con: integer;

procedure GotoXY(X,Y:integer);
var
 Coord: TCoord;
begin
 Coord.x:=X;
 Coord.y:=Y;
 SetConsoleCursorPosition(Con,Coord);
end;

Procedure WritePosition;
Var
 X, y: Integer;
Begin
 For y:=1 to MaxY do
  For x:=1 to MaxX do
  Begin
    GotoXY (x*4, y*2);
    Write (Field[x, y]);
  End;
End;

Procedure Move(x, y: Integer);
Begin
 N := N+1;
 Field [x,y] := N;
 If N = MaxX * MaxY
  Then Begin
         GotoXY(3,3);
         WritePosition;
         writeln;
         WriteLN (' Есть Решение!!!');
         Readln;
         Halt;
       End;
 If (x+2<=MaxX) and (y+1<=MaxY)
  Then If Field[x+2, y+1]=0
        Then move (x+2, y+1);
 If (x+1<=MaxX) and (y+2<=MaxY)
  Then If Field[x+1, y+2]=0
        Then move (x+1, y+2);
 If (x-1>0) and (y+2<=MaxY)
  Then If Field[x-1, y+2]=0
        Then move (x-1, y+2);
 If (x-2>0) and (y+1<=MaxY)
  Then If Field[x-2, y+1]=0
        Then move (x-2, y+1);
 If (x-2>0) and (y-1>0)
  Then If Field [x-2, y-1]=0
        Then move (x-2, y-1);
 If (x-1>0) and (y-2>0)
  Then If Field [x-1, y-2]=0
        Then move (x-1, y-2);
 If (x+1<=MaxX) and (y-2>0)
  Then If Field [x+1, y-2]=0
        Then move (x+1, y-2);
 If (x+2<=MaxX)and (y-1>0)
  Then If Field[x+2, y-1] = 0
        Then move (x+2, y-1);
 N := N - 1;
 Field[x, y]:=0;
End;

Begin
 Con := GetStdHandle(STD_OUTPUT_HANDLE);
 N := 0;
 Write ('Введите высоту поля (от 1 до 20):');
 ReadLn (MaxX);
 Write ('Введите высоту поля (от 1 до 20):');
 ReadLn(MaxY);
 For x:=1 To MaxX Do
  For y:=1 To MaxY Do Field[x,y]:=0;
 Move (1,1);
 GotoXY(3,3);
 WriteLn ('Решение не найдено');
 readln;
End.

Последний раз редактировалось Stilet; 04.06.2008 в 09:44.
non1ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразования систем исчисления Altera Общие вопросы Delphi 5 21.02.2008 08:43
С Pascal на Delphi =*=|/|MM0PT@/\=*= Паскаль, Turbo Pascal, PascalABC.NET 12 06.09.2007 17:53