2008-11-12 32 views
9

Tôi nhận thấy rằng EStackOverflow, như được định nghĩa trong SysUtils.pas được đánh dấu là không được chấp nhận trong Delphi 2009. Tôi đã kiểm tra và nó cũng được đánh dấu là không dùng nữa vào năm 2007. Tôi có đĩa cài đặt Delphi 7 ở đây, nhưng tôi nghĩ mình sẽ hỏi biết khi nào nó không được chấp nhận.EStackOverflow không được chấp nhận trong bao lâu và thay thế nó là gì?

Ngoài ra, không ai biết tại sao và thay thế điều gì? Tôi đã viết một ứng dụng thử nghiệm gây ra một Stack Overflow qua đệ quy, và tôi vẫn nhận được một ngoại lệ EStackOverflow, nhưng nếu tôi thêm một handler đặc biệt cho nó sau đó tôi nhận được

[DCC Cảnh báo] Unit57.pas (85): W1000 Symbol 'EStackOverflow' bị phản đối

tôi biết rằng EStackOverflow xuống từ EExternal, và rằng tôi có thể bẫy EExternal và kiểm tra ExceptionCode cho STATUS_STACK_OVERFLOW, nhưng điều đó dường như không cần thiết vì nó vẫn ném ngoại lệ EStackOverflow.

Đây có phải chỉ là để ngăn cản tôi thoát khỏi một EStackOverflow trong mã của riêng tôi không?

(Vâng, tôi nhận ra sự trớ trêu của hỏi một câu hỏi về EStackOverflow trên một trang web gọi là StackOverflow, và có Tôi hoàn toàn nghiêm túc.)

+0

Tương tự trong Delphi 7 – Jamie

+1

Tôi đã cố gắng tìm kiếm các vấn đề tràn ngăn xếp, và tôi tải các liên kết vào stackoverflow.com ... :-) nhưng tôi đã quản lý để tìm cái này. –

Trả lời

4

Tôi không có D5 ở đây để nói, nhưng tôi hầu như không nhớ số không được chấp nhận chỉ thị chỉ xuất hiện trên D6.

Đối với ngoại lệ StackOverflow, tôi nghĩ rằng nó không được chấp nhận vì chỉ dành cho môi trường thời gian chạy Delphi để nâng cao nó.

EDIT: Dựa trên tổng hợp của tất cả các câu trả lời, EStackOverflow không được dùng nữa trong Delphi 6 khi từ khóa không được chấp nhận được giới thiệu.

2

tôi chỉ kiểm tra Delphi của tôi 6, và EStackOverflow đã không được chấp nhận. Tôi không có quyền truy cập vào các phiên bản cũ của Delphi tại đây.

Tôi không thể giúp bạn về lý do tại sao hoặc có thể thay thế.

1

Đây có phải chỉ là để ngăn cản tôi thoát khỏi một EStackOverflow trong mã của riêng tôi không?

Quan trọng hơn, tôi nghĩ điều này có nghĩa là bạn không nên thiết kế mã để tùy thuộc vào mã được đưa ra trong các phiên bản sau.

1

Trong Delphi 5 nó không được chấp nhận.

chỉnh sửa: Trên thực tế, trong Delphi 5, 'không dùng nữa' không phải là một từ dành riêng.

4

Cũng giống như trong .NET, bạn không thể thực sự bắt được ngoại lệ StackOverflow, bạn sẽ khôi phục lại điều gì? Mã của bạn rất có thể sai nếu bạn cần bắt một số :)

+1

Tôi thực sự muốn có một dòng nói rằng "trên EStackOverflow làm tăng;" nên tôi không hiểu. Nhưng bạn có thể đúng.Thay vào đó, tôi quyết định bẫy EExternal và kiểm tra ExceptionCode cho STATUS_STACK_OVERFLOW –

+0

+1 Cảm ơn bạn đã có một mẹo rất hay – Mawg

Các vấn đề liên quan