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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2015, 20:58   #1
Anton931
Пользователь
 
Регистрация: 20.02.2015
Сообщений: 35
По умолчанию цикл (repeat) картинок

Вызываю картинку из ресурса, они все пронумерованы как вызвать их поочереде через repeate? делаю следующим способом но не знаю что писать после until и вообще правильно ли я делаю? Я знаю что можно путем вызывать подставляя номер картинки, но он мне требуется через repeat.

Код:
var
  ResBmp: TBitmap;
  kaptinka: PChar;
          begin
            repeat
              st:=copy(kaptinka_,1,4);
              if st='kapt' then
                begin
                  _TmplStr:=st;
                  ResBmp.LoadFromResourceName(HInstance, kaptinka);
		//.....
                end;
            until ;
          end;
Прошу не ругаться я только учусь)
Anton931 вне форума Ответить с цитированием
Старый 20.02.2015, 21:16   #2
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Сколько картинок, ты знаешь? Если да, то меняй свою переменную(правильно не kaptinka, а picture. Учи заодно английский!) в цикле.
Если правильно понял то, это так:
Код:
var
k: integer;
ResBmp: TBitmap; 
picture: string;
begin
ResBmp:= TBitmap.Create(Form1);
k:=1;
picture:='pict1';
repeat 
ResBmp.LoadFromResource(HInstance,picture);
Delete(picture,Length(picture),1);
picture:=picture + inttostr(k);
until k< ..(здесь число картинок)..;

... 
FreeAndNil(ResBmp);
end;
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 20.02.2015, 21:22   #3
Anton931
Пользователь
 
Регистрация: 20.02.2015
Сообщений: 35
По умолчанию

да мне известно всего 30 картинок, все прономерованы, а возможно без использования inttostr() ?
Anton931 вне форума Ответить с цитированием
Старый 20.02.2015, 21:33   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Anton931 Посмотреть сообщение
да мне известно всего 30 картинок, все прономерованы, а возможно без использования inttostr() ?
Объедени название картинок в массив строк. Делается это так:
Код:
Var M: array [1..30] of String = ['картинка1',картинка2','картинка3',...,'картинкаN'];
А дальше вместо переменной дай в функцию элемент из массива.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 20.02.2015, 23:17   #5
Anton931
Пользователь
 
Регистрация: 20.02.2015
Сообщений: 35
По умолчанию

Код:
var
k: integer;
ResBmp: TBitmap; 
picture: string;
M: array [1..30] of String = ['pict_1', 'pict_2', 'pict_3', 'pict_4', 'pict_5', 'pict_6', 'pict_7', 'pict_8', 'pict_9', 'pict_10', 'pict_11', 'pict_12', 'pict_13', 'pict_14', 'pict_15', 'pict_16', 'pict_17', 'pict_18', 'pict_19', 'pict_20', 'pict_21', 'pict_22', 'pict_23', 'pict_24', 'pict_25', 'pict_26', 'pict_27', 'pict_28', 'pict_29', 'pict_30'];
begin
ResBmp:= TBitmap.Create(Form1);
repeat 
ResBmp.LoadFromResource(HInstance,M);
....
until k<30;
... 
FreeAndNil(ResBmp);
end;
выдает ошибку в массиве [dcc32 Error] Project1.dpr(108): E2001 Ordinal type required что не так?
Anton931 вне форума Ответить с цитированием
Старый 20.02.2015, 23:30   #6
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Что это такое
Код:
LoadFromResource(HInstance,M);
За один раз вызываешь весь массив сразу???
Так не пойдёт...
Вызывать надо по номеру элемента массива - М[К]...
Надо определить начальное значение К...
Надо его наращивать...
В общем, надо думать... Хотя бы чуть-чуть...

Последний раз редактировалось kropotkina-alice; 20.02.2015 в 23:35.
kropotkina-alice вне форума Ответить с цитированием
Старый 21.02.2015, 00:45   #7
Anton931
Пользователь
 
Регистрация: 20.02.2015
Сообщений: 35
По умолчанию

ок, сделал так:
Код:
var
k: integer;
ResBmp: TBitmap; 
picture: string;
M: array [1..30] of String = ['pict_1', 'pict_2', 'pict_3', 'pict_4', 'pict_5', 'pict_6', 'pict_7', 'pict_8', 'pict_9', 'pict_10', 'pict_11', 'pict_12', 'pict_13', 'pict_14', 'pict_15', 'pict_16', 'pict_17', 'pict_18', 'pict_19', 'pict_20', 'pict_21', 'pict_22', 'pict_23', 'pict_24', 'pict_25', 'pict_26', 'pict_27', 'pict_28', 'pict_29', 'pict_30'];
begin
ResBmp:= TBitmap.Create(Form1);
repeat 
ResBmp.LoadFromResource(HInstance,M[k]);
....
ink(k);
until k<30;
... 
FreeAndNil(ResBmp);
end;
но все равно выдает ошибку в масиве [dcc32 Error] Project1.dpr(298): E2195 Cannot initialize local variables уже даже массив перенес в глобальные переменные, что за косяк не понимаю
Anton931 вне форума Ответить с цитированием
Старый 21.02.2015, 01:03   #8
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
Надо определить начальное значение К...
И где? Не вижу...
Дальше...
Код:
M: array [1..30] of String = ['pict_1', 'pict_2', 'pict_3', 'pict_4', 'pict_5', 'pict_6', 'pict_7', 'pict_8', 'pict_9', 'pict_10', 'pict_11', 'pict_12', 'pict_13', 'pict_14', 
'pict_15', 'pict_16', 'pict_17', 'pict_18', 'pict_19', 'pict_20', 'pict_21', 'pict_22', 'pict_23', 'pict_24', 'pict_25', 'pict_26', 'pict_27', 'pict_28', 'pict_29', 'pict_30'];
Так не пойдёт. Отдельно объявляем, а потом присваиваем...
Код:
...
M: array [1..30] of String;
begin
for k:=1 to 30 do
M[k]:='pict_'+IntToStr(k);
k:=0;
...
З.Ы.
И ещё. Поимейте уважение к нам и перестаньте вставлять тут строки, которые приходится просматривать, используя прокрутку по горизонтали...
Это я о чём? А обратите внимание на зелёный шрифт... Так трудно разбить и перенести строку?

Последний раз редактировалось kropotkina-alice; 21.02.2015 в 01:14.
kropotkina-alice вне форума Ответить с цитированием
Старый 21.02.2015, 01:07   #9
Anton931
Пользователь
 
Регистрация: 20.02.2015
Сообщений: 35
По умолчанию

ты не понял, он скомпилировать не может на VAR запинается, ты про К говоришь!
Anton931 вне форума Ответить с цитированием
Старый 21.02.2015, 01:17   #10
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Цитата:
String = ('pict_1',
скобки круглые вроде должны быть и так только глобально
ДралсяСошибками вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл repeat / until Saren Помощь студентам 8 02.11.2014 13:02
Цикл Repeat Anwen Помощь студентам 1 21.11.2010 16:08
Цикл repeat until ac1d_buRn Помощь студентам 4 06.10.2009 21:55
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34