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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2013, 19:07   #1
ClMlD
Форумчанин
 
Аватар для ClMlD
 
Регистрация: 09.07.2011
Сообщений: 185
По умолчанию Как правильно вставить переменную?

есть такой код

if (StridesN=0) and (NumVertices=0) and (primCount=0) then ...

там где равенство могут быть знаки < = >
там где 0 могут быть любые цифры
0 через переменную, все норм ошибок нет
а вот как добавить переменную туда где знаки? пробовал стринг , вариант, не помогло
ClMlD вне форума Ответить с цитированием
Старый 27.11.2013, 19:20   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

То есть, вид операции в качестве переменной? Что-то вроде перегрузки операторов в Си?
Нет, вы требуете от Pascal невозможного.
type_Oleg вне форума Ответить с цитированием
Старый 27.11.2013, 19:26   #3
ClMlD
Форумчанин
 
Аватар для ClMlD
 
Регистрация: 09.07.2011
Сообщений: 185
По умолчанию

ясно спасибо , придется писать 3 раза один и тот же код только с разными равенствами , только так можно верно?

if i = 0 then
begin
if (StridesN>0) and (NumVertices>0) and (primCount>0) then ...
end;

if i = 1 then
begin
if (StridesN=0) and (NumVertices=0) and (primCount=0) then ...
end;

if i = 2 then
begin
if (StridesN<0) and (NumVertices<0) and (primCount<0) then ...
end;

тип того


Ой хотя нет 9 раз придется писать одно и тоже или даже больше, а как бы придумать по лучше не подскажите ?

<<<
=<<
><<
<=<
==<
>=<
<><
=><
>><
<<=
=<=
><=
<==
===
>==
<>=
=>=
>>=
<<>
=<>
><>
<=>
==>
>=>
>>>

25 комбинаций , афигеть , надеюсь кто нибудь что нибудь подскажет

Последний раз редактировалось ClMlD; 27.11.2013 в 20:02.
ClMlD вне форума Ответить с цитированием
Старый 27.11.2013, 20:03   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Ой хотя нет 9 раз придется писать одно и тоже или даже больше, а как бы придумать по лучше не подскажите ?
ну я, например, вашу логику не улавливаю (приведите здесь ещё примеры).
Если не сможете формализовать зависимость проверяемых условий от i - то так и пишите, хоть 9 раз, хоть больше..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.11.2013, 20:21   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
type TKindComparison = (kcLess,kcEqu,kcMore);

function ArtfulComparison(Variable1,Variable2,Variable3,Value1,Value2,Value3: Integer;
                          Oper1,Oper2,Oper3: TKindComparison): Boolean;
begin
  case Oper1 of
  kcLess: Result:=Variable1<Value1;
  kcEqu:  Result:=Variable1=Value1;
  kcMore: Result:=Variable1>Value1;
  end;
  if not Result then Exit;
  case Oper2 of
  kcLess: Result:=Variable2<Value2;
  kcEqu:  Result:=Variable2=Value2;
  kcMore: Result:=Variable2>Value2;
  end;
  if not Result then Exit;
  case Oper3 of
  kcLess: Result:=Variable3<Value3;
  kcEqu:  Result:=Variable3=Value3;
  kcMore: Result:=Variable3>Value3;
  end;
end;


if ArtfulComparison(StridesN,NumVertices,primCount,0,1,0,kcLess,kcEqu,kcLess) then ...
А если массивом организовать, то можно и в цикле. Комбинаций кстати 27
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.11.2013 в 20:25.
Аватар вне форума Ответить с цитированием
Старый 28.11.2013, 15:17   #6
ClMlD
Форумчанин
 
Аватар для ClMlD
 
Регистрация: 09.07.2011
Сообщений: 185
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
type TKindComparison = (kcLess,kcEqu,kcMore);

function ArtfulComparison(Variable1,Variable2,Variable3,Value1,Value2,Value3: Integer;
                          Oper1,Oper2,Oper3: TKindComparison): Boolean;
begin
  case Oper1 of
  kcLess: Result:=Variable1<Value1;
  kcEqu:  Result:=Variable1=Value1;
  kcMore: Result:=Variable1>Value1;
  end;
  if not Result then Exit;
  case Oper2 of
  kcLess: Result:=Variable2<Value2;
  kcEqu:  Result:=Variable2=Value2;
  kcMore: Result:=Variable2>Value2;
  end;
  if not Result then Exit;
  case Oper3 of
  kcLess: Result:=Variable3<Value3;
  kcEqu:  Result:=Variable3=Value3;
  kcMore: Result:=Variable3>Value3;
  end;
end;


if ArtfulComparison(StridesN,NumVertices,primCount,0,1,0,kcLess,kcEqu,kcLess) then ...
А если массивом организовать, то можно и в цикле. Комбинаций кстати 27
А как придумать поудобнее что бы жмякаю NUMPAD1 знак > еще жмякаю = еще жмякаю < и все сначала ?
ClMlD вне форума Ответить с цитированием
Старый 28.11.2013, 15:30   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А как придумать поудобнее что бы жмякаю NUMPAD1 знак > еще жмякаю = еще жмякаю < и все сначала ?
А это желательно перевести на общедоступный сленг
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.11.2013, 15:36   #8
ClMlD
Форумчанин
 
Аватар для ClMlD
 
Регистрация: 09.07.2011
Сообщений: 185
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А это желательно перевести на общедоступный сленг
if (GetAsyncKeyState(VK_NUMPAD1) and 1)<> 0 then
begin
как их по кругу комбинировать по нажатию?
kcLess
kcEqu
kcMore
end;
ClMlD вне форума Ответить с цитированием
Старый 28.11.2013, 15:48   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так бы и сказал. Как вариант так можно
Код:
var i: Byte;
...
i:=0;
...
if TKindComparison(i)<High(TKindComparison) then Inc(i) else i:=0;
if ArtfulComparison(StridesN,NumVertices,primCount,0,1,0,TKindComparison(i),kcEqu,kcLess)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить переменную в... kostghost Общие вопросы Delphi 12 28.11.2012 18:47
как правильно вывести числовую переменную HellMercenariess PHP 3 13.08.2012 10:38
Как вставить стиль шрифта через переменную Тоба Общие вопросы Delphi 5 07.04.2012 03:58
Как вставить переменную в путь к файлу ? gefest58 Общие вопросы Delphi 4 19.12.2010 18:58
Как правильно вставить строки? Kostinok Microsoft Office Excel 6 28.05.2010 19:23