Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 1
Регистрация: 11.11.2016
Сообщений: 58

Условия не работают как хотелось бы

01.10.2019, 09:02. Показов 2281. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Пожалуйста помогите нормализовать выполнение условий, проблема в том, что если при создании формы:
edit1.Text=Чтение значения из файла
и
Button2.Caption:='ENG'
то при выполнении процедуры, срабатывают два первых условия, хотя казалось бы Если у них разные по логике.
Подскажите, где моя ошибка.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TForm1.Button2Click(Sender: TObject);
begin
IniF := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'config.ini');
  with IniF do begin
    if ((edit1.Text=ReadString('Раздел', 'Название параметра', edit1.Text)) or (Button2.Caption='ENG')) then begin
     WriteString('Языковые настройки', 'Язык приложения', 'ENG');
     Button1.Caption:='Save...';
     Button2.Caption:='РУС';
     showmessage('1'); end;
       if ((edit1.Text=ReadString('Раздел', 'Название параметра', edit1.Text)) or (Button2.Caption='РУС')) then begin
        WriteString('Языковые настройки', 'Язык приложения', 'RUS');
        Button1.Caption:='Сохранить...';
        Button2.Caption:='ENG';
             showmessage('2'); end;
          if Edit1.Text='Укажите' then begin
           WriteString('Языковые настройки', 'Язык приложения', 'ENG');
           Button1.Caption:='Save...';
           Button2.Caption:='РУС';
           Edit1.Text:='Specify';
                showmessage('3');  end;
             if Edit1.Text='Specify' then begin
              WriteString('Языковые настройки', 'Язык приложения', 'RUS');
              Button1.Caption:='Сохранить...';
              Button2.Caption:='ENG';
              Edit1.Text:='Укажите';
                   showmessage('4'); end;
  {      end;
      end;
    end;
  end;}
end;
IniF.Free;
 
end;

Благодарю.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2019, 09:02
Ответы с готовыми решениями:

Как работают условия в среде Dev-C++?
Я умоляю, подскажите, как работают условия - if - в среде DEV-C++. Не дублируйте вопросы в разных темах.

Не работают условия
Здравствуйте!Почему то не работают условия И в javascript Если задаю их то ничего не выдает вообще.Хотя переменные принимают значение то...

Не работают условия
Пишу игру на дельфи. Сейчас делаю инвентарь, и вот делают условия - (на клике) если вещь1 = шлем тада напялить ее на "слот...

29
 Аватар для Flip
335 / 173 / 67
Регистрация: 25.02.2018
Сообщений: 616
01.10.2019, 13:30
Студворк — интернет-сервис помощи студентам
Я конечно дико извиняюсь, НО... в какой программе Вы видели чтобы пользователь сам руками писал какие-либо значения параметров (не беру в расчёт числовые конечно)? Ситуация, у вас на форме с настройками Edit, которое должно вноситься, например значение ширины или высоты (оно явно в цифрах) и тут возникает самое интересное:
а) Пользователь начинает писать в него (Edit) стих Есенина;
б) Штампует туда параметр с огрочертенными цифрами, после получения которых Вам прилетит сообщение довольно печального содержания.
в) Пользователь вводит туда !@#$$%^&*(* и т.д.

Отсюда простой вывод, не лучше ли использовать комнонеты с фиксированными значениями, внесёнными Вами как разработчиком (ибо логика понятна до конца только Вам и никому кроме Вас) которые нельзя изменять руками, например использовать значения внесённые в ComboBox, ValueListEditor, для числовых SpinEdit, для отображения строковых просто Label, как уже писали Вам выше?
0
2 / 2 / 1
Регистрация: 11.11.2016
Сообщений: 58
01.10.2019, 13:40  [ТС]
Цитата Сообщение от Flip Посмотреть сообщение
Я конечно дико извиняюсь, НО... в какой программе Вы видели чтобы пользователь сам руками писал какие-либо значения параметров (не беру в расчёт числовые конечно)? Ситуация, у вас на форме с настройками Edit, которое должно вноситься, например значение ширины или высоты (оно явно в цифрах) и тут возникает самое интересное:
а) Пользователь начинает писать в него (Edit) стих Есенина;
б) Штампует туда параметр с огрочертенными цифрами, после получения которых Вам прилетит сообщение довольно печального содержания.
в) Пользователь вводит туда !@#$$%^&*(* и т.д.
Отсюда простой вывод, не лучше ли использовать комнонеты с фиксированными значениями, внесёнными Вами как разработчиком (ибо логика понятна до конца только Вам и никому кроме Вас) которые нельзя изменять руками, например использовать значения внесённые в ComboBox, ValueListEditor, для числовых SpinEdit, для отображения строковых просто Label, как уже писали Вам выше?
Для чего данное сообщение? Ни для чего. Просто мысли вслух, которые нужно было проигнорировать
Он захочет написать glob.cbn.com:8080 и?
0
01.10.2019, 13:46

Не по теме:

