Форум: "Начинающим";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
ВнизКак оптимизировать кусок кода? Найти похожие ветки
← →
harisma © (2011-03-10 14:10) [0]Получился у меня следующий код:
procedure .....(DoApply: Boolean);
var
LDelMeanFields, LRequestUserConfirm, LUserConfirmDeleteMeanFields: Boolean;
begin
...
LRequestUserConfirm := True;
LUserConfirmDeleteMeanFields := False;
LDelMeanFields := TCDictEngine(FCDEngine).ISide.COptions.GetSrvVarParam(keyDeSave, prmDelMeanFld, varBoolean, False); (считываем флаг из реестра)
for i := 0 to FIntf.Count - 1 do
begin
ICMTC := FIntf[i] as ICMTCDesigner;
Application.ProcessMessages;
if LDelMeanFields then
begin
if DoApply then
begin
if LRequestUserConfirm then
begin
if ICMTC.HasDeletedFields then <- Получаем информацию, есть ли у понятия удаленные поля
begin
LUserConfirmDeleteMeanFields := TCDictEngine(FCDEngine).ISide.MessageDlg2(cmsgMeanHasDeletedFields, Integer(mtConfirmation), VarArrayOf([mbYes, mbNo]), Integer(mbNo)) = Integer(mbYes);
LRequestUserConfirm := False;
if LUserConfirmDeleteMeanFields then
ICMTC.Method1
else
ICMTC.Method2;
end
else
ICMTC.Method1;
end
else
if ICMTC.HasDeletedFields then
if LUserConfirmDeleteMeanFields then
ICMTC.Method1
else
ICMTC.Method2
else
ICMTC.Method1;
end
else
ICMTC.Method2;
end
else
if DoApply then
ICMTC.Method1
else
ICMTC.Method2;
end;
end;
Можно ли как то его оптимизировать?
← →
Дмитрий Белькевич (2011-03-10 21:30) [1]Для начала:
if LRequestUserConfirm and ICMTC.HasDeletedFields then
begin
LUserConfirmDeleteMeanFields := TCDictEngine(FCDEngine).ISide.MessageDlg2(cmsgMeanHasDeletedFields, Integer(mtConfirmation), VarArrayOf([mbYes, mbNo]), Integer(mbNo)) = Integer(mbYes);
LRequestUserConfirm := False;
end;
if ICMTC.HasDeletedFields then
begin
if LUserConfirmDeleteMeanFields then
ICMTC.Method1
else
ICMTC.Method2;
end
else
ICMTC.Method1;
end
end
else
ICMTC.Method2;
p.s. выложил бы живой код - поформатировал бы автоформатом, а так мучайся сам :)
← →
Cobalt © (2011-03-14 10:32) [2]Можно просто расписыать, от каких значений(входные параметры) зависят наши действия (результат функции)
например (для двух параметров):
HasDeletedFields(вход1) LUserConfirmDeleteMeanFields(вход2) Вызвать метод:(результат)
0 0 Method1
0 1 Method1
1 0 Method2
1 1 Method1
Соответственно, пишем логическую функцию:
if HasDeletedFields and not LUserConfirmDeleteMeanFields then
Method2
else
Method1
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c