Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.07.2008, 11:40
Ivanius Ivanius вне форума
Прохожий
 
Регистрация: 21.07.2008
Сообщения: 19
Репутация: 10
Вопрос циклы,рандом,и ещё кое что.

у меня есть несколько вопросов обьясните мне кое что а именно:
1)напишите общепринятый циклический оператор (лучше всего это (for do),(case of))как выглядит.
2)как сделать чтобы переменная была выбрана случайно программой.
3)как на языке делфи будет выглядить такое:
if i-изменилась then begin
...
end;
если не понятно :как узнать изменилась переменная или нет.
4)как мне заранее переписать все мои image в одноимённый компонент тоже программно при событии onCreate.

Последний раз редактировалось Ivanius, 31.07.2008 в 01:24.
Ответить с цитированием
  #2  
Старый 30.07.2008, 15:30
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Я не супер автор, но ты... Можешь по русски нормально объяснить? Что первое, что второе?
Ответить с цитированием
  #3  
Старый 30.07.2008, 17:44
JIexa21 JIexa21 вне форума
Прохожий
 
Регистрация: 23.07.2008
Адрес: Россия, Новочебоксарск
Сообщения: 15
Репутация: 10
По умолчанию

Ну если перевести то в принципе понятно че хочет...
Вообще от условных переходов никуда не деться. Если в циклах, то для уменьшения количества юзать операторы break и continue, если просто так и для каких-то одинаковых переменных юзать case...
Рандомно выбирать что-то тоже не проблема: оператор random генерирует число от 0 до 1. Потом умножаешь на максимальное число в твоем диапазоне и заодно можно округлить оператором round:
i := round(random * 50) // i будет целое в диапазоне от 0 до 50...
Ответить с цитированием
  #4  
Старый 30.07.2008, 19:01
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Ivanius, учим русский язык. Увижу еще одно такое сообщение - бан на неделю.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 30.07.2008, 23:06
Ivanius Ivanius вне форума
Прохожий
 
Регистрация: 21.07.2008
Сообщения: 19
Репутация: 10
По умолчанию

вот подучил, я так ясного ответа и не получил на свои пункты ( а мне надо щас только на этом проблемы все.
Ответить с цитированием
  #6  
Старый 30.07.2008, 23:33
JIexa21 JIexa21 вне форума
Прохожий
 
Регистрация: 23.07.2008
Адрес: Россия, Новочебоксарск
Сообщения: 15
Репутация: 10
По умолчанию

Если хочешь чтобы тебе код поправили, то его надо как минимум тут показать... Странный ты.
Ответить с цитированием
  #7  
Старый 31.07.2008, 12:47
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

1, case of - это не оператор цикла
есть три вида циклов:
а) цикл с счетчиком:
Код:
for <переменная>:=<нач. значение> to/downto <кон. значение> do
<код>;
б) цикл с предусловием
Код:
while <условие> do
<код>;
в) цикл с постусловием
Код:
repeat
<код>;
until <условие>;
2, см. выше
3, добавить еще одну переменную
4, тебе надо в несколько Image загрузить одну картинку?
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #8  
Старый 31.07.2008, 15:51
JIexa21 JIexa21 вне форума
Прохожий
 
Регистрация: 23.07.2008
Адрес: Россия, Новочебоксарск
Сообщения: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от The Shadow
1, case of - это не оператор цикла

Это понятно. Просто если я его правильно понял у него в коде куча операторов перехода в которых он уже путается. Вот и предложил по возможности перейти от if then к case of.
Ответить с цитированием
  #9  
Старый 31.07.2008, 15:57
Ivanius Ivanius вне форума
Прохожий
 
Регистрация: 21.07.2008
Сообщения: 19
Репутация: 10
Восклицание

Цитата:
Сообщение от The Shadow
1, case of - это не оператор цикла
3, добавить еще одну переменную
4, тебе надо в несколько Image загрузить одну картинку?
за циклы большое СПАСИБО!! очень помогает переписую и все как то понятней становиться, что означит добавить ещё 1 переменную зачем она нужна мне надо узань изменилось ли в ней значение или нет.
4)нет мне надо несколько картинок заранее загрузить куда-то мне говорили есть какой-то Imagelist куда вначале загружают а потом от туда достают когда надо отображать её.
Ответить с цитированием
  #10  
Старый 31.07.2008, 16:06
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

3
Код:
var
  MyVar, OldVal: <тип>;
