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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2016, 23:36   #1
m0nr
Пользователь
 
Регистрация: 08.01.2016
Сообщений: 27
По умолчанию Проблема с условием

Кусок кода
Код:
var
  fullFileName, format : string;
begin
if format <> '.exe' then begin
     if format <> '.ico' then begin
       Application.MessageBox('Ошибка файла', 'EROR', MB_OK + MB_ICONSTOP);
     end
     else
     begin
       if format <> '.exe' then
         sEdit2.Text:=fullFileName;
       else
        sEdit1.Text:=fullFileName;
Дело в том, что при таком раскладе выводится только если .ICO
А если поменять
Код:
if format <> '.exe' then begin
и
Код:
if format <> '.ico' then begin
Местами, то будет наоборот выводить только с .exe

Какую-же я допустил ошибку в условии? Тыкните пальцем))
m0nr вне форума Ответить с цитированием
Старый 22.01.2016, 23:43   #2
m0nr
Пользователь
 
Регистрация: 08.01.2016
Сообщений: 27
По умолчанию

Код:
 if (format <> '.exe') and (format <> '.ico') then
       Application.MessageBox('Ошибка', '213123', MB_OK + MB_ICONSTOP)
else
begin
   if format = '.exe' then
   sEdit1.Text:=fullFileName
else
   sEdit2.Text:=fullFileName;
end;
Вот так решил проблему, сори за тупость )
m0nr вне форума Ответить с цитированием
Старый 23.01.2016, 01:08   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от m0nr Посмотреть сообщение
Код:
 if (format <> '.exe') and (format <> '.ico') then
       Application.MessageBox('Ошибка', '213123', MB_OK + MB_ICONSTOP)
else
begin
   if format = '.exe' then
   sEdit1.Text:=fullFileName
else
   sEdit2.Text:=fullFileName;
end;
Вот так решил проблему, сори за тупость )
Второе ИЛИ (else) не нужно раз действие в обоих случаях одинаковое. Значит можно написать так:
Код:
if (format <> '.exe') and (format <> '.ico') then
       Application.MessageBox('Ошибка', '213123', MB_OK + MB_ICONSTOP)
else sEdit1.Text:=fullFileName
northener вне форума Ответить с цитированием
Старый 23.01.2016, 01:48   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
раз действие в обоих случаях одинаковое
так разное оно ))
а вот так красивше
if format = '.exe' then
sEdit1.Text:=fullFileName
else if format = '.ico' then
sEdit2.Text:=fullFileName
else
Application.MessageBox('Ошибка', '213123', MB_OK + MB_ICONSTOP)
come-on вне форума Ответить с цитированием
Старый 23.01.2016, 03:13   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

имха, ветвление по значениям строк - это говнокод. Уверен, что задачу можно переформулировать с оптимизацией и отказаться от таких вещей.
максимум, что я себе позволяю - это проверка на наличие/отсутствие данных в строке (x = '' или x <> '').

Автор, для чего ты на практике применяешь этот кусок кода с условием?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 24.01.2016, 00:31   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
так разное оно ))
Вот чёрт, действительно разное
Был невнимателен. (((
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TicqClient проблема с условием DKENT Работа с сетью в Delphi 1 14.01.2012 02:39
Проблема с условием к trackbar Alex2012 C# (си шарп) 1 08.10.2011 03:10
Проблема с условием xiaoyu44 Общие вопросы Delphi 2 13.06.2011 05:16
Проблема с условием FanRa3 Общие вопросы Delphi 2 04.11.2010 14:44
Проблема с простейшим условием Kawun Помощь студентам 7 13.03.2009 18:23