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

Как сократить данный отрывок кода?

02.10.2018, 23:50. Показов 2992. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if x=1 then
begin
Image1.Hide;
Image3.Hide;
Image4.Hide;
Image5.Hide;
Image6.Hide;
Image7.Hide;
Image8.Hide;
Image2.Show;
end;
 
if x=2 then
begin
Image1.Hide;
Image2.Hide;
Image3.Hide;
Image5.Hide;
Image6.Hide;
Image7.Hide;
Image8.Hide;
Image4.Show;
end;
и существует-ли лимит накладывания картинок друг на друга в форме?..
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2018, 23:50
Ответы с готовыми решениями:

Как можно сократить кол-во исходного кода
Вот мне дали задание по курсовой работе написать психологический тест. Кратко его можно изложить следующем способом: человеку зачитываются...

Как сократить кол-во почти одинаковых строчек кода?
Можно ли это как-нибудь упростить? Выглядит достаточно громоздко. Спасибо. btnQ.Enabled:=True; btnW.Enabled:=True; ...

Расшифровать данный отрывок, частотной проверке не поддается
помогите пожалуйста расшифровать срочно нужно, шифр Виженера Длина ключа = 4 говорят это из какой то книги Билл Гейтса, толку нет от...

56
04.10.2018, 05:10
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от northener Посмотреть сообщение
вообще никому не известно
вот-вот... Я же предложил ТЗ озвучить - предложение было проигнорировано...

0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
04.10.2018, 10:15  [ТС]
на самом деле нужно банально простое: просто две кнопки, нажимаешь первую - генерируеться случайное число- показывает по нему одну картинку, нажимаешь вторую - другую. картинки в папке 3000 штук.
как присвоить число к имени файла картинки и вызвать на форму? при этом при следующем нажатии первой кнопки - предыдущая должна уже убраться..
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
04.10.2018, 10:25
Цитата Сообщение от rolandas Посмотреть сообщение
как присвоить число к имени файла картинки и вызвать на форму?
Вручную переименуйте картинку...
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
04.10.2018, 10:30
Цитата Сообщение от rolandas Посмотреть сообщение
как присвоить число к имени файла картинки и вызвать на форму?
назвать картинки соответствующе??? картинка1, картинка2, картинкаxxx??? генерируешь число, название файла будет слово "картинка" + сгенерированное число

Image1.Picture.LoadFromFile( тут сгенерированное название );

или загрузить кратинки в ImageList и оттуда забирать по индексу...

или создать файл ресурсов с картинками, вызывать картинки из ресурсов по заданному id ...

Не по теме:

или.. или... на крайняк забросить все)



Добавлено через 1 минуту
Цитата Сообщение от Matan! Посмотреть сообщение
Вручную переименуйте картинку...
дану... я б циклом переименовал))) 3000 картинок мне в лом было бы переназывать))))))))))) да, проблема была с с систематикой, какой файл как должен по новому зваться, если это важно... но и ее придумать можно)
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
04.10.2018, 10:36  [ТС]
картинки парами, первая - вопрос теста, сразу-же после неё - ответ теста. и так чередуется. получаеться 1500 вопросов теста. переименование файла не проблемма, но вроде есть лимит до 256 картинок в ImageList ImageBox..
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
04.10.2018, 10:47
Цитата Сообщение от rolandas Посмотреть сообщение
картинки парами, первая - вопрос теста, сразу-же после неё - ответ теста. и так чередуется
ну и в чем проблема?

пусть файлы с вопросами имеют еще где-то суффикс Q - Question, а файлы с ответами имеют A - Answer, ну и номер картинки надо еще

image11Q
image11A

индекс один, префикры разные для для ветвления вопрос-ответ

генерим число, пусть 11, на первой кнопке грузим

'image' + IntToStr(11) + 'Q'

на другой кнопке соответственно
'image' + IntToStr(11) + 'A'

вот и получили пару

иногда целесообразней придумать хотябы разумный алгоритм, а потом им уже пробовать решать задачу. ну 3000 кратинок на форме и скрывать одну и покузывать другую.. ну ты же понимаешь, это не дело совсем)))))
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
04.10.2018, 11:04
Цитата Сообщение от Arcor Посмотреть сообщение
дану... я б циклом переименовал)))
А если ему нужны картинки в другом порядке? Тогда придётся либо вручную в делфи их грузить, либо, как я предложил, вручную переименовать(что,кстати,быстрее).
А так ты идею понял Приятно, что есть единомышленники

