2017-11-06 40 views
1

나는 도쿄의 샘플 테 더링 응용 프로그램예외가 표시되지 델파이 응용 프로그램

C 델파이 10.2를 실행 해요 실행하는 경우 : 실행하는 경우 엠바 카데 \ 스튜디오 \ 프로젝트 \ 테 더링 \되는 Photowall \ 모바일 \ \ 사용자 \ 마이크 \ 문서

을 일반적으로 Windows 및 iPad에서 앱은 오류없이 실행되지만 작동하지 않습니다.

(Windows 및 아이 패드 모두에서) 디버거 실행은 다음과 같은 오류 메시지를 받으면 :

프로젝트 MobilePhotoApp 48 주소 이미 소켓 오류 # '메시지와 함께 예외 클래스 EIdSocketError을 제기

디버거 예외 알림 사용.'.

프로젝트 MobilePhotoApp 예외 클래스 EIdCouldNotBindSocket에서 '소켓을 바인딩 할 수 없습니다.'라는 메시지가 발생했습니다. 주소와 포트는 이미 사용 중입니다. '.

디버거없이 정상적으로 배포 할 때 앱에 이러한 오류가 표시되도록하려면 어떻게해야합니까? enter image description here

+0

는 디버거에서 실행할 때 "피싱"이러한 예외 위치 :

나는 윈도우 10 나 방화벽이 질문에 델파이 테 더링 애플리케이션에 대한 액세스 권한을 부여받는 방법에 대해 질문했다? – nil

+0

'try..except' 블록을 사용하거나'Application.OnException' 이벤트 핸들러를 사용하여 캡쳐 및 스왑하지 않는 한 그 코드를 가져와야합니다. – GolezTrol

+0

예, 디버거에서 실행할 때 이러한 예외가 발생합니다. 정상적으로 실행되면 오류 대화 상자가 나타나지 않습니다. –

답변

-1

디버거가 연결되어 있지 않은 상태에서 앱을 실행할 때 오류가 발생하지 않는 이유는 응용 프로그램 자체가 이러한 예외를 처리 할 수 ​​있도록 설계 되었기 때문입니다.

예외 이름에 따라 나는 그들이 Indy 네트워킹 라이브러리에서 온 것 같아요. Indy는 Delphi와 함께 제공되는 타사 네트워킹 라이브러리입니다. 대부분의 Indy 구성 요소는 내부적으로 처리되므로 예외를 발생시키지 않도록 설계되었습니다.

일반적으로 오류를 처리하는 올바른 방법을 보려면 구성 요소 설명서를 확인해야합니다. 그러나 Indy 구성 요소가 모든 것을 많이 복잡하게하는 Tethering 구성 요소에 의해 내부적으로 사용되고 있기 때문에 이것은 문제가 될 수 있습니다.

예를 들어 연결할 수없는 예제 응용 프로그램의 가장 큰 원인은 Indy 구성 요소가 방화벽으로 차단되는 경우 내부 예외를 빠르게 발생시키고 연결 시도를 포기한다는 것입니다. 실제로 이것은 종종 너무 빨리 발생하여 방화벽이 프로그램에 네트워크 연결을 설정할지 여부를 묻지 않습니다.
Eset Smart Security가 네트워크 연결을 설정할 수있는 속도로 확인 대화 상자를 표시하지 않기 때문에 Indy 구성 요소를 사용하는 것이 좋지 않은 이유 중 하나입니다. 따라서 Indy 구성 요소를 사용하기 전에 방화벽 예외에이 응용 프로그램을 추가해야합니다.

+1

마지막 두 단락이 옳지 않은 것처럼 보입니다. –

+0

"대부분의 인디 구성 요소는 ** 내부적으로 처리되므로 ** 예외를 발생시키지 않도록 ** 설계되었습니다." 저는 그 진술을 거짓으로 봅니다. 물론 예외를 발생시킵니다. 주제는 예외가 처리되는지 여부입니다. –

+0

저는 모바일 테 더링 Photowall 앱을 디버거를 사용하여 iPad에서 실행했습니다. Windows 10의 오류와 비슷한 결과를 얻었습니다. iPad에서 Windows와 동일한 문제가 발생 했습니까? 디버거에서는 예외가 표시되지만 정상적으로 실행되지 않는 이유는 분명하지 않습니다. –

0

의견에 많은 수의 공헌자가 도움을주었습니다.

빈 포트를 검색 할 때 예외가 네트워크 라이브러리 내부에서 처리 될 가능성이 있습니다.

Windows 10에서 테 더링 부족으로 인해 문제가 설명되었다고 가정했으나 모바일 앱이 실행될 때 모바일 앱이 Windows 7 컴퓨터 또는 Macintosh에서 실행되는 데스크톱 컴패니언과 성공적으로 페어링됩니다 Android 또는 iPad에서. 페어링 부족 문제는 Windows 10 시스템의 방화벽과 관련이 있습니다.오류 대화 상자가 표시 Delphi apps won't tether on Windows 10

+0

에서 Delphi 옵션을 변경하면됩니다. McAfee Internet이 Delphi 테 더링 응용 프로그램을 차단하고있는 것으로 나타났습니다. McAfee가 제거되면 Windows에서 방화벽 예외를 요청하고 테 더링 앱을 페어링 할 수있었습니다. 페어링에 실패하면 McAfee 또는 Delphi 테 더링 앱에서 오류 메시지가 표시되지 않습니다. –