Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Преобразования Pascal в Delphi   Найти похожие ветки 

 
non1ka ©   (2008-05-28 12:33) [0]

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

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

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

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

Заранее спасибо!!


 
Romkin ©   (2008-05-28 12:42) [1]

Убери CRT, добавь волшебные строки в начале программы
{$IFDEF WIN32}
 {$APPTYPE CONSOLE}
{$ENDIF}

И компилируй :)


 
SergeyIT ©   (2008-05-28 12:43) [2]

А Делфи на машине есть?


 
non1ka ©   (2008-05-28 12:45) [3]


> Убери CRT, добавь волшебные строки в начале программы
> {$IFDEF WIN32}
>  {$APPTYPE CONSOLE}
> {$ENDIF}
> И компилируй :)

Волшебство :)

А если вас не затруднит можно рассказать о смысле этих столь прекрасных строк :)


 
non1ka ©   (2008-05-28 12:46) [4]


> А Делфи на машине есть?

Пока что нет но думаю скачать с интернета сейчас....


 
Palladin ©   (2008-05-28 12:47) [5]

в рассказе смысла будет куча терминов, так же нуждающихся в рассказе об их смысле...


 
non1ka ©   (2008-05-28 12:53) [6]


> Palladin


Вобщем одним словом если я заменю CRT на 3 этих строчки программа будет компилироваться и работать без проблем в среде Delphi????

А задал я этот вопрос по причине того что эту программу он должен защищать на зачете...

А если эти строки дают возможность просто компилировать в Delphi программу на Pascale то может быть у него будут проблеммы :)


 
No_Dead ©   (2008-05-28 12:56) [7]

> попросил меня составить ему программу


> он должен защищать на зачете...


сочувствую...
ЗЫ. а потом ветки о «еденицах» появляются...


 
Palladin ©   (2008-05-28 12:58) [8]

программа компилироваться будет.

Эти строчки дают программе возможность использовать WriteLn/ReadLn, а, как правило, больше примитивной академпрограмме и не нужно...


 
Mystic ©   (2008-05-28 13:02) [9]

> как правило, больше примитивной академпрограмме и не нужно.

Как правило... Но... во-первых, могут быть ассемблерные вставки и inline. Во-вторых, программа может просто тупо писать в видеопамять по адресу B800:0000 безо всяких CRT. В третьих, многие часто игрались в CRT всякими методами вроде GotoXY, SetColor, SetBackgroundColor, ... :)


 
Sergey13 ©   (2008-05-28 13:02) [10]

> [0] non1ka ©   (28.05.08 12:33)
> Вобщем один мой знакомый попросил меня составить ему программу
> для решения "хода коня" на Delphi...

http://delphimaster.net/view/15-1211392855/

8-)


 
non1ka ©   (2008-05-28 13:03) [11]


> Palladin

Вот теперь понятно.. просто как я понял до этого разговора, что единственное отличие двух языков при минимальном использованние возможностей, Это отличие операторов ввода и вывода информации...
Спасибо огромное сегодня буду пробывать!!


 
Romkin ©   (2008-05-28 13:03) [12]

Тут надо смотреть, какие модули в uses используются. Еси толко свои - больше практически ничего делать не придется.
Хотя могут быть варианты. От программы зависит


 
SergeyIT ©   (2008-05-28 13:07) [13]

Можно скачать www.FreePascal.org - он вообще TP7 подобный


 
Palladin ©   (2008-05-28 13:07) [14]


> Mystic ©   (28.05.08 13:02) [9]

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


 
Palladin ©   (2008-05-28 13:08) [15]


> non1ka ©   (28.05.08 13:03) [11]
> Это отличие операторов ввода и вывода информации...

ты понял не правильно


 
Romkin ©   (2008-05-28 13:08) [16]

У тебя в uses не должно быть стандартных модулей вообще. То есть, никаких CRT, GRAPH, OBJECTS и тд.


 
non1ka ©   (2008-05-28 13:14) [17]


> SergeyIT

Спасибо за ссылку...

> Romkin

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

> Palladin

РРРРР :( Я извеняюсь, просто с программирование не люблю иметь дело... все знания основаны на
> примитивной академпрограмме
:)


 
Kolan ©   (2008-05-28 15:35) [18]