Добавлено через 1 минуту
Цитата Сообщение от Arcor Посмотреть сообщение
пусть файлы с вопросами имеют еще где-то суффикс Q - Question, а файлы с ответами имеют A - Answer, ну и номер картинки надо еще
image11Q
image11A
Ещё оптимальнее:
Q11
A11

Добавлено через 1 минуту
Цитата Сообщение от Arcor Посмотреть сообщение
иногда целесообразней придумать хотябы разумный алгоритм, а потом им уже пробовать решать задачу. ну 3000 кратинок на форме и скрывать одну и покузывать другую.. ну ты же понимаешь, это не дело совсем)))))
+++
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
04.10.2018, 11:06
Цитата Сообщение от Matan! Посмотреть сообщение
А если ему нужны картинки в другом порядке? Тогда придётся либо вручную в делфи их грузить
Цитата Сообщение от Arcor Посмотреть сообщение
да, проблема была с с систематикой, какой файл как должен по новому зваться, если это важно... но и ее придумать можно)


я думаю что ТС не сам создавал 3000 картинок с вопросами/ответами.. и они уже систематизировано отсортированны, ну.. я так думаю почему-то)) просто такая систематика сама бы по себе напросилась бы рано или поздно, при создании сех чуд
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
04.10.2018, 11:09
Цитата Сообщение от rolandas Посмотреть сообщение
ImageList ImageBox
Нахрена он тебе? Просто каждый раз подгружай их из папки. Да, это не всегда удобно. Но всяко лучше, чем на старте грузить этот скоп в программу,заставляя пользователя ждать и перегружая оперативку.

Добавлено через 1 минуту
Цитата Сообщение от Arcor Посмотреть сообщение
я думаю что ТС не сам создавал 3000 картинок с вопросами/ответами.. и они уже систематизировано отсортированны
Ну, тады...
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
04.10.2018, 11:10
Цитата Сообщение от rolandas Посмотреть сообщение
картинки парами, первая - вопрос теста, сразу-же после неё - ответ теста. и так чередуется
покажи структуру папки в которой картинки лежат(соскрини ее)
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
04.10.2018, 11:16
Arcor, ну, всяко такой способ лучше:
Цитата Сообщение от Matan! Посмотреть сообщение
Q11
A11
А тогда считывать:
Delphi
1
StrToInt(Copy(Image1.Name, 1, Length(Image1.Name) - 1)) // индекс
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
04.10.2018, 11:21
зачем? если известен номер и известен Q или A, склеивай в строку и грузи, зачем парсить? )) тут нам обратная процедура нужна же, не извлечь данные ИЗ, а состряпать нужные данные В

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от Matan! Посмотреть сообщение
Arcor, ну, всяко такой способ лучше:
я не претендую на лучшесть, мне она ни к чему, если кто-от зачем-то гонится и собирается чем-то зачем-то меряться:)))

Цитата Сообщение от Matan! Посмотреть сообщение
StrToInt(Copy(Image1.Name, 1, Length(Image1.Name) - 1)) // индекс
ну и опять же.. что ты скопировал тогда?)
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
04.10.2018, 11:38  [ТС]
и как теперь вывести по рандомному числу?

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
unit Unit1;
 
interface
 
uses
  Windows, JPEG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 
var
x,y,ii : Integer;
a,b,c : String;
hours, mins, secs, milliSecs : Word;
flag : boolean;
 
begin
 
DecodeTime(now, hours, mins, secs, milliSecs);
RandSeed := milliSecs;
begin
x := 1 + Random(4);
end;
 
a := IntToStr(x);
 
Image1.Picture.LoadFromFile('a\1.jpg');
 
end;
 
end.
Миниатюры
Как сократить данный отрывок кода?   Как сократить данный отрывок кода?  
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
04.10.2018, 11:43
Лучший ответ Сообщение было отмечено rolandas как решение

Решение

что и требовалось доказать, данные уже систематизированы парами...
теперь либо придумать как генерировать значение, чтобы картинку подгружать, либо картинки "однотипные" переименовать в то, что выше описано, чтобы проще было грузить
1
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
04.10.2018, 11:48  [ТС]
спасибо, разобралься путём тыка

