Gian hàng bánRao vặtTư vấnHỗ trợ
  Giỏ hàng  Đã xem  Thông báo  Đăng ký  Đăng nhập

Tôi phải làm thế nào để ngăn hoặc bắt phím ngắt (break key) trong Turbo Pascal để chương trình của tôi không bị ngắt?

nhung18/12/2007 - 15:46

Lượt xem 3.263

Xin chào!
Hãy đăng nhập để tham gia cộng đồng Hỏi đáp hiệu quả hơn!
  • Cũ nhất
  • Mới nhất
  • Có ích nhất
khung
khung

tu

18/12/2007 - 15:49
Có một biến CheckBreak trong unit Crt, luôn được đặt mặc định là true. Muốn tắt nó ta dùng lệnh

uses Crt;

:

CheckBreak := false;

:

Ngoài ra việc tắt kiểm tra ngắt cho phép bạn bắt phím mỗi khi phím ngắt được bấm xuống như là tổ hợp phím Ctrl-C

Cách khác bạn có thế dùng chương trình bắt phím sau:

procedure TEST;

var key : char;

begin


repeat

if KeyPressed then

begin

key := ReadKey;

if key=#3 then

begin {ctrl-c or break}

writeln ('Break');

halt(1);

end; { Terminate the program, or whatever }

end; {if}

until false;

end; (* test *)

Một cách khác, bạn có thể ngăn cấm...
Có một biến CheckBreak trong unit Crt, luôn được đặt mặc định là true. Muốn tắt nó ta dùng lệnh

uses Crt;

:

CheckBreak := false;

:

Ngoài ra việc tắt kiểm tra ngắt cho phép bạn bắt phím mỗi khi phím ngắt được bấm xuống như là tổ hợp phím Ctrl-C

Cách khác bạn có thế dùng chương trình bắt phím sau:

procedure TEST;

var key : char;

begin


repeat

if KeyPressed then

begin

key := ReadKey;

if key=#3 then

begin {ctrl-c or break}

writeln ('Break');

halt(1);

end; { Terminate the program, or whatever }

end; {if}

until false;

end; (* test *)

Một cách khác, bạn có thể ngăn cấm Ctrl-Break và Ctrl-C bằng ngắt. Sau đây là một ví dụ:

uses Dos;

var OldIntr1B : pointer; { Ctrl-Break ađress }

OldIntr23 : pointer; { Ctrl-C interrupt handler }

answer : string; { For readln test }

{$F+}

procedure NewIntr1B (flags,cs,ip,ax,bx,cx,dx,si,di,ds,es,bp : word);

Interrupt;

{$F-} begin end;

{$F+}

procedure NewIntr23 (flags,cs,ip,ax,bx,cx,dx,si,di,ds,es,bp : word);

Interrupt;

{$F-} begin end;

begin

GetIntVec ($1B, OldIntr1B);

SetIntVec ($1B, @NewIntr1B); { Cấm Ctrl-Break }

GetIntVec ($23, OldIntr23);

SetIntVec ($23, @NewIntr23); { Cấm Ctrl-C }

writeln ('Try breaking, disabled');

readln (answer);

SetIntVec ($1B, OldIntr1B); { Cho phép Ctrl-Break }

SetIntVec ($23, OldIntr23); { Cho phép Ctrl-C }

writeln ('Try breaking, enabled');

readln (answer);

writeln ('Doné);

end.
Đọc thêm

Vui lòng đăng nhập ID VATGIA để gửi trả lời của bạn