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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2010, 15:47   #11
naneutral
 
Регистрация: 12.01.2010
Сообщений: 5
По умолчанию

Не проще сделать множество в котором будут названия всех нужных карт, потом сделать s:=Copy(s, Pos('\mapname\', s) + 9, Pos('\gametype\', s) - Pos('\mapname\', s) - 9), проверить содержится ли значение в этом множестве, ну а потом если да то грузим картинку, если нет, то ... делаем еще чего-нить). Строчки 3-4 кода получится.
naneutral вне форума Ответить с цитированием
Старый 20.07.2010, 15:53   #12
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Как можно оптимизировать данный код, а то он слишком огромный?
А зачем? Почему Вы решили что он огромный? Огромный он если экзе будет в пять раз больше или время выполнения дольше. а если Вы все это умудрились написать, то зачем теперь исправлять? Пусть будет китайский код.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.07.2010, 08:14   #13
naneutral
 
Регистрация: 12.01.2010
Сообщений: 5
По умолчанию

Вот простой пример(не самый оптимальный):

Код:
Var
maps:array[1..5] of string[20]=(('dm_alesserfate'),('dm_alley'),('dm_auriga'),
                                  ('dm_bunker'),('dm_colony'));
.........

function getMap(s:string):boolean;
Var
    i:integer;
Begin
     for I := 1 to 5 do
         if Edit1.Text=maps[i] then
            Begin
                 result:=True;
                 Break;
            End
         else result:=False;
End;

........

s:=Copy(s, Pos('\mapname\', s) + 9, Pos('\gametype\', s) - Pos('\mapname\', s) - 9)

if getmap(s) then LoadJPEGFromRes(s, ImageMaps.Picture)
else showMessage('Error');

Последний раз редактировалось naneutral; 21.07.2010 в 08:17.
naneutral вне форума Ответить с цитированием
Старый 21.07.2010, 13:55   #14
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Если результат функции сразу инициализировать FALSE, то процесс можно ускорить на пару тиков, за счет отказа от ложной ветви .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.07.2010, 20:41   #15
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Чем плох мой вариант из #10? Если можно чуть поменять названия этих карт в ресурсах или в строке S, то думаю это самый лучший вариант...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 22.07.2010, 10:56   #16
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Если результат функции сразу инициализировать FALSE, то процесс можно ускорить на пару тиков, за счет отказа от ложной ветви .
Имеете ввиду так
Код:
function getMap(s:string):boolean;
Var
    i:integer;
Begin
     for I := 1 to 5 do
         if Edit1.Text=maps[i] then
            Begin
                 result:=False;
                 Break;
            End
End;
Shouldercannon вне форума Ответить с цитированием
Старый 22.07.2010, 10:59   #17
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

так....

Код:
Begin

result:=False;

     for I := 1 to 5 do
         if Edit1.Text=maps[i] then
            Begin
                 result:=True;
                 Break;
            End
End;
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 22.07.2010, 11:56   #18
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Цитата:
Сообщение от naneutral Посмотреть сообщение
Вот простой пример(не самый оптимальный):

Код:
Var
maps:array[1..5] of string[20]=(('dm_alesserfate'),('dm_alley'),('dm_auriga'),
                                  ('dm_bunker'),('dm_colony'));
.........

function getMap(s:string):boolean;
Var
    i:integer;
Begin
     for I := 1 to 5 do
         if Edit1.Text=maps[i] then
            Begin
                 result:=True;
                 Break;
            End
         else result:=False;
End;

........

s:=Copy(s, Pos('\mapname\', s) + 9, Pos('\gametype\', s) - Pos('\mapname\', s) - 9)

if getmap(s) then LoadJPEGFromRes(s, ImageMaps.Picture)
else showMessage('Error');
maps:array[1..5] of string[20] - для чего тут 20?
Shouldercannon вне форума Ответить с цитированием
Старый 22.07.2010, 13:08   #19
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Согласен с Уткиным, раз уж ты уже его написал, какой смысл переписывать? Быстрее работать не станет. В следующий раз пиши циклом, сэкономишь свое время, первый раз будет дольше, с учетом времени на то, чтобы понять и разробраться как же написать, но зато потом подобные вещи будешь писать быстро. Как говорили в одном мультике - "Лучше день потерять, потом за пять минут долететь"
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 22.07.2010, 13:35   #20
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Korben5E, сразу Exit. Зачем Break? Это дольше .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода WoWan-SM Общие вопросы .NET 4 27.04.2010 11:33
Оптимизация кода. Alex Cones Общие вопросы Delphi 19 12.10.2009 20:51
Оптимизация кода viscas PHP 3 31.05.2009 16:04
Оптимизация кода Terran Общие вопросы Delphi 6 01.11.2008 16:57
Оптимизация кода [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 20.08.2008 15:00