...
if MyVar <> OldValue then
begin
OldValue:=MyVar;
//Переменная изменилась
end
else
//Переменная не изменилась
ImageList - компонент на вкладке Win32
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #11  
Старый 31.07.2008, 16:11
Ivanius Ivanius вне форума
Прохожий
 
Регистрация: 21.07.2008
Сообщения: 19
Репутация: 10
Смущение

ещё разх спасибо теперь уже последний вопрос с имеджлистом как в него запихнуть эти изображения так чтобы они были глобальными мне просто надо их использовать во всех формах
так к примеру можно будет:
"img1.picture := form1.imagelist.picture "
да и как сделать чтобы можно было добавлять не только БМП и иконки а и ДЖЕПЭГ (и,или) ГИФ

Последний раз редактировалось Ivanius, 31.07.2008 в 16:20.
Ответить с цитированием
  #12  
Старый 31.07.2008, 16:22
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Чтоб загрузить картинку в ImageList надо щелкнуть по компоненту два раза.
Чтобы загрузить картинку из него
Код:
ImageList1.GetIcon(<индекс иконки>, Image1.Picture.Icon);
Про jpg в ImageList, вроде бы нельзя, только если не загружать JPG в программе и потом конвертировать в BMP и добавить в ImageList
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #13  
Старый 31.07.2008, 19:06
Ivanius Ivanius вне форума
Прохожий
 
Регистрация: 21.07.2008
Сообщения: 19
Репутация: 10
По умолчанию день добрый но...

НЕужели от спасибо вам всё я разобрался все работает только компилируеться минут 10 из-за моих if then я так с циклами и не разобрался пытлася чо-то получалось а щас нет чото обьясните как мне писать на примерах луше сделайте для меня вот что у меня вот что есть кусок программы как мне его лучше реализовать
Код:
if ydar>=50 then begin
    if kritical<=krit then begin
        healBPAr:=healBPAr-realatkt*2;
        MessageBox(handle,pchar('Вы попали во врага на - '+inttostr(realatkt*2)),pchar('Информация'),8240);
        statistic.Lines.Add('попал HA: '+inttostr(realatkt*2));
        label1.Caption := 'попал HA: '+inttostr(realatkt*2);
         man:=man-4;
         if healbpar<1 then
           exit.Enabled:=true;
           atac.enabled:= false;
           pobed:=pobed+1;
         end
else begin
 if realatkt>0 then begin
    healBPAr:=healBPAr-realatkt;
    MessageBox(handle,pchar('Вы попали во врага на - '+inttostr(realatkt)),pchar('Информация'),8240);
    statistic.Lines.Add('попал HA: '+inttostr(realatkt));
    label1.Caption := 'попал HA: '+inttostr(realatkt);
    man:=man-4;
 end
    else begin
     statistic.Lines.Add('Вы попали во врага на - 0dmg');
     label1.Caption := 'Вы попали во врага на - 0dmg';
     MessageBox(handle,pchar('Вы попали во врага на - '+inttostr(realatkt)),pchar('Информация'),8240);
    end;
end;
 end;
ydar перменная рандомная все остальные переменные числового типа

Последний раз редактировалось Ivanius, 01.08.2008 в 02:11.
Ответить с цитированием
  #14  
Старый 31.07.2008, 20:59
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Поиск в папке (без просмотра поддиректорий):

Код:
procedure TForm1.FindFiles(Dir: string);
var
 DirInfo: TSearchRec;
 r : Integer;
begin
r := FindFirst(Dir+'*.bmp', FaAnyfile, DirInfo);
while r = 0 do begin
if ((DirInfo.Attr and FaDirectory <> FaDirectory) and (DirInfo.Attr and FaVolumeId<>FaVolumeID)) then
 { тут твой код для обработки найденных;
    полный путь к файлу: Dir + DirInfo.Name }
 r := FindNext(DirInfo);
end;
SysUtils.FindClose(DirInfo);
end;

// например FindFiles('C:\Windows\')

Последний раз редактировалось ART, 31.07.2008 в 21:03.
Ответить с цитированием
  #15  
Старый 05.08.2008, 20:12
Ivanius Ivanius вне форума
Прохожий
 
Регистрация: 21.07.2008
Сообщения: 19
Репутация: 10
По умолчанию

так вы мне и не ответили как можно мой код оптимизировать или некак?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:05.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025