송파에 있는  K 학원에서 데이터베이스 & 보안 과정을 듣고 있는데 마지막 과목인 VB.NET 강의를 콘솔 프로그램 기반으로  제어문 등을 하고 있어  많이 짜봤던 VB 수업이 진행되고 있으니 학원에서 오늘 시간날 때 만들어 보았습니다.

대개 폼에 컨트롤들을 배치하고 프로그래밍을 많이 작성하는데 제가 만들어 본 것은  폼에 생성하지 않고
코드로 프로그램 실행시 폼에 ListBox, TextBox, Button 컨트롤들이 생성되도록 만들어 보았습니다.

폼디자인

사용자 삽입 이미지

작성한 코드

아래의 코드 중에 생략된 부분이 좀 있긴 한데 그것은 조금만 생각해보면 아실 수 있을 것 같아 생략했습니다.
사용자 삽입 이미지

실행결과

사용자 삽입 이미지

 어떤가요. 그냥 그런가요? 아니면 새로운 것을 하나 알게되었는지요.^^
아무튼 생각을 달리하면 새로운 것들을 많이 알 수 있게 됩니다.
Posted by 원철연(체르니)
,

NET Framework Library에 있는 StreamReader Class를 이용했음.

 

StreamReader Class

 

StreamReader 클래스를 이용하기 위해서는 코드 맨 상단에 Imports System.IO
추가해 준다
.

폼디자인

사용자 삽입 이미지

 

코딩하기


Imports
System.IO

Public Class Form1

 

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

 

        Dim StreamToDisplay As StreamReader

 

        '읽을 txt 파일을 할당

        StreamToDisplay = New StreamReader("E:\test.txt")

 

        '파일 끝까지 읽어서 그 데이터를 txtRead.Text에 입력하라

        txtRead.Text = StreamToDisplay.ReadToEnd

 

        'StreamReader 객체를 닫고 관련 리소스를 release하라.

        StreamToDisplay.Close()

 

 

    End Sub

End Class

test.txt
파일의 내용은 RFC5090의 첫머리를 저장한 것이다.

Network Working Group                                   B. Sterman

Request for Comments: 5090                               Kayote Networks

Obsoletes: 4590                                            D. Sadolevsky

Category: Standards Track                                 SecureOL, Inc.

                                                             D. Schwartz

                                                         Kayote Networks

                                                             D. Williams

                                                           Cisco Systems

                                                                 W. Beck

                                                     Deutsche Telekom AG

                                                           February 2008

 

 

               RADIUS Extension for Digest Authentication

 

Status of This Memo

 

   This document specifies an Internet standards track protocol for the

   Internet community, and requests discussion and suggestions for

   improvements.  Please refer to the current edition of the "Internet

   Official Protocol Standards" (STD 1) for the standardization state

   and status of this protocol.  Distribution of this memo is unlimited.

 

 Abstract

 

   This document defines an extension to the Remote Authentication

   Dial-In User Service (RADIUS) protocol to enable support of Digest

   Authentication, for use with HTTP-style protocols like the Session

   Initiation Protocol (SIP) and HTTP.

실행하기

사용자 삽입 이미지

이상으로 StreamReader 클래스를 이용해서 간단하게 txt파일을 읽어오는 법을 알아보았다.

Posted by 원철연(체르니)
,

프로그램을 작성하다 보면 반복해서 처리해 줘야하는 경우가 종종 있다. 예를 들면 적게는 수십명에서 많게는 수 만명의 사람에게 SMS 문자메시지나 이메일을 보내줘야 하는 경우같이 반복되는 작업을 처리해야 할 때 사용하면 좋은 반복문에 대해서 알아보기로 하자.

1. For ~ Next
For문과 Next문 사이의 코드를 조건에 따라서 반복 처리한다.

1.1  형식

For 변수 = 초기치 To 최종치 [Step 증감값]


실행코드들

[Exit For]

Next [변수]

 

è  Step문이 생략된 경우에는 증감값은 1 된다.

 

1.2  예제

이중 For ~ Next문을 사용하여 “0123456789” 10번 출력되도록 함.

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

 

        Dim number, count As Integer

        Dim thisString As String = ""

 

        For number = 10 To 1 Step -1

            For count = 0 To 9

                thisString &= CStr(count)

            Next count

            thisString &= " "

            MsgBox("현재 number 값은 :" & CStr(number) & "현재
                    thisString
값은 :" & thisString & "이다")

 

        Next number

 

        MsgBox("For Next문을 수행한 최종 결과는 : " & thisString &
                "
이다.")

 

End Sub


[참고] For … Each문은 배열에 대해서 할 때 글을 올리도록 하겠습니다.

2. Do While Loop

For 반복문은 루핑 수행시 회수에 의존하므로 일반적인 조건들을 반영하기가 조금은 불편하다. 이럴 경우 어떤 조건이든 사용이 가능한 Do While문을 알아보자.

부연하자면 Do While문은 조건이 참인 동안(거짓일 될 때까지) 일정한 블록 내의 코드를 반복 처리한다.

2.1 형식

Do While 조건식


실행코드들


Loop

 

2.2 예제

TextBox1에 입력한 숫자로 합계가 10미만이 될때까지 반복하는 예제

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

 

'CInt()함수는 문자를 숫자로 변환해주는 함수

 

        Dim sum As Integer = 0

        Dim counter As Integer = 0

        Do While sum < 10

            sum = sum + CInt(TextBox1.Text)

            counter = counter + 1

            MsgBox("반복수는 : " & CStr(counter) & "현재 sum 값은 : "
                   & CStr(sum) & "
이다")

        Loop

        MsgBox(" 반복수는 :  " & CStr(counter) & " 번이다!")

 

End Sub

 

 

3. Do Loop While

이 반복문은 Do While Loop문과 동일하지만 다른 점은 루프 내의 문장이 최소한 한 번은 수행된다는 점이다.


4. Do Until Loop

Do Until문은 Do While문과는 달리 지정된 조건이 참이 될 때까지 루프 내의 코드들을 실행한다.

4.1 형식

Do Until 조건식


실행코드들


Loop

 

4.2 예제

 

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

 

        'TextBox1 입력한 숫자로 sum<10 일때까지 반복한다.

        'CInt()함수는 문자를 숫자로 변환해주는 함수

 

        Dim sum As Integer = 0

        Dim counter As Integer = 0

 

        If TextBox1.Text <> "" Then

            Do Until sum = 10

                sum = sum + CInt(TextBox1.Text)

                counter = counter + 1

                MsgBox("반복수는 : " & CStr(counter) & "현재 sum
                          값은 : " & CStr(sum) & "이다")

 

                'sum 값이 10보다 경우 Do Until ... Lop 탈출

                If sum > 10 Then

                    Exit Do

                End If

            Loop

            MsgBox(" 반복수는 :  " & CStr(counter) & " 번이다!")

 

        Else

            MsgBox("숫자를 입력해주세요.")

        End If

End Sub

 

5. Do Loop  Until

이 반복문은 Do Until .. Loop문과 동일하지만 다른 점은 루프 내의 문장이 최소한 한 번은 수행된다는 점이다.


예제 결과

사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지

실제로 폼디자인한 후  코드 입력하여 테스트를 해보시고 바꿔보시고 하시면 쉽게
익히실 수 있을 겁니다.
Posted by 원철연(체르니)
,

Select
Select
문은 하나의 식을 검사하여 여러 개의 실행 블록 중 하나를 선택하여 분기한다.

1.1 형식

Select Case 비교대상

Case 비교값 1

  처리코드 1

Case 비교값 2

  처리코드 2

Case Else

  처리코드

           End Select



1.2 예제

Select Case Val(TextBox1.Text)

 

                Case 91 To 100

                    MsgBox("아주 영어를 잘하는군요..")

                Case 81 To 90

                    MsgBox("영어를 잘하는군요..")

                Case 71 To 80

                    MsgBox("영어가 조금 부족합니다..")

                Case 61 To 70

                    MsgBox("영어가 많이 부족하군요..")

                Case Else

                    MsgBox("영어를 너무 못하는군요..")

 

      End Select

이번에는 실제 예제를 볼까요?

사용자 삽입 이미지
                                                 폼 디자인

사용자 삽입 이미지
                                       값이 입력되지 않았을 때

사용자 삽입 이미지
                                  숫자가 아닌 값이 입력되었을 때


사용된 함수 및 기능
Public Function IsNumeric(ByVal Expression As Object) As Boolean

Expression이 숫자형이면 참(True)을 숫자형이 아니면 거짓(False)을 나타낸다.

 

TextBox.Focus
텍스트박스의 입력창에 입력이 가능하도록 포인터를 위치시킨다.


If
문 테스트 클릭시 코딩된 부분
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        'TextBox1 값이 입력되어 있지 않으면 표시해주는 부분

        If TextBox1.Text = "" Then

            MsgBox("TextBox 값이 입력되지 않았습니다. 값을 입력해주세요.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)

            TextBox1.Focus()

 

            '입력된 값이 숫자형인지 파악해서 숫자입력 요청

        ElseIf IsNumeric(TextBox1.Text) = False Then

            MsgBox("TextBox 0~100 사이의 정수값을 입력해주세요.")

            TextBox1.Text = ""

            TextBox1.Focus()

 

            'TextBox1 0 ~ 100 사이의 값을 입력 요청 조건문

        ElseIf Val(TextBox1.Text) < 0 Or Val(TextBox1.Text) > 100 Then

            MsgBox("0에서 100 사이의 정수값을 입력해주세요.")

            TextBox1.Text = ""

            TextBox1.Focus()

 

        ElseIf Val(TextBox1.Text) < 90 Then

            MsgBox("당신은 공부를 열심히 해야겠군요.!!")

        End If

 

End Sub


Select
문 테스트 클릭시 코딩된 부분
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

 

        'TextBox1 값이 입력되어 있지 않으면 표시해주는 부분

        If TextBox1.Text = "" Then

            MsgBox("TextBox 값이 입력되지 않았습니다. 값을 입력해주세요.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)

            TextBox1.Focus()

 

            '입력된 값이 숫자형인지 파악해서 숫자입력 요청

        ElseIf IsNumeric(TextBox1.Text) = False Then

            MsgBox("TextBox 0~100 사이의 정수값을 입력해주세요.")

            TextBox1.Text = ""

            TextBox1.Focus()

 

            'TextBox1 0 ~ 100 사이의 값을 입력 요청 조건문

        ElseIf Val(TextBox1.Text) < 0 Or Val(TextBox1.Text) > 100 Then

            MsgBox("0에서 100 사이의 정수값을 입력해주세요.")

            TextBox1.Text = ""

            TextBox1.Focus()

        End If

 

 

        If TextBox1.Text <> "" Then

            Select Case Val(TextBox1.Text)

 

                Case 91 To 100

                    MsgBox("아주 영어를 잘하는군요..")

                Case 81 To 90

                    MsgBox("영어를 잘하는군요..")

                Case 71 To 80

                    MsgBox("영어가 조금 부족합니다..")

                Case 61 To 70

                    MsgBox("영어가 많이 부족하군요..")

                Case Else

                    MsgBox("영어를 너무 못하는군요. ")

 

            End Select

        End If

 

End Sub

Posted by 원철연(체르니)
,

오늘은 MsgBox에 대해서 보다 심도있는 내용을 올려봅니다.
결과를 먼저 볼까요?

사용자 삽입 이미지
폼 1개, Button1, button2, Text1 박스 한 개를 이용해서 만들어 보았습니다.
각각의 Button컨트롤을 누르면 메시지 박스가 뜨도록 처리하였는데요.

먼저 Button1을 누르면
사용자 삽입 이미지
코드는
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim msg, button, title '메시지 박스 인수들에 넣어줄 변수 선언
        msg = "첫번째 테스트입니다. 줄을 바꿔볼까요?" & Chr(10) & "줄이 바뀌었네!!"
        button = vbYesNoCancel + vbInformation
        title = "메시지박스 첫번째 테스트"
        MsgBox(msg, button, title)

End Sub


두번째 버튼을 클릭하면

사용자 삽입 이미지
코드는
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim msg, button, title, response
        msg = "두번째 테스트입니다." & Chr(10) & "프로그래밍 배우기가 쉬운가요?
                   아니면 어려운가요?"
        button = vbYesNo + vbInformation
        title = "메시지박스 두번째 테스트"

        response = MsgBox(msg, button, title) '메시지 박스에서 버튼클릭결과를 받기 위함

        '메시지박스 결과에 따른 후속처리 요청하는 부분
        '이런 식으로 메시지 박스 선택한 것에 따라 DB에 데이터를 저장,삭제,조회 등
        '원하는 작업을 처리할 수 있도록 한다.
        If response = MsgBoxResult.Yes Then
            TextBox1.Text = "프로그래밍 고수가 될 소질이 있으시군요."
        Else
            TextBox1.Text = "열심히 하다보면 고수가 될 수 있을 겁니다."
        End If
End Sub

그냥 봐서는 모르겠지요.
자세히 알아 볼까요?

MsgBox 함수 정의
Public Function MsgBox( _

   ByVal Prompt As Object, _

   Optional ByVal Buttons As MsgBoxStyle = MsgBoxStyle.OKOnly, _

   Optional ByVal Title As Object = Nothing _

) As MsgBoxResult


Buttons 인수에 사용되는 상수

사용자 삽입 이미지
Title 인수는 메시지 박스의 타이틀을 나타냄

MsgBox 결과 상수(vB6.0 과 비교하여)
사용자 삽입 이미지

마지막으로 Chr(10)은 무엇인지 궁금할텐데요. 줄바꾸기를 해주는 겁니다.
그럼 그림으로 이해를 해볼까요?
사용자 삽입 이미지

이해가 되시는지요? 시간나실 때 직접 위와 같은 코드를 입력해 보시고 상수들도 변경해서 해보시고 자신만의 처리루틴을 만들어서 메시지박스 결과에 따라서
후속 작업을 해보도록 하는 것은 어떨까요?
그럼 오늘은 이정도로 마치겠습니다.

Posted by 원철연(체르니)
,
오늘은 폼 디자인하는 법에 대해서 간략하게 다뤄볼까 합니다.

먼저 새로운 프로젝트를 엽니다.
사용자 삽입 이미지















프로젝트명을 MyShopping으로 생성합니다.
생성된 프로젝트에서 Form1.vb를 클릭하여 컨트롤들을 배치합니다.

먼저 폼에 배치한 컨트롤들의 속성들을 다음과 같습니다.
사용자 삽입 이미지

















그러면 배치한 그림을 볼까요?
사용자 삽입 이미지























위 그림에서 폼에 어떻게 그림을 넣었을까 궁금하시진 않은가요? BackGroundImage에서
원하는 그림을 선택해주면 적용이 됩니다.
자신이 직접 포토샾같은 디자인툴로 배경 이미지를 만들어 폼 바탕으로 해서 프로그램을
만들면 괜찮겠죠^^;;

(바탕그림은 d&shop을 캡쳐해서 수정해서 사용했습니다. 혹시라도 문제가 있으시면
 제게 댓글이나 이메일(cywon11@empal.com)으로 주시면 삭제토록 하겠습니다.)

다음으로  GroupBox1, GroupBox2의 바탕을 투명하게 만들어 보겠습니다.
GroupBox의 속성상자에서 변경해주면 되는데요. 아래와 같이 하시면 됩니다.

사용자 삽입 이미지


























Web 탭에서 Transparent(투명한)을 선택해주면 됩니다. 쉽지요?
이렇게 해서 최종적으로 간단하게 만들어 본 화면은 아래와 같습니다.
사용자 삽입 이미지


이상으로 간략하게 폼 디자인을 알아봤습니다.
ListBox와 ComboBox는 BackColor를 투명하게 하는 기능을 지원하지 않고 Button컨트롤은 지원되는데 제가 실력이 달려서 찾지를 못했습니다. 혹시 아시는 분은 댓글 남겨주시면 감사하겠습니다. 그럼 오늘은 이만하지요.
Posted by 원철연(체르니)
,