Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


Доброго всем времени суток!
Это называется - сижу, туплю...
Как можно грамотно на Delphi организовать оператор выбора case..of..end;, чтобы он был не такой примитивный как обычно его описывают,например:
Код: Выделить весь код
case Ch of
 'n', 'N', 'н', 'Н' : lbOutput.Caption := 'Нет';
 'y', 'Y', 'д', 'Д' : lbOutput.Caption := 'Да';
end;
...а такой,чтобы каждая константа выбора содержала определённый кусок кода.

Можно сделать,конечно,и так:
Код: Выделить весь код
if dEvent.dwDebugEventCode = LOAD_DLL_DEBUG_EVENT then  // Первый вариант константы выбора
begin
 hDllFile := dEvent.LoadDll.hFile;
if GetFileNameFromHandle(hDllFile) then
begin
 PPointer(Base) := dEvent.LoadDll.lpBaseOfDll;
 RestoreCode := InjectCode(EntryPoint, $FFFF);
end;
end;

if dEvent.dwDebugEventCode = EXCEPTION_DEBUG_EVENT then  // второй вариант константы выбора
if dEvent.Exception.ExceptionRecord.ExceptionCode =
                       EXCEPTION_ILLEGAL_INSTRUCTION then
begin
 RestoreData(EntryPoint, RestoreCode);
 DecryptStart := SeekBpPlace(Base);
 SendMessage(hMemo, WM_SETTEXT, 0,
       lParam(' * Тра-ля-ля '+IntToHex(DecryptStart, 8)));
end;
...хотя подобный код работает,но он всегда будет полностью проверять все варианты прежде,чем найдёт подходящий.На что будет уходить лишнее время,что "не есть гут" .
Следовательно - как быть ?

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 20:26, 18-08-2005 | #47