> РРРРР :( Я извеняюсь, просто с программирование не люблю
> иметь дело...

Млин, когда же у нас сделабт так, чтобы можно было выбирать предметы, которые хочешь изучать. Тогда и вопросов не будет. Уравниловка не рулит :(


 
_mirage_   (2008-05-28 15:39) [19]

>[18] Kolan © (2008-05-28 15:35:00)
ну да. софоложество, закон божий и новую хронологию. где мозги не нужны.

---
Understanding is not required. Only obedience.


 
Kolan ©   (2008-05-28 18:00) [20]

> закон божий

Можно подумать ты спец по нему, что так говоришь.


 
_mirage_   (2008-05-28 18:23) [21]

>[20] Kolan © (2008-05-28 18:00:00)
конечно. любой спец. оно же не верифицируемо, так что — что не выдумывай, всё одинаково достоверно.

---
Understanding is not required. Only obedience.


 
non1ka ©   (2008-06-03 10:57) [22]

Вылаживаю листинг программы на 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.

Посмотрите что нужно изменить.. Заранее спасибо. Жду ответа


 
Alien1769 ©   (2008-06-03 11:19) [23]

Тебе уже "настучали" на клаве:
1.убрать
> Uses
> CRT;

2.Заменить управление установки курсора
> GotoXY


 
Mystic ©   (2008-06-03 11:31) [24]

Говорилось уже: убрать CRT, ClrSrc. Переписать вывод без использования GotoXY.


 
Anatoly Podgoretsky ©   (2008-06-03 12:23) [25]


> Посмотрите что нужно изменить.. Заранее спасибо. Жду ответа

Вот только это

Uses
  CRT;

Заменить на
Uses
  хххCRT;

Где ххх это заменитель модуля под Виндоус, в Интернет должно быть несколько альтернативных модулей. Больше ничего в данно коде менять не надо. Простой поиск в Сети позволит это найти.


 
Vlad Oshin ©   (2008-06-03 12:35) [26]

Да просто gotoxy переписывается,
ClrScr не обязательно, gotoxy просто правильно делается, и пустые writeln
Алгоритм обхода сравнил с  алгоритмом Варнсдорфа (конь ходит на поле, с которого колво возможных ходов минимально). Скорости

uses
 Windows;

 Con: integer;

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

 Con := GetStdHandle(STD_OUTPUT_HANDLE);


 
Vlad Oshin ©   (2008-06-03 12:35) [27]

Удалено модератором


 
Vlad Oshin ©   (2008-06-03 12:35) [28]

Удалено модератором


 
boa_kaa (another comp)   (2008-06-03 12:57) [29]


> non1ka ©   (03.06.08 10:57) [22]
> Вылаживаю листинг программы на Turbo Pascale...

а ведь правильно сказал в общем-то... :)


 
non1ka ©   (2008-06-03 13:10) [30]

Так после замены CRT
У меня получилось
Uses
{$IFDEF WIN32}
{$APPTYPE CONSOLE}
{$ENDIF}
Var

GotoXY я меня не стал...
а что делать с операторами ввода и вывода writeln я не понял :(


 
@!!ex ©   (2008-06-03 13:14) [31]

> [30] non1ka ©   (03.06.08 13:10)

Спасибо, посмешил. :)))


 
non1ka ©   (2008-06-03 13:15) [32]

Пжалуйста всегда готов... я признаю Что я не черта не понял...

Я понимаю есть модуль CRT его нужно заменить.. как я не знаю...
Вам может это понятно мне нет...


 
@!!ex ©   (2008-06-03 13:16) [33]

{$IFDEF WIN32}
{$APPTYPE CONSOLE}
{$ENDIF}
Ставится в САМОМ НАЧАЛЕ проекта, перед всем остальным кодом.

Вы бы хоть соизволили почитать, что этот код делает.


 
Anatoly Podgoretsky ©   (2008-06-03 13:17) [34]

> non1ka  (03.06.2008 13:15:32)  [32]

хххCRT заменить на имя пользователя.


 
@!!ex ©   (2008-06-03 13:18) [35]

uses CRT - просто удаляется.


 
non1ka ©   (2008-06-03 13:19) [36]


> Вы бы хоть соизволили почитать, что этот код делает.

Как я предпологаю подключает библиотеки или модули delphi.. все что могу предположить!! я в верху написал что эти волшебные строки делают.. Мне сказали
> в рассказе смысла будет куча терминов, так же нуждающихся
> в рассказе об их смысле...


 
non1ka ©   (2008-06-03 13:20) [37]

{$IFDEF WIN32}
{$APPTYPE CONSOLE}
{$ENDIF}
Program HorseMoving;
Var
Field:  Array [1..20] of Array [1..20] of Integer;

Вот так??


 
Vlad Oshin ©   (2008-06-03 13:28) [38]

некогда ему читать,  эмо не читают


 
Vlad Oshin ©   (2008-06-03 13:28) [39]

Удалено модератором


 
Vlad Oshin ©   (2008-06-03 13:28) [40]

Удалено модератором



Страницы: 1 2 3 вся ветка

Текущий архив: 2008.07.20;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.025 c
4-1192827598
i
2007-10-20 00:59
2008.07.20
Prevent service&amp;process from stopping


2-1213873717
ciborg
2008-06-19 15:08
2008.07.20
Как скопировать объект


2-1213984177
Res
2008-06-20 21:49
2008.07.20
exit и procedure


15-1212677917
Slider007
2008-06-05 18:58
2008.07.20
С днем рождения ! 5 июня 2008 четверг


1-1195594267
S1ntez
2007-11-21 00:31
2008.07.20
Независимость дочернего окна