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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2014, 20:13   #21
Foreseen
Техножрец
Форумчанин
 
Аватар для Foreseen
 
Регистрация: 04.07.2014
Сообщений: 289
По умолчанию

Цитата:
Xp(.Y.) := Xp(.Y.) * 2;
Вот до чего дошли, уже сиськи в коде рисовать начали
— Двери есть везде. Просто нужно знать, как в них войти.
Foreseen вне форума Ответить с цитированием
Старый 08.09.2014, 20:23   #22
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Документированная фича. Не пали малину.
phomm вне форума Ответить с цитированием
Старый 08.09.2014, 21:03   #23
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Документированная фича
Упс. Это хе-шная фишка? Гугл что-то ничего не подсказал, где найти можно об этом?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.09.2014, 21:14   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
уже сиськи в коде рисовать начали
Хы... Где-то читал что одному чудику смайлами удалось нарисовать чье-то лицо 1:1

Ах так? Ладно. Вот мое извращение 90-х:
Код:
program Project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };
var a,b,c:integer;
  l,i,j:integer; q,p:^integer;
begin
  a:=3;b:=25;c:=7; p:=@a;
  writeln(a:10,b:10,c:10);
  for i:=1 to 3 do begin
   q:=p;
   for j:=i to 3 do begin
    if q^>p^ then begin
      l:=q^;q^:=p^;p^:=l;
    end;
    inc(q,4);
   end;
   inc(p,4);
  end;
  writeln(a:10,b:10,c:10);
  readln;
end.
I'm learning to live...

Последний раз редактировалось Stilet; 08.09.2014 в 21:20.
Stilet вне форума Ответить с цитированием
Старый 08.09.2014, 21:18   #25
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Аватар,
Пуск -> Программы -> Borland Delphi 7 -> Help -> Delphi 7 Help -> Вызов справки -> предметный указатель -> special symbols
А ещё XProger писал у себя
Да и вообще у него там триксов много.
А вот я свои раскрывал триксы : http://programmersforum.ru/showpost....39&postcount=7
Вот ещё корки мочили по данной теме http://igdc.ru/forum/viewthread.php?...621&rowstart=0

Последний раз редактировалось phomm; 08.09.2014 в 21:36.
phomm вне форума Ответить с цитированием
Старый 08.09.2014, 21:28   #26
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
special symbols
Тю, за 15 лет в делфи в глаза не видел
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.09.2014, 22:39   #27
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

По сути, в подходах Arigato, Stilet'a и моего используется один приём - указатель на память, соответствующий адресу переменной. У остальных, мне кажется, просто код ради соблюдения условий нагромождён и не очень элегантен. Может есть ещё какие-то способы , но без манипуляции с указателями ?
Вот ещё один способ, он немного легальнее моего предыдущего (колдунство со знаками оставил, а кейс выкинул)
Код:
function calc2(Xp: array of PInteger): TValueSign;
const
  coef: array[-1..1] of Integer = (-1, 1, 2);
var
  Y: Integer;
begin
  Result := Sign(Sign(Xp[2]^ - Xp[1]^) + Sign(Xp[1]^ - Xp[0]^));
  for Y := 0 to cnt - 1 do
    Xp[Y]^ := Xp[Y]^ * coef[Result];
end;
Суть в вызове - массив неявный, Y := calc2([@AA, @BB, @CC]); используются как бы сами переменные (ну и магия компиля ) . Правда, сей способ гораздо более склонен к косякам из-за отсутсвия фулпруфа, особенно , по части индексов массива.

У Stilet'a, кстати, нет case.

Последний раз редактировалось phomm; 08.09.2014 в 22:45.
phomm вне форума Ответить с цитированием
Старый 08.09.2014, 22:48   #28
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
извращение 90-х
В предположении, что a,b,c в памяти строго один за другим последовательно. var a,b,c:integer это гарантирует?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.09.2014, 08:16   #29
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
var a,b,c:integer это гарантирует?
Глобальный должен. Локальный - не уверен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.09.2014, 08:48   #30
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Способ с указателями от phomm в #27 самый корректный. Способы из #20 и #24 какие-то сюрреалистичные, держатся на честном слове в хакерской надежде, что всегда именно так будут переменные в памяти. Должен - смущает, вот глобальные должны обнуляться, в консольном не обнуляются, с Ромахой в его вопросах недавно вычислили
Цитата:
У остальных, мне кажется, просто код ради соблюдения условий нагромождён и не очень элегантен.
Пошутить нельзя)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.09.2014 в 08:51.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано файл d. xhatex Помощь студентам 14 21.01.2013 09:59
дано 3 числа. viknik Помощь студентам 7 25.02.2012 23:21
Дано число n. MACCOP Помощь студентам 6 01.09.2010 23:59
Дано натуральное n zheka89 Паскаль, Turbo Pascal, PascalABC.NET 0 28.04.2010 07:52
Дано х. Сформировать массив а(10). dsdt Паскаль, Turbo Pascal, PascalABC.NET 7 22.12.2008 20:51