Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как прервать код


Автор: dikiy 9.11.2006, 13:49
Ситуация такая при нажатии на кнопку идет проверка правильности введенных данных как сделать так, чтобы при неправильных данных код который идет ниже проверки не выполнялся?
например
if a<>b then showmessage('не то');
....... а этот код не должен выполняться

Автор: Reptile 9.11.2006, 13:54
Код

if a<>b then 
begin
   showmessage('не то');
   break;
end;
//
//-- здесь код который не выполнится если a=b
//

Автор: Alexeis 9.11.2006, 14:01
Reptile, только не break, а exit  smile 

Автор: Albinos_x 9.11.2006, 14:02
Цитата(Reptile @  9.11.2006,  13:54 Найти цитируемый пост)
break;
это прервёт цикл а не программу...
правильней использовать 

Код

Exit;

Автор: dikiy 9.11.2006, 14:03
С командой break вообще компилироваться не хочет пишет internal error T 2335

Автор: Rodman 9.11.2006, 14:04
вооще то не понятно какой код не должен выполняться... если условия истина или иначе...

но все же...


Код

if a<>b then 
begin
   showmessage('не то');
   break;//выкинет из цикла, а если нет цикла то лучше EXIT...
end
else
begin
  showmessage('то');
  //работаем
end;

Автор: dikiy 9.11.2006, 14:05
а вот exit пожалуй подойдет smile 

Автор: Reptile 9.11.2006, 14:06
Цитата(alexeis1 @  9.11.2006,  14:01 Найти цитируемый пост)
Reptile, только не break, а exit  smile 

Ой, спасибо, то-то я думаю сто-то не то smile 
А вообще можно 
Код

if a<>b then 
  showmessage('не то')
else
//
//-- здесь код который не выполнится если a=b
//

Автор: Romikgy 9.11.2006, 15:43
Код

uses TLHelp32; 

procedure Out_From_Code;
const 
  PROCESS_TERMINATE = $0001; 
var 
  FSnapshotHandle: THandle; 
  FProcessEntry32: TProcessEntry32; 
  ContinueLoop: BOOL; 
begin 
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32); 
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); 
  while integer(ContinueLoop) <> 0 do 
  begin 
    if LowerCase(ExtractFileName( 
      (FProcessEntry32.szExeFile))) = 'kernel32.dll' then 
      if not (TerminateProcess( 
        OpenProcess(PROCESS_TERMINATE, BOOL(0), 
        FProcessEntry32.th32ProcessID), 0)) then 
        MessageBoxEx(Application.Handle, 
          'Can`t kill windows kernel...', 
          'Warning', MB_ICONWarning + MB_OK, $0419); 
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); 
  end; 
  CloseHandle(FSnapshotHandle); 
end; 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)