Delphi
1
2
3
4
5
6
7
8
9
begin
x := 1 + Random(4);
end;
 
b := 'a\';
a := IntToStr(x) + '.jpg';
c := b+a;
 
Image1.Picture.LoadFromFile(c);
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
04.10.2018, 12:02
ничего не надо переименовывать... все проще как бы можно сделать

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
type
 
TQuestAnswer = record
  Q: String;
  A: String;
end;
 
....
 
QAList: TList <TQuestAnswer>;
 
QA: TQuestAnswer;

...

Delphi
1
2
3
4
5
6
7
8
9
10
//проходимся по папке циклом, при старте программы, ищем все файлы FindFirst.... FindNext...
 
//выковыриваем имена, все что просто имя заносим в 
QA.Quest := ...
 
//все что с --, но так же называется
QA.Answer := ...
 
//в цикле вставляем в список
QAList.Add(QA);
Delphi
1
2
//тут генерируем где-то число
Id := Random(QAList.Count);
далее кнопки
Delphi
1
2
3
4
5
//кнопка1 и код внутри нее
Image1.Picture.LoadFromFile (QAList[Id].Quest);
 
//кнопка2 и код внутри нее
Image2.Picture.LoadFromFile (QAList[Id].Answer);
Добавлено через 5 минут
далее, улучшаем прогу, чтобы вопросы не повторялись и чтобы гарантирвоанно пройти все вопросы))) а то права не выдадут))

перемешиваем список случайным образом, если спсиок уже перемешан, то можно начать брать числа от 1 до N по порядку

но что-то мне подсказывает еще одно, что имена файлов содержат в себе еще и темы/категории по какому-то принципу, можно выковырять данные так, чтобы еще и по темам было у нас)
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
04.10.2018, 12:05  [ТС]
я уже переименовал картинки. ( 1.jpg 2.jpg 3.jpg .. 1500.jpg )теперь просто рандомное число определить - чётное-нечётное. нечётные-ответы, чётные-вопросы. и ответ всегда будет рандомное число минус один. как то так
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
04.10.2018, 12:19
Цитата Сообщение от Arcor Посмотреть сообщение
что ты скопировал тогда?)
Номер картинки. Просто пример.
rolandas, а если рандомом нечётное выпадет?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
04.10.2018, 12:28
Цитата Сообщение от Matan! Посмотреть сообщение
Номер картинки. Просто пример.
ну я понял что ты хотел скопировать и спрашиваю, что ты тем кодом скопировал то)))))

Цитата Сообщение от Matan! Посмотреть сообщение
rolandas, а если рандомом нечётное выпадет?
ну я полагаю он сделает ветвление, если выпало четное то вопрос, если нечетное то ответ. и надо отнять единицу, чтобы стало снова вопросом
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
04.10.2018, 16:01
Цитата Сообщение от Arcor Посмотреть сообщение
ну я понял что ты хотел скопировать и спрашиваю, что ты тем кодом скопировал то)))))
Номер картинки. Что не ясно? Мож, не так я понял тебя..

Не по теме:

Цитата Сообщение от Arcor Посмотреть сообщение
ну я полагаю он сделает ветвление, если выпало четное то вопрос, если нечетное то ответ. и надо отнять единицу, чтобы стало снова вопросом
Полагаешь?) Ну и ну.. Жди вопроса на эту тему))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.10.2018, 16:01

Как сократить данный код?
Во время урока алгебры Незнайка написал следующую таблицу на доске: a b a2b ab2 12 2 288 48 -1 -1 -1 -1 9 -3 -243 81 ...

Как можно сократить данный код?
1.Как можно упростить(сократить) этот код? 2.Почему я не могу объявить его в public partial class MainWindow : Window, а только в...

Как можно сократить данный код?
Как можно сократить данный код? ( Программа выводит 10 рандомных чисел: 3 в промежутке от 10-30, 3 от 30-60, и последние 4 от 60-100 ...

Как сократить данный код CSS?
Привет! Как можно сократить такой код до удобоваримого чтения браузером? Это код - фигура (png прилагаю). Осторожно! Код более 10000...

Как можно сократить и упростить данный код
Всем привет! Появилась отличная идея сделать консольную игру типа 2D головоломки. Создал дизайн первого уровня и тут же наткнулся на...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru