2016-07-22 2 views
0

더 이상 답변하지 않으시면 문제가 해결되었습니다. 질문의 끝으로 건너 뛰어 내가 잘못했는지 확인하십시오. 내가 FilePath하여 특정 표준 중 하나의 구문을 (Function 문자열을 얻기 위해 file first를 읽어) 읽기 다음 Function을 실행하거나 Text 자체 (skips file reading)Xor가 실행되지 않습니다.

Public Function ReadStandard(Optional ByVal FilePath As String = Nothing, _ 
Optional ByVal Standard_Text As String = Nothing) As Boolean 

에 의해하고


이 기능을 사용 가능하게 만들려면 매개 변수 중 하나만 설정해야하고 다른 매개 변수는 설정하지 말아야합니다. 나는 그것이 정확한 작업 을 (당신이 부울을 전달하면, 경우에만 True를 반환해야 XOR하기 위해 무엇을해야하기 때문에, 그래서이 가능 내가 배타적 논리합 사용할 수 있도록

Public Function ReadStandard(str as String, isFilePath as Booelean) As Boolean 

같은 기능을 사용하지 않으 A! = B). 어떤 연구를하면 vb.net에서 작동하는 것으로 나타났습니다. MSDN

그러나 어떤 이유로 그것은 저에게 효과가 없습니다.

If IsNothing(FilePath) Xor IsNothing(Standard_Text) Then (...) 

왜 그럴까요? 아니면 내가 배운 것을 잊어 버렸습니까?


나는 내 논리에서 뭔가를 섞어 보았다. 다음 함수에서 나는 If-Statement

If Not (IsNothing(FilePath) Xor IsNothing(Standard_Text)) Then 
    Throw New ArgumentException("FilePath or Standard_Text must be set.") 
    Return False 
End If 
+0

'ReadStandardFromFile()'과 'ReadStandardFromText()'라는 두 개의 개별 함수가 아마도 더 합리적 일 수 있습니다. "효과가 없다"는 것은 무엇을 의미합니까? –

+0

이 경우 직장에 다양한 방법이 있습니다. 그러나 그것은 중요한 것이 아닙니다. 미래의 프로젝트를 위해서는 Xor를 사용할 수 있어야합니다. 그래서 내가 묻는거야. Xor의 VB.Net 논리를 이해합니다. – Luke

+0

나는 그것을 이해한다고 생각한다. 그래서 내가 당신이 "일하지 않는다"는 말을 물었습니다. 그것을 어떻게 검증하고 어떤 투입물을 제공합니까? –

답변

1

XOR은 캐리없이 2 진 가산으로 간주 할 수있다.

If False Xor False Then '0+0 
     Stop 
    End If 

    If True Xor False Then '1+0 
     Stop 
    End If 

    If False Xor True Then '0+1 
     Stop 
    End If 

    If True Xor True Then '1+1 
     Stop 
    End If 
+0

문제는 이미 해결되었지만 undoranding Xor는 결코 문제가되지 않았습니다. 그러나 당신의 설명은 완벽하게 요점을 잘 알고 있으며, Xor를 아직 모르는 사람들을 위해 이해하기가 좋습니다. 저는 사람들을 여기에 게시하는 것을 멈추도록 답변으로 표시 할 것입니다. 좋은 주말 되세요! – Luke

0

Not을 넣어 잊었 어떻게합니까 같은 통화보세요? 나는 당신의 샘플을 시험해보고 작동 중입니다. 그 FilePath이 비어 있지 의미하기 때문에,

ReadStandard(,)   --> False 
ReadStandard(, "X")  --> True 
ReadStandard("X",)  --> True 
ReadStandard("X", "X") --> False 

같은 ReadStandard("", "X")를 호출주의 : 다음과 같이 호출

Public Function ReadStandard(Optional FilePath As String = Nothing, Optional Standard_Text As String = Nothing) As Boolean 

    ReadStandard = False 
    If IsNothing(FilePath) Xor IsNothing(Standard_Text) Then 
     ReadStandard = True 
    End If 

End Function 

는 (X는 경로의 예입니다) 정답을 제공합니다.

br

+0

너 늦은 친구 야. 질문의 코멘트를 읽어보십시오 :-) – Luke

+0

아아 :) 그러나 이것이 당신의 해결책이라면, 당신은 간단하게 'IsNothing (FilePath) = IsNothing (Standard_Text) Then'을 사용할 수 있습니다. – pLurchi

+0

물론, 그것은 간단한 해결책이 될 것입니다. 하지만 Xor는 Xor의 의미가 정확히 말해서 하나는 반드시 설정되어야하고 다른 하나는 설정되어서는 안되기 때문에 Xor가이 경우 더 읽기 쉽게 만듭니다. 그러나 그것의 해결 및 조언뿐만 아니라 당신을 위해. – Luke

관련 문제