Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Разное > Флейм
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.04.2012, 18:36
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию Задачка на понимание

Когда был в 11м классе придумал с другом одну задачку. Не то, чтоб шибко сложную, скорее просто прикольную. Вспомнилась в связи с одним недавним постом на этом форуме.
Код:
{$APPTYPE CONSOLE}

uses Dialogs;

procedure SuperProc(var a, b: integer);
begin
 a := 1;
 b := 2;
 if (a=1) then 
    exit
 else 
    ShowMessage('Epic FAIL!');
end;

...
Суть: написать программу с использованием этой процедуры (не внося изменений в неё) так, чтобы процедура выдала сообщение 'Epic FAIL!'. Грубо говоря, писать код можно только на месте многоточия.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 16.04.2012 в 18:42.
Ответить с цитированием
  #2  
Старый 16.04.2012, 18:45
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

решено .....

Последний раз редактировалось Pilot_Red, 16.04.2012 в 19:04.
Ответить с цитированием
  #3  
Старый 16.04.2012, 18:48
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Ага.
Мне некоторые предлагали всякую жуть вплоть до мыслей "надо как-то модифицировать код..."
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #4  
Старый 16.04.2012, 18:55
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от Bargest
Ага.
Мне некоторые предлагали всякую жуть вплоть до мыслей "надо как-то модифицировать код..."
Классная задачка, пойду корешу покажу!
Ответить с цитированием
  #5  
Старый 16.04.2012, 19:30
ildvild ildvild вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Уфа
Сообщения: 31
Версия Delphi: 7, 2007, 2010
Репутация: 10
По умолчанию

Решил. Интересно у кого какое решение.
Ответить с цитированием
  #6  
Старый 16.04.2012, 19:55
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 642
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

....................(x, x)....................
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.

Последний раз редактировалось dr. F.I.N., 16.04.2012 в 20:04.
Ответить с цитированием
  #7  
Старый 16.04.2012, 20:28
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Сообщение от ildvild
Решил. Интересно у кого какое решение.
Я думаю, решение тут одно. Если, конечно, не брать особое извращенство вроде модификации машинного кода процедуры.
З.Ы. 900й пост
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 16.04.2012 в 20:31.
Ответить с цитированием
  #8  
Старый 17.04.2012, 08:36
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Санкт-Петербург
Сообщения: 2,899
Репутация: выкл
По умолчанию

Хорошая задача, я спросонья минуты 2 втупливал...
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #9  
Старый 17.04.2012, 08:48
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость



Код:
program Project1;

{$APPTYPE CONSOLE}

var
  x, y, z: Integer;

begin
  x:=0;
  y:=0;
  z:=0;
  try
    x:=y div z;
    Writeln(x);
  except
    Writeln('div by 0');
    Readln;
  end;
end.

почему блок except-end не срабатывает?)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #10  
Старый 17.04.2012, 10:06
Kingcss Kingcss вне форума
Начинающий
 
Регистрация: 20.12.2010
Адрес: Иваново
Сообщения: 100
Версия Delphi: Delphi 7
Репутация: 519
По умолчанию

хм, так?
PHP код:
{$APPTYPE CONSOLE}

uses Dialogs;

procedure SuperProc(var abinteger);
begin
 a 
:= 1;
 
:= 2;
 if (
a=1then 
    
exit
 else 
    
ShowMessage('Epic FAIL!');
end;
 
ShowMessage('Epic FAIL!'); 
Ответить с цитированием
  #11  
Старый 17.04.2012, 10:07
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Kingcss, нет, не так. SuperProc должна вывести сообщение.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 17.04.2012, 10:09
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

...superproc(a,a)...
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #13  
Старый 17.04.2012, 10:29
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Санкт-Петербург
Сообщения: 2,899
Репутация: выкл
По умолчанию

NumLock, - uses SysUtils - там ошибки описаны (в частности деление на ноль).
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #14  
Старый 17.04.2012, 11:36
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

потому что ExceptObjProc не определена:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses Windows;

var
  x, y, z: Integer;

function GetExceptionObject(P: PExceptionRecord): TObject;
begin
  Result:=TObject.Create;
end;

begin
  ExceptObjProc:=@GetExceptionObject;
  y:=0;
  z:=0;
  try
    x:=y div z;
    Writeln(x);
  except
    Writeln('div by 0');
  end;
  Readln;
end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #15  
Старый 17.04.2012, 14:24
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Чотко
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2020

ВКонтакте   Facebook   Twitter