Цитата Сообщение от Айстин Посмотреть сообщение
Для чего данное сообщение? Ни для чего. Просто мысли вслух, которые нужно было проигнорировать
нет. это сообщение информирует о том, что ты пытаешься заставить пользователя делать фигню, которая ни ему, ни тебе не нужна. ну прдставь, что ты садишься в машину и, вместо того, чтобы повернуть ключ зажигания (или нажать кнопку "Старт") - выскакивает окошко ввода, где с помощью клавиатуры нужно написать "Запустить двигатель" и нажать "Enter".
Удобно?

0
2 / 2 / 1
Регистрация: 11.11.2016
Сообщений: 58
01.10.2019, 13:51  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Лично я так и не понял логики смены языка. Стоит РУС, я нажимаю кнопку и если в Edit записано что-то отличное от значения в настройках, то язык не меняется, так что ли?
Если в Edit записано что то отличное от 'Укажите', или 'Specify', то при нажатии на кнопку смены языка, текст компонент должен смениться согласно установленному языку, соответственно изменения не должны коснуться поля Edit.

Добавлено через 3 минуты
Однако, если в файле настроек нет, то в поле Edit должно появиться 'Укажите', если был выбран русский язык, или 'Specify', если английский.
0
561 / 230 / 88
Регистрация: 11.07.2015
Сообщений: 817
01.10.2019, 14:12
Я извеняюсь, а где Вы записываете в ini вот это
Delphi
1
edit1.Text=ReadString('Раздел', 'Название параметра', edit1.Text)
Читать читаете, а где запись.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
01.10.2019, 14:13
Лучший ответ Сообщение было отмечено Айстин как решение

Решение

Айстин, надо было сначала так написать, а то, то "условие неправильно работает", то "and не работает"...
Вот так нормально же работает?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.Button2Click(Sender: TObject);
var
  IniF: TIniFile;
begin
  IniF := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'config.ini');
  with IniF do begin
    Edit1.Text = ReadString('Раздел', 'Название параметра', edit1.Text;
 
    if Button2.Caption = 'ENG' then begin
      WriteString('Языковые настройки', 'Язык приложения', 'ENG');
      Button1.Caption := 'Save...';
      Button2.Caption := 'РУС';
      if Edit1.Text = 'Укажите' then
        Edit1.Text:='Specify';
    end else begin
      WriteString('Языковые настройки', 'Язык приложения', 'RUS');
      Button1.Caption := 'Сохранить...';
      Button2.Caption := 'ENG';
      if Edit1.Text = 'Specify' then
        Edit1.Text := 'Укажите';
    end;
  end;
  IniF.Free;
end;
1
2 / 2 / 1
Регистрация: 11.11.2016
Сообщений: 58
01.10.2019, 14:16  [ТС]
Цитата Сообщение от UR1004SWL Посмотреть сообщение
Читать читаете, а где запись.
Ну так есть другая кнопка,
в которой есть
Delphi
1
WriteString('Раздел', 'Название параметра', edit1.Text);
и т.д.
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
01.10.2019, 14:35
Айстин, я првильно понимаю, что для работы программы совершенно всё равно что именно впишет пользователь? Т.е. впишет стих Есенина или огроменное количество цифр, программа это значение молча сохранит в файле (если пользователь не забудет нажать отдельную кнопку) что бы там ни было введено и продолжит работать. Разве что при старте вновь это значение появтся в Edite-е. Больше никакого влияния на программу значение не несёт?
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
01.10.2019, 14:39
В моём последнем сообщении строку 7 в коде наверное надо убрать, это должно происходить при запуске программы, а не при изменении языка.
0
2 / 2 / 1
Регистрация: 11.11.2016
Сообщений: 58
01.10.2019, 21:37  [ТС]
AzAtom,
Цитата Сообщение от AzAtom Посмотреть сообщение
Айстин, надо было сначала так написать, а то, то "условие неправильно работает", то "and не работает"...
Я слегка сам запутался просто

Цитата Сообщение от AzAtom Посмотреть сообщение
В моём последнем сообщении строку 7 в коде наверное надо убрать, это должно происходить при запуске программы, а не при изменении языка.
Да, данная строка не нужна

Цитата Сообщение от AzAtom Посмотреть сообщение
Вот так нормально же работает?
Да, работает нормально. Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2019, 21:37

Условия не работают
почему условия if (((x-x1)||(x1-x))<10) или if (((x-x1)<10)||((x1-x)<10)) неработают ? Как быть?

Почему не работают условия?
Господа, вопрос простой, но я не вижу на него ответа У меня часто не работает условия. задаю, например if () { } else { } ...

Не работают условия Combobox1
Ничего сложного, но уже пол часа не пойму что к чему... procedure TForm1.Button1Click(Sender: TObject); begin if...

Python 3. Не работают условия
Здравствуйте! Начал изучать python и столкнулся с проблемой - не работает конструкция if/elif/else написал вот такой код (код в аттаче)...

некорректно работают условия
#include "stdafx.h" #include "stdio.h" #include "locale" #include "stdlib.h" int main() { int q; float a, b, r; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru