WorldCup 을 보던 중에 패스 성공율에 대해 보여주는 화면이 나오더라고요...
패스 하는 걸 일일이 카운팅하는 사람들이 있을텐데
이건 그런 패스 카운팅하는 사람들이 쓸 것 같은? 어플입니다. ^^

그냥 TV 만 보느니 한번 만들어 볼까 해서 만들어봤습니다.



그냥 기본적인 문법을 사용한 거라서요...
뭐 건져가실 건 없을 겁니다.

^^'
다음번엔 패스 퍼센티지를 만들어 볼까? ㅋㅋㅋ

대~~애 한민국 짝!짝!~짝!~짝!짝!

필승입니다.

행복한 고수되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

깜빡잊고 실행파일과 소스를 안올렸네요... ㅋㅋ 필요는 없으시겠지만... ^^;
아르헨티나 경기 합니다.
오늘 필승입니다.

대애~~한 민국 짝짝짝짝짝... ^^

    1 Public Class frmCounter

    2 

    3     Dim ActionStack As Stack(Of String)

    4 

    5     Public Sub New()

    6 

    7         ' This call is required by the designer.

    8         InitializeComponent()

    9 

   10         ' Add any initialization after the InitializeComponent() call.

   11         ActionStack = New Stack(Of String)

   12 

   13     End Sub

   14 

   15     Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbBPassFore.Click, pbBPassCross.Click, pbBPassError.Click, pbBCancel.Click, pbRPassFore.Click, pbRPassCross.Click, pbRPassError.Click, pbRCancel.Click

   16         Dim pb As PictureBox = CType(sender, PictureBox)

   17         Dim buttonName As String = pb.Name

   18         Select Case buttonName

   19             Case "pbBPassFore"

   20                 nupBFore.UpButton()

   21             Case "pbBPassCross"

   22                 nupBCross.UpButton()

   23             Case "pbBPassError"

   24                 nupBError.UpButton()

   25             Case "pbRPassFore"

   26                 nupRFore.UpButton()

   27             Case "pbRPassCross"

   28                 nupRCross.UpButton()

   29             Case "pbRPassError"

   30                 nupRError.UpButton()

   31             Case "pbRCancel"

   32                 'VB 에는break나 Continue 문이 없는 관계로 ^^'

   33                 CancelCount()

   34             Case "pbBCancel"

   35                 CancelCount()

   36         End Select

   37 

   38         If Not (String.Equals(buttonName, "pbRCancel") Or String.Equals(buttonName, "pbBCancel")) Then

   39             ActionStack.Push(buttonName)

   40         End If

   41 

   42     End Sub

   43 

   44     Private Sub CancelCount()

   45         If ActionStack.Count < 1 Then

   46             Return

   47         End If

   48         Dim buttonName As String = ActionStack.Pop()

   49         Select Case buttonName

   50             Case "pbBPassFore"

   51                 nupBFore.DownButton()

   52             Case "pbBPassCross"

   53                 nupBCross.DownButton()

   54             Case "pbBPassError"

   55                 nupBError.DownButton()

   56             Case "pbRPassFore"

   57                 nupRFore.DownButton()

   58             Case "pbRPassCross"

   59                 nupRCross.DownButton()

   60             Case "pbRPassError"

   61                 nupRError.DownButton()

   62         End Select

   63     End Sub

   64 

   65 End Class

   66 

   67 















저작자 표시 비영리 변경 금지
신고
Posted by woojja

이 곳에 가시면 쏟아지는 VisualBasic 2010 책들의 List 를 보실 수 있습니다.

행복한 VisualBasic.NET 고수 되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\












저작자 표시 비영리 변경 금지
신고
Posted by woojja
XML Document 만들기 부터 Node 접근까지...


간단한 것이지만...
뭐 그리 뚜렷하게 풀어 설명해 놓은 것도 없기에...
그렇다고 자세히 설명 하는 것은 아니지만...

조그만 프로그램을 하나 만들고

소스를 디버깅하면서 아하... 이렇게 접근을 하는 구나 라고 느끼실 수 있을 것 같습니다.

만들 프로그램... 역시 그리 대단하지 않습니다.


 


폼하나 여시고 버튼세개를 올립니다.

비하인드 코드창에는 

Imports System.Xml

를 추가합니다.

XML 을 사용할 것이니 당연하겠죠..

그리고 



<?xml version="1.0" encoding="euc-kr"?>
<Filters />

이런 Filters Root Entity만 들어가 있는 XML 파일을 하나 만듭니다.
그리고 'UserFilter.xml" 이라는 이름으로 저장을 하시고

어플폴더에 복사를 해 놓습니다.

그리고 차례로 버튼을 더블클릭하여 이벤트 코드를 만드시고
아래의 소스를 복사해서 넣습니다.


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        doc = New XmlDocument()

        If (Not System.IO.File.Exists("Filter.xml")) Then
            doc.Load("UserFilter.xml")
        Else
            doc.Load("Filter.xml")
        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim root As XmlNode = doc.DocumentElement

        For k As Integer = 0 To 2 Step 1

            Dim xeFilter As XmlElement = doc.CreateElement("Filter")
            Dim xeFilterName As XmlElement = doc.CreateElement("Name")

            Dim xeColumnFilters As XmlElement = doc.CreateElement("ColumnFilters")

            For j As Integer = 0 To 5 Step 1

                Dim xeColumnFilter As XmlElement = doc.CreateElement("ColumnFilter")
                Dim xaColumnName As XmlAttribute = doc.CreateAttribute("ColumnName")
                Dim xaLogicalOperation As XmlAttribute = doc.CreateAttribute("LogicalOperation")
                xaColumnName.InnerText = "CoumnName" + j.ToString()
                xaLogicalOperation.InnerText = "LogicalOperation" + j.ToString()
                xeColumnFilter.Attributes.Append(xaColumnName)
                xeColumnFilter.Attributes.Append(xaLogicalOperation)

                For i As Integer = 0 To 3 Step 1

                    Dim xeFilterCondition As XmlElement = doc.CreateElement("FilterCondition")
                    Dim xaComparisonOperator As XmlAttribute = doc.CreateAttribute("ComparisonOperator")
                    Dim xaCompareValue As XmlAttribute = doc.CreateAttribute("CompareValue")
                    xaComparisonOperator.InnerText = "ComparisonOperator" + i.ToString()
                    xaCompareValue.InnerText = "CompareValue" + i.ToString()
                    xeFilterCondition.Attributes.Append(xaComparisonOperator)
                    xeFilterCondition.Attributes.Append(xaCompareValue)

                    xeColumnFilter.AppendChild(xeFilterCondition)
                Next

                xeColumnFilters.AppendChild(xeColumnFilter)
            Next
            xeFilter.AppendChild(xeFilterName)
            xeFilterName.InnerText = "woojja" + k.ToString()

            xeFilter.AppendChild(xeColumnFilters)

            root.AppendChild(xeFilter)

        Next
        doc.Save("Filter.xml")

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim root As XmlNode = doc.DocumentElement

        Dim xmlColumnFilterList As XmlNodeList = root.SelectNodes("Filter[Name='woojja1']")
        xmlColumnFilterList = root.SelectNodes("Filter[Name='woojja1']/ColumnFilters")
        xmlColumnFilterList = root.SelectNodes("Filter[Name='woojja1']/ColumnFilters/ColumnFilter")

        For Each columnFilterNode As XmlNode In xmlColumnFilterList

            Dim strColumnName As String = columnFilterNode.Attributes("ColumnName").Value
            Dim strLogicalOperation As String = columnFilterNode.Attributes("LogicalOperation").Value

            Dim filterConditionList As XmlNodeList = columnFilterNode.SelectNodes("FilterCondition")

            For Each filterConditionNode As XmlNode In filterConditionList

                Dim strComparisonOperator As String = filterConditionNode.Attributes("ComparisonOperator").Value
                Dim strCompareValue As String = filterConditionNode.Attributes("CompareValue").Value
            Next
        Next
    End Sub


흑... 복사해 놓고 보니 토나올것 같군요... ㅡㅡ'

코드창에 복사해 넣으면 그리 나쁘진 않습니다.

그리고 위 빨갛게 칠해 놓은 부분에 BreakPoint 를 거신후에..

버튼 1, 2, 3번을 차례로 클릭합니다.

1번에서 에러나시는 분들... 꼭있습니다.
걍 적당히 xml 파일을 이동시켜 놓으세요. ㅋㅋㅋ (알아서 좀 하세요.)

버튼 2번은 내용은 잘 보시면 XML 의 Element와 Attribute 를 어떻게 추가하는지 아실 수있습니다.

그리고 버튼 3번은 Element 와 Attribute 를 어떻게 접근하는 지 아실 수 있는데...

BreakPoint 를 찍으라는 이유는...

        root.SelectNodes("Filter[Name='woojja1']")
        root.SelectNodes("Filter[Name='woojja1']/ColumnFilters")
        root.SelectNodes("Filter[Name='woojja1']/ColumnFilters/ColumnFilter")

XPath 를 어떻게 사용할 수 있는지 사용방법을 보시라고...

역시 허접한 정리였습니다.





부디 행복한 고수되셔요...



woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


Root 2008-04-22 오전 10:18:20
비주얼베이직에서 XML 다루는 예제를 찾고 있었는데 많은 도움이 되었습니다. 감사해요 ^^












저작자 표시 비영리 변경 금지
신고
Posted by woojja
폼을 하나 만드시고 
리스트 박스 하나, 버튼 두개 올리시고 아래 소스를 복사해서 실행시켜보시지요...

무식한 정환이... 
멀티 컬럼이라는 새로운 속성에 좋아라 했답니다.
근데 실은 멀티 컬럼이라고 해서 리스트 뷰처럼 하나의 아이템에 두 컬럼 혹은 세 컬럼이 나오는 그런 속성인줄 알았었는데... 조금은 실망했습니다. 하지만 서도 새로운 걸 발견했다는... (이제서야... ㅡㅡ')
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim x As Integer
        ' Add items to the ListBox.
        For x = 0 To 50
            ListBox1.Items.Add("Items " + x.ToString())
        Next x
        ' Display items in columns.
        ' Determine the width of the items in the list to get the best column width setting.
        Dim width As Integer = CInt(ListBox1.CreateGraphics().MeasureString(ListBox1.Items(ListBox1.Items.Count - 1).ToString(), _
           ListBox1.Font).Width)
        ' Set the column width based on the width of each item in the list.
        ListBox1.ColumnWidth = width

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.MultiColumn = Not ListBox1.MultiColumn
    End Sub
End Class


 


행복한 고수되셔요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


== 소스는 MSDN 을 약간 변형한 것입니다.












저작자 표시 비영리 변경 금지
신고
Posted by woojja
오늘은 맛베기로 변수나 클래스선언시 사용해서는 안되는 키워드의 종류에 대해서 나열해보고자합니다.
키워드는 아래와 같습니다

MSDN에서 퍼서 추렸습니다.

 
Alias
외부프로시저의 DLL에다른이름이있음을나타냅니다.
 
AddHandler
런타임에이벤트를이벤트처리기와연결하거나이벤트처리기를추가할때실행할코드를선언합니다
 
Ansi
Visual Basic에서선언되는외부프로시저의이름에관계없이모든문자열을 ANSI(American National Standards Institute) 값으로마샬링하도록지정합니다.

프로젝트외부에서정의된프로시저를호출하면 Visual Basic 컴파일러가해당프로시저를제대로호출하는데필요한정보에액세스할수없습니다.
이정보에는프로시저의위치, 식별방법, 호출시퀀스및반환형식, 사용한문자열문자집합등이포함됩니다.
Declare 문은외부프로시저에대한참조를만들고이와같은필요한정보를제공합니다.

Declare 문의charsetmodifier부분은외부프로시저를호출하는
동안문자열을마샬링하는데사용할문자집합정보를제공합니다. 또한외부파일에서외부프로시저이름을검색하는방법에도영향을줍니다. Ansi한정자는 Visual Basic에서모든문자열을 ANSI 값으로마샬링하고검색중이름을수정하지않은채프로시저를조회하도록지정합니다.

문자집합한정자가지정되어있지않으면 Ansi가기본값으로사용됩니다
 
As
제네릭형식매개변수에대한제약조건목록이나선언문의데이터형식을식별하는 As 절을정의합니다.
 
Assembly
소스파일의시작부분에있는특성이전체어셈블리에적용되도록지정합니다.

특성은클래스나속성같은개별프로그래밍요소에속하는경우가많습니다. 특성을적용하려면특성블록을꺽쇠괄호(< >)로
묶어선언문에직접연결합니다.

특성이바로다음에이어지는요소만이아닌전체어셈블리에도해당되는경우에는특성블록을소스파일의시작부분에놓고 Assembly키워드를사용하여해당특성을식별합니다. 현재어셈블리모듈에만적용되는경우에는 Module 키워드를사용합니다.

특성을 AssemblyInfo.vb 파일의어셈블리에적용할수도있습니다. 이런경우에는기본소스코드파일에서특성블록을사용하지않아도됩니다.
 
Auto
선언되는외부프로시저의외부이름을기반으로 .NET Framework 규칙에따라 Visual Basic에서문자열을마샬링하도록지정합니다.

프로젝트외부에서정의된프로시저를호출하면 Visual Basic 컴파일러가해당프로시저를제대로호출하는데필요한정보에액세스할수없습니다.
이정보에는프로시저의위치, 식별방법, 호출시퀀스및반환형식, 사용한문자열문자집합등이포함됩니다.
Declare 문은외부프로시저에대한참조를만들고이와같은필요한정보를제공합니다.

Declare 문의charsetmodifier부분은외부프로시저를호출하는동안문자열을마샬링하는데사용할문자집합정보를제공합니다. 또한외부파일에서외부프로시저이름을검색하는방법에도영향을줍니다. Auto 한정자는 Visual Basic에서 .NET Framework 규칙에따라문자열을마샬링하도록지정하며, 런타임플랫폼의기본문자집합을결정하고초기검색이실패할경우외부프로시저이름을수정하도록지정합니다. 자세한내용은 Declare 문의 "문자집합"을참조하십시오.

문자집합한정자가지정되어있지않으면 Ansi가기본값입니다.
 
Binary
문자열비교메서드를엄격한이진정렬순서로설정합니다.

Option Compare 문은소스파일에서다른소스문앞에있어야합니다. 이문은해당소스파일에서생성된모든코드에
대한문자열비교에영향을줍니다.
 
ByRef
호출된프로시저가호출코드에서내부인수로사용하는변수의값을변경할수있도록하는방식으로인수가전달되도록지정합니다.
 
ByVal
호출된프로시저나속성은호출코드에서내부인수로사용하는변수의값을변경할수없도록하는방식으로인수가전달되도록지정합니다.
 
Case
식의값을테스트할대상값이나값집합을정의합니다.
 
Catch
Try블록안에서특정예외가발생할경우실행할문블록을정의합니다.

Try 구조체에는 Finally 블록이나하나이상의 Catch 블록이포함되어야합니다.
 
Class
전달된형식인수가참조형식이되도록제네릭형식매개변수를제약하거나
Class 문(Visual Basic)을정의합니다.
 
Custom
처리기추가, 처리기제거및이벤트발생을위해특수화된추가코드가이벤트에포함되어있음을나타냅니다.
 
Default
속성을해당클래스, 구조체또는인터페이스의기본속성으로식별합니다.

클래스, 구조체또는인터페이스는해당속성중하나만기본속성으로지정할수있습니다. 이때해당속성은매개변수를하나이상사용해야합니다.
코드에서멤버를지정하지않고클래스나구조체를참조하면 Visual Basic에서해당참조는기본속성으로확인됩니다.

기본속성을지정하면소스코드의문자수는좀줄어들수있지만읽기어려운코드가될수있습니다. 호출하는코드에서사용자의클래스나구조체를잘모르는데클래스나구조체이름을참조하는경우해당참조가클래스나구조체자체를참조하는지, 아니면기본속성을참조하는지확실히알수없습니다. 이로인해컴파일러오류나미묘한런타임논리오류가발생할수있습니다.

Option Strict 문을사용하여컴파일러형식검사를항상 On으로설정하면기본속성오류가발생할가능성을어느정도줄일수있습니다.

미리정의된클래스나구조체를코드에서사용하려면해당클래스나구조체에기본속성이있는지확인하고, 있으면그이름을알아두어야합니다.

이러한단점이있으므로기본속성은정의하지않는것이좋습니다. 또한코드가독성을위해서는기본속성까지포함하여모든속성을항상명시적으로참조해야합니다.

Default 한정자는다음컨텍스트에서사용할수있습니다.
 
DirectCast
상속또는구현을기반으로형식변환작업을소개합니다.

DirectCast는변환을위해 Visual Basic 런타임도우미루틴을사용하지않기때문에 Object 데이터
형식변환에있어서 CType보다나은성능을제공할수있습니다.

CType 함수및 TryCast 키워드를사용할때와같은방법으로 DirectCast 키워드를사용합니다. 첫번째인수로식을제공하고두번째인수로식을변환할형식을제공합니다. DirectCast를사용하려면두인수의데이터형식간에상속또는구현관계가있어야합니다. 즉, 한형식이다른형식에서상속되거나다른형식을구현해야합니다.
 
Each
For Each루프에사용할루프변수를지정합니다.
 
Else
다른조건문그룹이실행되거나컴파일되지않을경우에실행하거나컴파일할문그룹을정의합니다.
 
ElseIf

이전의조건테스트가실패한경우테스트할조건을정의합니다.
 
End
추가키워드가이어질경우해당키워드로시작된문블록의정의를종료합니다.
End AddHandler
End Class 
End Enum 
End Event 
End Function 
End Get 
End If 
End Interface 
End Module 
End Namespace 
End Operator 
End Property 
End RaiseEvent
End RemoveHandler
End Select 
End Set 
End Structure 
End Sub
End SyncLock
End Try
End While
End With
 
Error
런타임오류를시뮬레이트하거나이오류에응답합니다.
 
False
조건테스트에실패하는 Boolean 값을나타냅니다.
 
Finally
Try구조체를끝내기전에실행할문블록을정의합니다.
 
For
루프변수의서로다른값으로반복되는루프를정의합니다.
 
Friend
하나이상의선언된프로그래밍요소를해당선언이포함된어셈블리안에서만액세스할수있도록지정합니다.
 
Global
네임스페이스구조를사용하여차단한 .NET Framework 프로그래밍요소에액세스할수있습니다.
 
Handles

프로시저가지정된이벤트를처리하도록선언합니다.
 
Implements
클래스또는구조체멤버가인터페이스에정의된멤버에대한구현을제공하는것을나타냅니다.
 
In
For Each루프에서이동하는루프변수의그룹을지정합니다.
 
Is
비교를수행하는 Is 절을정의합니다.
 
Lib
외부프로시저를포함하는외부파일(DLL 또는코드리소스)을식별하는 Lib 절을지정합니다.
Loop Do문으로정의된루프를종료합니다.
Me 코드에서현재실행하고있는클래스또는구조체의특정인스턴스를참조할수있도록합니다.
 Module 소스파일의시작부분에있는특성이현재어셈블리모듈에적용되도록지정합니다.
 MustInherit 클래스를기본클래스로만사용할수있으며이클래스에서개체를직접만들수없도록지정합니다.
 
MustOverride
속성이나프로시저를이클래스에서구현하지않고파생클래스에서재정의해야사용할수있도록지정합니다.
 
MyBase
현재클래스인스턴스의기본클래스를참조할수있는방법을제공합니다.
  MyClass 현재클래스인스턴스멤버를파생클래스에서재정의하지않고참조할수있는방법을제공합니다.
 
Narrowing
변환연산자(CType)가클래스나구조체를원래클래스나구조체에사용하던일부값을저장하지못할수도있는형식으로변환하도록지정합니다.
 New New절을정의하여새개체인스턴스를만들거나, 형식매개변수에대한생성자제약조건을지정합니다.
 Next 다양한루프변수값을사용하여반복되는루프를종료하거나오류를발생시킨문다음의문을사용하여실행이계속되도록지정합니다.
  Nothing 모든데이터형식의기본값을나타냅니다.

변수에 Nothing을할당하면선언된형식에대한기본값을설정합니다. 해당형식이변수멤버를포함하면변수멤버도모두기본값으로설정합니다. 다음은이에대한예입니다.

Nothing을개체변수에할당하면개체변수가더이상개체인스턴스를참조하지않습니다. 변수가이전에인스턴스를참조한경우 Nothing으로설정하면인스턴스자체는종료되지않습니다. GC(가비지수집기)가남아있는활성참조가없음을발견한후에만인스턴스가종료되고인스턴스와관련된메모리및시스템리소스가해제됩니다.
 
NotInheritable
클래스를기본클래스로사용할수없도록지정합니다.
 
NotOverridable
파생클래스에서속성이나프로시저를재정의할수없도록지정합니다.
  Of 제네릭클래스, 구조체, 인터페이스, 대리자또는프로시저에서형식매개변수를식별하는 Of 절을정의합니다. 제네릭형식에대한자세한내용은 Visual Basic의제네릭형식을참조하십시오.
Off 컴파일러옵션을끕니다.
On 런타임오류에대한응답을지정하거나컴파일옵션을설정합니다.
Option 전체소스파일에적용되는컴파일러옵션을지정하는문을정의합니다.
Optional 프로시저를호출할때프로시저인수를생략할수있도록지정합니다.
 
Overloads
속성또는프로시저에서하나이상의기존속성이나프로시저를같은이름으로다시선언하도록지정합니다.
 
Overridable
속성이나프로시저가파생클래스에서같은이름의속성또는프로시저에의해재정의될수있다는것을지정합니다.
 
Overrides
속성이나프로시저에서기본클래스로부터상속된동일한이름의속성이나프로시저를재정의하도록지정합니다.
  ParamArray 프로시저매개변수가지정한형식의선택적요소배열임을지정합니다. ParamArray는매개변수목록의마지막매개변수에만사용할수있습니다.
 
Partial
클래스또는구조체선언이클래스또는구조체의부분정의임을나타냅니다.
 
Preserve
배열의차원을변경할때배열의내용이삭제되지않도록합니다.
 
Private
하나이상의선언된프로그래밍요소를포함된모든형식을비롯하여해당선언컨텍스트에서만액세스할수있도록지정합니다.
 
Protected
하나이상의선언된프로그래밍요소를고유한클래스나파생클래스에서만액세스할수있도록지정합니다.
 
Public
제한사항에액세스할수없는하나이상의선언된프로그래밍요소를지정합니다.
 
RaiseEvent
런타임시이벤트를발생시키거나이벤트를발생시킬때실행할코드를선언합니다.
 
ReadOnly
변수나속성을읽을수는있지만쓸수는없도록지정합니다.
 
Resume
오류처리후실행작업을다시진행할위치를지정합니다.
 
Shadows
선언된프로그래밍요소가기본클래스에서같은이름의요소나오버로드된요소집합을다시선언하고숨기도록지정합니다.
 
Shared
선언된프로그래밍요소하나이상이클래스나구조체의특정인스턴스가아니라해당클래스나구조체전체에연결되도록지정합니다.
 
Static
하나이상의선언된지역변수는해당변수가선언된프로시저가끝난후에도계속존재하고최신값을그대로유지하도록지정합니다.
 
Step
루프카운터의증가값을지정합니다.
 
Structure
전달된형식인수가값형식이되도록제네릭형식매개변수를제약하거나 Structure 문을정의합니다.
 
Text
같은텍스트문자가동일하게정렬되도록문자열비교메서드를설정합니다.
 
Then
테스트한조건이 True일경우컴파일하거나실행할문블록을소개합니다.
 
To
루프카운터나값일치범위의시작값과끝값을구분합니다.
 
True
조건테스트를전달하는 Boolean 값을나타냅니다.
 
TryCast
예외를 throw하지않는형식변환연산을정의합니다.

변환이실패하면 CTypeDirectCast 모두 InvalidCastException 오류를 throw합니다. 이로인해응용프로그램의성능이저하될수있습니다. TryCast는 Nothing(Visual Basic)을반환하므로, 발생가능한예외를처리할필요는없고반환된결과를 Nothing
대해테스트하기만하면됩니다.

CType 함수와 DirectCast 키워드를사용할때와같은방법으로 TryCast 키워드를사용합니다. 식을첫째인수로지정하고
변환할형식을둘째인수로지정합니다. TryCast는클래스와인터페이스같은참조형식에만작동합니다. 이키워드를사용하려면두형식사이에상속또는구현관계가있어야합니다. 즉, 한형식이다른형식에서상속되거나구현된경우라야합니다.
 
Unicode
Visual Basic에서선언되는외부프로시저의이름에관계없이모든문자열을유니코드값으로마샬링하도록지정합니다.

프로젝트외부에정의된프로시저를호출할때 Visual Basic 컴파일러에서는프로시저를정확히호출하는데필요한정보에액세스할수없습니다.
이정보에는프로시저위치, 프로시저식별방법, 프로시저호출시퀀스및반환형식, 프로시저에사용되는문자열문자집합등이포함됩니다.
Declare 문은외부프로시저에대한참조를만들고이러한필수정보를제공합니다.

Declare 문의charsetmodifier부분은외부프로시저를호출하는중문자열을마샬링하는작업과관련된문자집합정보를제공할뿐만아니라 Visual Basic이외부파일에서외부프로시저이름을검색하는방식에영향을줍니다. Unicode 한정자는 Visual Basic에서모든문자열을유니코드값으로마샬링하고검색중에이름을수정하지않고프로시저를조회하도록지정합니다.

문자집합한정자가지정되어있지않으면 Ansi가기본값입니다.
 
Until
Do루프의실행을종료하는조건을지정합니다.
 
When
Catch문에조건테스트를추가합니다.
 
While
Do루프의실행이계속될수있는조건을지정합니다.
 
Widening
변환연산자(CType)가클래스나구조체를원래클래스나구조체의모든가능한값을보유할수있는형식으로변환함을나타냅니다.
 
WithEvents
하나이상의선언된멤버변수가이벤트를발생시킬수있는클래스인스턴스를참조하도록지정합니다.
 
WriteOnly
속성을쓸수는있지만읽을수는없도록지정합니다.


행복한고수되세요.

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\












저작자 표시 비영리 변경 금지
신고
Posted by woojja
이전버튼 1 이전버튼

티스토리 툴바