VISUAL BASIC HAKKINDA BIRCOK ORNEK

 
Bu konu ile benzer olabilecek diğer forum sayfaları
 
 
 
 
registry erişim...
 
Kullandığımız sistemlerin neredeyse bütün ayarları hep sistem kaydı yani registry de tutluyor. Peki biz bu nimetten faydalanamazmıyız ?
 
Artık programlarımızda ki bütün ayarları registry de tutmanı geldi...
 
Registry Erişim Sınıfının Kodları
__________________________________________________ ______________
 
Menüde "Project/Add Class Module" ile yeni bir sınıf oluşturun ve aşağıdaki kodlar içine kopyalayın
 
 
'----------------------------------------------------------------------------------------------
'Açıklama : Registry Erişim Sınıfı
'Sınıf Adı : C_Reg.cls
'Versiyon : 2.0
'Tarih : 05.02.2004
'----------------------------------------------------------------------------------------------
Option Explicit
 
Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_MULTI_SZ = 7
Const ERROR_SUCCESS = 0&
 
Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Const LANG_NEUTRAL = &H0
 
Public Enum Reg_HKEY
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_PERFORMANCE_DATA = &H80000004
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
End Enum
 
'Reg Api---------------------------------------------------------------------------------------
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
'----------------------------------------------------------------------------------------------
Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long
'----------------------------------------------------------------------------------------------
 
Dim AktifKok As Reg_HKEY
Dim AktifYol As String
Dim RegAnahtar As Long
Dim HataNo As Long
 
'----------------------------------------------------------------------------------------------
'Sınıf Prop
Public Property Get RegKok() As Reg_HKEY
RegKok = AktifKok
End Property
 
Public Property Let RegKok(ByVal Deger As Reg_HKEY)
If RegAnahtar <> 0 Then YoluKullanimdanKaldir
AktifKok = Deger
End Property
 
Public Property Get RegYol() As String
RegYol = AktifYol
End Property
 
Public Property Let RegYol(ByVal Deger As String)
If RegAnahtar <> 0 Then YoluKullanimdanKaldir
AktifYol = Deger
End Property
 
Public Property Get HataOlustu() As Boolean
HataOlustu = (HataNo <> 0)
End Property
 
Public Property Get HataNumarasi() As Long
HataNumarasi = HataNo
HataNo = 0
End Property
 
Public Property Get HataSistemMesaji() As String
Dim Donen As String
 
Donen = Space(200)
 
FormatMessage FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, HataNo, LANG_NEUTRAL, Donen, 200, ByVal 0&
 
HataSistemMesaji = Left(Donen, InStr(Donen, Chr(0)) - 1)
End Property
'----------------------------------------------------------------------------------------------
'Reg Okuma Fonksiyonları
Public Function SayiOku(DegerAdi As String) As Long
Dim Donen As Long, DegerTipi As Long
 
If RegAnahtar = 0 Then
If Not YoluKullanimaHazirla Then Exit Function
End If
 
HataNo = RegQueryValueEx(RegAnahtar, DegerAdi, 0&, DegerTipi, Donen, 4)
 
If HataNo = ERROR_SUCCESS Then
If DegerTipi = REG_DWORD Then
SayiOku = Donen
End If
End If
 
End Function
 
Public Function MetinOku(DegerAdi As String, Optional Varsayilan As String = "") As String
Dim Donen As String, DegerTipi As Long
Dim MetinBoyut As Long
 
If RegAnahtar = 0 Then
If Not YoluKullanimaHazirla Then
MetinOku = Varsayilan
Exit Function
End If
End If
 
HataNo = RegQueryValueEx(RegAnahtar, DegerAdi, 0&, DegerTipi, ByVal 0&, MetinBoyut)
If HataNo = ERROR_SUCCESS Then
If DegerTipi = REG_SZ Or DegerTipi = REG_EXPAND_SZ Or DegerTipi = REG_MULTI_SZ Then
Donen = String(MetinBoyut, Chr(0))
 
HataNo = RegQueryValueEx(RegAnahtar, DegerAdi, 0&, 0&, ByVal Donen, MetinBoyut)
If HataNo = ERROR_SUCCESS Then
MetinOku = Left(Donen, MetinBoyut - 1)
Else
MetinOku = Varsayilan
End If
End If
Else
MetinOku = Varsayilan
End If
 
End Function
 
Public Function ByteDiziOku(DegerAdi As String) As Byte()
Dim Donen() As Byte, DegerTipi As Long
Dim DiziBoyut As Long
 
If RegAnahtar = 0 Then
If YoluKullanimaHazirla Then Exit Function
End If
 
HataNo = RegQueryValueEx(RegAnahtar, DegerAdi, 0&, DegerTipi, ByVal 0, DiziBoyut)
If HataNo = ERROR_SUCCESS Then
If DegerTipi = REG_BINARY Then
ReDim Donen(0 To DiziBoyut - 1) As Byte
 
HataNo = RegQueryValueEx(RegAnahtar, DegerAdi, 0&, DegerTipi, Donen(0), DiziBoyut)
If HataNo = ERROR_SUCCESS Then
ByteDiziOku = Donen
End If
End If
End If
 
End Function
 
'----------------------------------------------------------------------------------------------
'Reg Kaydetme Fonksiyonları
Public Function SayiKaydet(DegerAdi As String, Sayi As Long) As Boolean
If RegAnahtar = 0 Then
If Not YoluKullanimaHazirla Then Exit Function
End If
 
HataNo = RegSetValueEx(RegAnahtar, DegerAdi, 0, REG_DWORD, Sayi, 4)
 
SayiKaydet = (HataNo = ERROR_SUCCESS)
End Function
 
Public Function MetinKaydet(DegerAdi As String, Metin As String) As Boolean
If RegAnahtar = 0 Then
If Not YoluKullanimaHazirla Then Exit Function
End If
 
HataNo = RegSetValueEx(RegAnahtar, DegerAdi, 0, REG_SZ, ByVal Metin, Len(Metin))
 
MetinKaydet = (HataNo = ERROR_SUCCESS)
End Function
 
Public Function ByteDiziKaydet(DegerAdi As String, dizi() As Byte) As Boolean
If RegAnahtar = 0 Then
If Not YoluKullanimaHazirla Then Exit Function
End If
 
HataNo = RegSetValueEx(RegAnahtar, DegerAdi, 0, REG_BINARY, dizi(LBound(dizi)), UBound(dizi) - LBound(dizi) + 1)
 
ByteDiziKaydet = (HataNo = ERROR_SUCCESS)
End Function
 
'----------------------------------------------------------------------------------------------
'Diğer Fonksiyonlar
Public Function AltAnahtarlarListesi() As String()
Dim Donen() As String
Dim Anahtarisim As String * 255
Dim SiraNo As Long
 
If RegAnahtar = 0 Then
If Not YoluKullanimaHazirla Then Exit Function
End If
 
Do
 
HataNo = RegEnumKey(RegAnahtar, SiraNo, Anahtarisim, 255)
 
If HataNo = ERROR_SUCCESS Then
ReDim Preserve Donen(0 To SiraNo) As String
 
Donen(SiraNo) = Left(Anahtarisim, InStr(Anahtarisim, Chr(0)) - 1)
Else
If SiraNo = 0 Then 'Hiç Alt Anahtar Yoksa
Exit Function
Else
HataNo = ERROR_SUCCESS
AltAnahtarlarListesi = Donen
Exit Function
End If
End If
SiraNo = SiraNo + 1
Loop
 
End Function
 
Public Function AltDegerAd(SiraNo As Long, Tip As Long) As String
Dim DegerAd As String, Deger As String
Dim DegerAdBoyut As Long, DegerBoyut As Long, HataNo As Long
 
If RegAnahtar = 0 Then
If Not YoluKullanimaHazirla Then Exit Function
End If
 
DegerAdBoyut = 255
DegerBoyut = 255
DegerAd = Space(DegerAdBoyut)
Deger = Space(DegerBoyut)
 
HataNo = RegEnumValue(RegAnahtar, SiraNo, DegerAd, DegerAdBoyut, ByVal 0&, Tip, ByVal Deger, DegerBoyut)
 
If HataNo = ERROR_SUCCESS Then
 
AltDegerAd = Left$(DegerAd, DegerAdBoyut) '& Left$(Deger, DegerBoyut)
 
End If
End Function
 
 
Public Function DegerSil(Deger As String) As Boolean
If RegAnahtar = 0 Then
If Not YoluKullanimaHazirla Then Exit Function
End If
 
HataNo = RegDeleteValue(RegAnahtar, Deger)
 
DegerSil = (HataNo = ERROR_SUCCESS)
End Function
 
'----------------------------------------------------------------------------------------------
'AktifKok ve AktifYol u Kullanmayan Fonksiyonlar
Public Function AnahtarSil(Kok As Reg_HKEY, Yol As String, AltAnahtarAdi As String) As Boolean
Dim rA As Long
 
If RegOpenKey(Kok, Yol, rA) = ERROR_SUCCESS Then
If RegDeleteKey(rA, AltAnahtarAdi) = ERROR_SUCCESS Then
AnahtarSil = True
End If
 
RegCloseKey rA
End If
 
End Function
 
Public Function AnahtarOlustur(Kok As Reg_HKEY, Yol As String) As Boolean
Dim rA As Long
If RegCreateKey(Kok, Yol, rA) = ERROR_SUCCESS Then
RegCloseKey rA
AnahtarOlustur = True
End If
End Function
 
'----------------------------------------------------------------------------------------------
'Yerel Fonksiyonlar
Private Function YoluKullanimaHazirla() As Boolean
 
If RegAnahtar <> 0 Then
YoluKullanimdanKaldir
End If
 
HataNo = RegOpenKey(AktifKok, AktifYol, RegAnahtar)
 
YoluKullanimaHazirla = IIf(HataNo = ERROR_SUCCESS, True, False)
End Function
 
Private Sub YoluKullanimdanKaldir()
RegCloseKey RegAnahtar
RegAnahtar = 0
End Sub
 
Private Sub Class_Terminate()
If RegAnahtar <> 0 Then RegCloseKey RegAnahtar
End Sub
 
 
 
Nasıl Kullanılır
__________________________________________________ ___________
 
Yeni Bir proje oluşturun daha önceden oluşturduğumuz sınıfı projeye ekleyin forma bir command button ekleyin ve aşağıdaki kodu yazın yada kopyalayın
 
 
 
Private Sub Command1_Click()
 
Dim r As New C_Reg 'Yeni bir registry erişim sınıfı tanımlar
 
r.RegKok = HKEY_LOCAL_MACHINE 'Kullanılacak kök
r.RegYol = "Software\BenimAnahtarim" 'Kullanılacak Yol
 
r.AnahtarOlustur HKEY_LOCAL_MACHINE, "Software\BenimAnahtarim" 'Eğer bu anahtar önceden varsa bunun kullanılmasına gerek yok
 
r.MetinKaydet "Deneme", "Merhaba" 'bir string değerini kaydeder
 
MsgBox r.MetinOku("Deneme") 'kaydetdiğimiz değeri oku
__________________________________________________ _______________________________________________
 
SAYI TABANI...
 
girdiğiniz onluk tabandaki sayıyı istediğin tabana çeviren proğram.
 
 
 
Option Explicit
Dim isaret As String
Dim taban As Byte
 
'*************************************************
Private Sub Command1_Click()
If isaret <> "rakam_girilmedi" Then
döndür
End If
End Sub
 
'*************************************************
Public Function cevir(SAYI As Integer) As String
If SAYI = 10 Then cevir = "A"
If SAYI = 11 Then cevir = "B"
If SAYI = 12 Then cevir = "C"
If SAYI = 13 Then cevir = "D"
If SAYI = 14 Then cevir = "E"
If SAYI = 15 Then cevir = "F"
 
End Function
 
'*************************************************
Private Sub Form_Load()
taban = 2
End Sub
 
'*************************************************
Private Sub mnuÇıkış_Click()
End
End Sub
 
'*************************************************
Private Sub Option1_Click()
taban = 2
End Sub
 
'*************************************************
Private Sub Option2_Click()
taban = 16
End Sub
 
'*************************************************
Private Sub Option3_Click()
taban = 10
End Sub
 
'*************************************************
Private Sub Option4_Click()
taban = 8
End Sub
 
'*************************************************
Private Sub döndür()
Dim c As Integer
Dim A As Byte
Dim kalan(20) As Integer
Dim sonuc(20) As Integer
 
If Text1 = "" Then
MsgBox "sayı girmeyi unuttunuz..."
ElseIf Text1 <> "" Then
Text3 = ""
A = 1
sonuc(A) = Text1
Do
A = A + 1
sonuc(A) = sonuc(A - 1) \ taban
kalan(A) = sonuc(A - 1) Mod taban
 
Loop Until sonuc(A) + 1 < taban
 
If taban > sonuc(A) Then
A = A + 1
kalan(A) = sonuc(A - 1) Mod taban
End If
 
For c = A To 2 Step -1
Text3 = Text3 + IIf(kalan(c) > 9, cevir(kalan(c)), Str(kalan(c)))
 
Next c
 
End If
End Sub
 
 
'*************************************************
Private Sub Text1_Change()
 
If isaret = "rakam_girilmedi" Then
Text1.Text = ""
End If
 
End Sub
 
'*************************************************
Private Sub Text1_KeyPress(KeyAscii As Integer)
 
If (((KeyAscii < 48) Or (KeyAscii > 57)) And (KeyAscii <> 8) And (KeyAscii <> 13)) Then
 
MsgBox "rakam girmelisiniz", 16, "UYARI"
 
If KeyAscii = 13 Then
If isaret <> "rakam_girilmedi" Then
döndür
End If
End If
 
 
isaret = "rakam_girilmedi"
Else
isaret = "rakam_girildi"
End If
 
__________________________________________________ ________________________________________
 
VİSUAL BASİC.NET İLE WEP KAMERA PROGRAMI YAZMA
 
Elinizde her hangi bir web camera varsa bunu sisteminize bağlayın...
 
Visual Basic Projesi açın..
__________________________________________________ __________________
 
Formun üzerinde picturbox ekleyin... ve name ini camSrc yapın
 
formun load ve close una aşağıdaki kodu ekleyin..
 
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
 
MapWebcamToWindow(camSrc.Width, camSrc.Height, camSrc.Handle.ToInt32)
 
End Sub
 
 
 
Private Sub Form1_Closed(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Closed
 
CloseWebcam()
 
End Sub
 
 
programınıza bir modul ekleyin
 
genel api,structure ları ekliyeceğiz...
Net te api declare için
 
Imports System.Runtime.InteropServices 'namspace
Imports Microsoft.VisualBasic.Compatibility
 
'vb6 control için 'refler den Microsoft.VisualBasic.Compatibility ekle
 
Temel Değişkenler
__________________________________________________ ________________
 
#Region "Teme Değişkenler"
Public lwndC As Integer
 
Public Const WS_CHILD As Integer = &H40000000
 
Public Const WS_VISIBLE As Integer = &H10000000
 
Public Const SWP_NOMOVE As Short = &H2S
 
Public Const SWP_NOZORDER As Short = &H4S
 
Public Const WM_USER As Short = &H400S
 
 
Public Const WM_CAP_DRIVER_CONNECT As Integer = WM_USER + 10
 
Public Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_USER + 11
 
Public Const WM_CAP_SET_VIDEOFORMAT As Integer = WM_USER + 45
 
Public Const WM_CAP_SET_PREVIEW As Integer = WM_USER + 50
 
Public Const WM_CAP_SET_PREVIEWRATE As Integer = WM_USER + 52
 
 
'The video format is defined in terms of a bitmap, so we must define our standard bitmap structure
#End Region
 
 
Structure Tanımları
__________________________________________________ _________________
 
Public Structure BITMAPINFOHEADER
 
Dim biSize As Integer
 
Dim biWidth As Integer
 
Dim biHeight As Integer
 
Dim biPlanes As Short
 
Dim biBitCount As Short
 
Dim biCompression As Integer
 
Dim biSizeImage As Integer
 
Dim biXPelsPerMeter As Integer
 
Dim biYPelsPerMeter As Integer
 
Dim biClrUsed As Integer
 
Dim biClrImportant As Integer
 
End Structure
 
Public Structure BITMAPINFO
 
Dim bmiHeader As BITMAPINFOHEADER
 
Dim bmiColors() As Integer
 
End Structure
 
 
Apilerimizi Declare Edelim
__________________________________________________ _______________
 
 
CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> Public Function SetWindowPos(ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer
End Function
 
CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> Public Function SendMessage(ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Short, ByVal lParam As Integer) As Integer
End Function
 
CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> Public Function SendMessageAsBitMap(ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As BITMAPINFO) As Integer
 
End Function
 
'can alıcı apilerimiz
 
CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> Public Function capCreateCaptureWindowA(ByVal lpszWindowName As String, ByVal dwStyle As Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Short, ByVal hWndParent As Integer, ByVal nID As Integer) As Integer
 
End Function
 
CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> Public Function capGetDriverDescriptionA(ByVal wDriver As Short, ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, ByVal cbVer As Integer) As Boolean
 
End Function
 
 
 
Fonksiyonlarımız ,bunlar olmadan nasıl görüntü abilirizki :-)
__________________________________________________ _______________
 
Function capDriverConnect(ByVal lwnd As Integer, ByVal i As Short) _
As Boolean
capDriverConnect = SendMessage(lwnd, WM_CAP_DRIVER_CONNECT, i, 0)
End Function
 
Function capDriverDisconnect(ByVal lwnd As Integer) As Boolean
capDriverDisconnect = SendMessage(lwnd, WM_CAP_DRIVER_DISCONNECT, _
0, 0)
End Function
Function capSetVideoFormat(ByVal hCapWnd As Integer, ByRef BmpFormat _
As BITMAPINFO, ByVal CapFormatSize As Integer) As Boolean
capSetVideoFormat = SendMessageAsBitMap(hCapWnd, _
WM_CAP_SET_VIDEOFORMAT, CapFormatSize, BmpFormat)
End Function
 
Function capPreview(ByVal lwnd As Integer, ByVal f As Boolean) As _
Boolean
capPreview = SendMessage(lwnd, WM_CAP_SET_PREVIEW, f, 0)
End Function
 
Function capPreviewRate(ByVal lwnd As Integer, ByVal wMS As Short) As _
Boolean
capPreviewRate = SendMessage(lwnd, WM_CAP_SET_PREVIEWRATE, wMS, 0)
 
End Function
 
 
 
Procedurler
__________________________________________________ _______________
 
#Region "Prosedures"
 
 
Sub MapWebcamToWindow(ByRef lWidth As Integer, ByRef lHeight As Integer, ByRef hWnd As Integer)
Dim lpszName As New VB6.FixedLengthString(100)
Dim bmp As BITMAPINFO
With bmp.bmiHeader
.biSize = Len(bmp.bmiHeader)
.biWidth = 320
.biHeight = 240
.biPlanes = 1
.biBitCount = 24
End With
capGetDriverDescriptionA(0, lpszName.Value, 100, Nothing, 100)
lwndC = capCreateCaptureWindowA(lpszName.Value, _
WS_VISIBLE Or WS_CHILD, 0, 0, lWidth, lHeight, hWnd, 0)
If capDriverConnect(lwndC, 0) Then
capPreviewRate(lwndC, 66)
capPreview(lwndC, True)
capSetVideoFormat(lwndC, bmp, Len(bmp))
SetWindowPos(lwndC, 0, 0, 0, bmp.bmiHeader.biWidth, _
bmp.bmiHeader.biHeight, SWP_NOMOVE Or SWP_NOZORDER)
End If
End Sub
 
Sub CloseWebcam()
capDriverDisconnect(lwndC)
End Sub
 
#End Region
 
 
 
Artık çalıştıralım projeyi.
__________________________________________________ ________________________________________________
 
KODLARLA DATABASE OLUŞTURMAK VE VE VAROLAN BİR DATABASE'E YENİ ALAN EKLEMEK
 
'Project/Reference menüsünden Microsoft DAO 3.61 Library i _ ekle ve aşağıdaki kodları kullan. Bir tane de Command button ekle ok? )
 
 
 
Private Sub Form_Load()
Dim NewDB As Database
Set NewDB = CreateDatabase("db1.mdb", dbLangGeneral, dbVersion70)
Dim NewTbl As TableDef
Set NewTbl = NewDB.CreateTableDef("Tablo1")
Dim NewField As Field
Set NewField = NewTbl.CreateField("alan1", dbText, 25)
NewField.Attributes = dbRequired ' bu alanı gerekli gör
NewTbl.Fields.Append NewField
NewDB.TableDefs.Append NewTbl
 
End Sub
 
Private Sub Command1_Click()
Dim db As Database
Dim tbl As TableDef
Dim alan As Field
Set db = OpenDatabase("db1.mdb", dbOpenTable)
Set tbl = db.TableDefs("Tablo1")
Set alan = tbl.CreateField("alan2", dbText, 25)
 
alan.Attributes = dbRequired ' bu alanı gerekli gör
tbl.Fields.Append alan
 
End Sub
__________________________________________________ _____________________________________
PASCAL ÜÇGENİ...
 
Bu programı kullanarak pascal üçgeninde herhangi bir noktayı bulabilirsiniz
Form'a bir tane label koyun ve gerisini programa bırakın
 
 
 
label1.autosize=true
label1.left=0
label1.top=0
label1.caption="0"
x=10 'eleman sayısı
y=1 'bu her zaman en sondaki sayı olacak
for i=1 to x
label1.caption=label1.caption & (x.y)/i
y=(x.y)/i
next
__________________________________________________ __________________________________________
YARDIM DOSYALARINA COMMON DİALOG İLE BAĞLANTI KURMAK...
 
Project-->Components-->Microsoft Commont Dialog Control `ü components`i seçin . CommonDialog1`i formunuza ekleyin .
Project-->Project1 Properties (? Hangi proje ismini vermişseniz )-->Help File Name `den hazırlamış olduğunuz *.hlp ( ? Hangi help dosya ismini vermişseniz ) dosyasını giriniz . App nesnemizin HelpFile özelliği tasarım aşamasında set edilmiş olur . Ayrıca setup hazırlarken help dosyalarını da otamatik olarak ekletmiş oluruz .
 
Forma Components
 
Sub Command1_Click()
With CommonDialog1
.HelpFile=App.HelpFile
.HelpCommand=11 ?içindekiler sekmesini görüntüler
.ShowHelp
End With
End Sub
?*******Herhangi bir konu sayfasına erişmek istersek
Sub Command2_Click()
With CommonDialog1
.HelpFile=App.HelpFile
.HelpContext=1
.HelpCommand=1 ?HelpContext = 1 numaralı konu sayfasının görünmesi
.ShowHelp
End With
End Sub
__________________________________________________ ___________________________________________
PARABOL DENKLEMİ VE ÖZELLİKLERİNİ BULMA..
 
girilen ikinci derece denklemin köklerini, fonksiyonun tepe noktasını, tanım ve değer kümesinin bulunması için hazırlanmş basit ama çok kullanışlı bir uygulama
 
 
 
 
Dim a
Dim b
Dim c
Dim del
Dim x1
Dim x2
Dim range
Dim dela
 
Private Sub Command1_Click()
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
del = b * b - (4 * a * c)
'************************************************* ********************************************
If del >= 0 Then
x1 = Round((-b + Round(Sqr(del), 3)) / Abs(2 * a), 4)
x2 = Round((-b - Round(Sqr(del), 3)) / Abs(2 * a), 4)
Label4.Caption = "Kökler = " & x1 & " , " & x2
Else
dela = Abs(del)
x1 = Round(-b / Abs(2 * a), 4) & "+" & Round(Round(Sqr(dela), 4) / Abs(2 * a), 4) & "i"
x2 = Round(-b / Abs(2 * a), 4) & "-" & Round(Round(Sqr(dela), 4) / Abs(2 * a), 4) & "i"
Label4.Caption = "Kökler = " & x1 & " , " & x2
End If
'************************************************* ********************************************
Label5.Caption = "f(x) Vertex = (" & Round(-b / (2 * a), 4) & " , " & Round(-del / (4 * a), 4) & ")"
'************************************************* ********************************************
Label6.Caption = "f(x) Simetri ekseni = " & -b / 2 * a
'************************************************* ********************************************
Label7.Caption = "f(x) Tanım kümesi = R"
'************************************************* ********************************************
If a > 0 Then
range = "( + sonsuz , " & Round(-del / (4 * a), 4) & " ]"
Else
range = "[ " & Round(-del / (4 * a), 4) & " , - sonsuz)"
End If
Label8.Caption = "f(x) Değer kümesi = " & range
End Sub
 
Private Sub Label7_Click()
 
End Sub
__________________________________________________ _____________________________________________
CRYSTAL REPORT 8 İLE RAPORLAMA...
 
CRYSTAL REPORT ile istediğiniz kaydın raporlaması artık çok kolay.
 
 
'AŞAĞIDAKİ SUB DA
'
'FRM=CRViewer 'IN BULUNDUĞU FORM
'
'PATH=.RPT UZANTILI RAPOR DOSYANIZIN YOLU
 
'SQL=SORGUNUZ
 
'CNN1=TANIMLANMIŞ VE DB YE BAĞLANTISI YAPILMIŞ BİR CONNECTION NESNESI
'
'RS= TANIMLI BİR RECORDSET
"""""""""""""""""""""""""""""""""""""""""""""" """
'KULLANIMI
'RAPORLA RAPORFORMUM,"C:\RAPOR\RAPORUM.RPT","SELECT * FROM TABLOM WHERE ADI='MUSTAFA KOÇER'"
 
'modüle yapıştır
 
Public CrxApp As New CRAXDRT.Application
Public Report As New CRAXDRT.Report
 
Public Sub raporla(frm As Form, Path As String, sql As String)
 
On Local Error Resume Next
Set rs = Cnn1.Execute(sql)
If rs.RecordCount < 1 Then
MsgBox "Hiçbir Kayıt Bulunamadı...", vbCritical, "UYARI"
 
Exit Sub
End If
 
frm.Show
Set Report = CrxApp.OpenReport(Path)
Report.DiscardSavedData
frm.CRViewer1.EnableGroupTree = True
frm.CRViewer1.DisplayGroupTree = False
 
 
Report.Database.SetDataSource rs10
frm.CRViewer1.ReportSource = Report
frm.CRViewer1.ViewReport
frm.CRViewer1.Zoom (100)
frm.CRViewer1.Visible = True
 
End Sub
__________________________________________________ _________________________________________
HATA YAKALAMA...
 
[Kullanıcı ile Dost Hata Mesajları
 
 
Program yazarken hata mesajlarını nasıl organize ediyorsunuz? Kullanıcı hata mesajlarından bir şey anlayabiliyor mu? Yada kullanıcı hata mesajı ekranda belirince ne yapacağını biliyor mu?
 
 
Burada anlattığım yöntem ile program içinde oluşan hata mesajlarını daha anlaşılır biçime sokabiliriz. Böylece hem kullanıcı hata ile karşılaşınca ne yapacağını bilir, hemde siz hatayı çözerken nereden başlayacığınızı bilirsiniz.
 
 
Genel olarak özetleyecek olursak bir VB projesinin, projedeki tüm formların ve formlardaki tüm fonksiyonların bir ismi vardır. Kullanıcı göreceği hata mesajında şöyle bir yapı ile karşılaşır.
 
vbProjeİsmi.Formunİsmi.Fonksiyonunİsmi
 
Burada ismi olmayan tek şey kod satırlarıdır. Satırlara isimleri de hatayı ararken biz ekleyeceğiz. Böylece tam bir hata mesajı ekranda belirecek, okunduğunda anlaşılan ve yazılımcıyı yönlendiren bir hata mesajı.
 
 
 
Şimdi yeni proje açıp formun üzerine bir buton koyun. Butonun ismi btnHata olacak. Aşağıdaki kodu formun General Declerations bölümünden itibaren kopyalayın. Kod içindeki yorum satırlarına dikkat edin ve gerekli yerleri isteğinize göre değiştirmeyi unutmayın
 
 
Const CLASS_NAME = "frmAdresDefteri" 'formun ismini veriyoruz.
 
Private Sub btnHata_Click()
 
On Error GoTo Exit_proc ' Hata durumunda Exit_proc kismina gidecek.
 
 
Const METHOD_NAME = CLASS_NAME & ".btnHata_Click" 'Bu fonksiyonun ismini veriyoruz.
 
'Bu durumda elimizde formun ismi ve ilgili fonksiyonun ismi olmuş oluyor.
 
'**************************
 
'Buradan sonra yapmak istediginiz işin kodlari gelecek
 
ren = 10 / 0
 
'**************************
 
Exit_proc:
 
Call EndProcedure(METHOD_NAME)
 
End Sub
 
 
Şimdi bir module ekleyip aşağıdaki kodu yapıştırın. Bu kod ile hata mesajları daha anlaşılır biçime sokulmaktadır. Eğer istenirse daha da genişletilerek farklı işler yapması sağlanabilir.
 
 
Public Sub EndProcedure(sMethod As String, Optional sMessage As String)
 
Dim sText As String
Dim lErrNo As Long
Dim sErrSource As String
Dim sErrDescription As String
Dim lERL As Long
If Err.Number <> 0 Then
 
'Hatanin ayrintilarini kaydediyoruz, Boylece eger MTS kullaniyorsaniz Error nesnesi
'kaybolunca bilgisi elimizde kalir
lErrNo = Err.Number
sErrSource = Err.Source
sErrDescription = Err.Description
 
lERL = Erl
sText = App.Title & "." & sMethod 'Uygulamanin basliginida ekleyelim
 
'Eger baska bilgi varsa onuda ekliyoruz
 
If sMessage <> "" Then sText = sText & sMessage
 
'Okunmasi kolay bir hale getirelim
 
sText = "Hata yeri : " & sText & vbCrLf & _
"Hata satiri : " & lERL & vbCrLf & _
"Hata icerigi : " & sErrDescription & vbCrLf & _
"Lutfen falan kisi ile kontak kurunuz."
 
'Ve hatayi kullaniciya gosterelim
 
Err.Raise lErrNo, sErrSource, vbCrLf & sText
End If
 
End Sub
 
 
Bu işlemlerden sonra projeyi çalıştırıp butona basın. Ekranda şöyle bir mesaj belirecek.
 
 
 
Runtime-Error '11':
Hata Yeri : <Proje ismi>.<form ismi>.btnHata_Click
Hata satiri : 0
Hata Icerigi : Division by zero
Lutfen falan kisi ile kontak kurunuz.
 
Bu hata kullanıcı tarafından size bildirildikten sonra hatanın hangi formda ve hangi fonksiyonda olduğunu bileceksiniz. Eğer butonun fonksiyonunu aşağıdaki gibi değiştirirsek hatanın olduğu satırıda bilmiş olacağız.
 
 
 
Private Sub btnHata_Click()
 
On Error GoTo Exit_proc ' Hata durumunda Exit_proc kismina gidecek.
 
 
Const METHOD_NAME = CLASS_NAME & ".btnHata_Click" 'Bu fonksiyonun ismini veriyoruz.
 
'Bu durumda elimizde formun ismi ve ilgili fonksiyonun ismi olmus oluyor.
 
'**************************
 
'Buradan sonra yapmak istediginiz isin kodlari gelecek
 
10:
 
20: ren = 10 / 0 'hata olabilecek satirlari markaliyoruz
 
'Onceden markalamaya gerek yok fakat hata durumunda markalayarak hatayi arayabiliriz.
 
30:
 
'**************************
 
Exit_proc:
 
Call EndProcedure(METHOD_NAME)
 
End Sub
 
 
Hata mesajı şu şekilde ekranda belirecektir.
 
 
Runtime-Error '11':
Hata Yeri : <Proje ismi>.<form ismi>.btnHata_Click
Hata satiri : 10
Hata Icerigi : Division by zero
Lutfen falan kisi ile kontak kurunuz.
 
 
Bu mesajdan sonra yazılım uzmanlarınızdan hangisi sıfıra bölme işlemi için o kodu oraya yazdıysa tek ayak üstünde bir saat bekleme cezası almalıdır.
 
 
EndProcedure fonksiyonu içinde istersek hatayı veritabanında bir tabloya bile kaydedebiliriz. Bu tamamı ile size kalmış. Eğer tam bir hata kontrolü istiyorsanız MS SQL Server üzerinde hazırlayacağınız bir "stored procedure" ve değişimlerde e-posta atma özelliğini kullanarak hatanın size direk ulaşmasını da sağlayabilirsiniz.
 
__________________________________________________ _____________________________________________
 
DOSYA ERİŞİM MODLARI..
 
Kullanılacak Komutlara Giriş
--------------------------------------------------------------------------------
 
 
Bu örneğimde dosyaya direkt olarak veri yazma ve okuma komutlarını kullandım. Bunun için ilk önce bu komutların ne işe yaradığını ve nasıl kullanıldığını görelim?
 
YAZMA MODLARI
--------------------------------------------------------------------------------
 
 
1 ? Output Modu
--------------------------------------------------------------------------------
 
Dosya sıralı erişim modunda sadece yazma işlemi için açılır. Veriler tek yönlü taşınır ve okuma işlemine izin verilmez.
Yazma işlemi birkaç farklı teknikle yapılabilir.Bunlardan birincisi PRINT metodudur. Print metodunda bilgiler yan yana veya alt alta aralarında hiçbir ayıraç kullanılmadan yazılır.
Print #1,bilgi1,bilgi2,bilgi3 û  Veriler yan yana yazılır.
Print #1, bilgi1
Print #1, bilgi2
Print #1, bilgi3 û  Veriler alt alta yazılır.
Write metodu ise ikinci bir seçenektir. Bu metot ile yazma işlemi yaptığımızda hedef dosyaya gönderdiğimiz bütün bilgiler ?bilgi? şeklinde çift tırnak ile ayrılırlar. Yine print metodunda olduğu gibi tek satırda gönderilen bilgiler hedef dosyaya da tek satırda yazılırlar, alt alta write komutu verilerek yazılan bilgiler ise hedef dosya üzerinde de alt alta bulunurlar.
Fakat print metodundan farklı olarak write ile tek satırda gönderilen bilgiler hem çift tırnakla belirtilir hem de her bilgi arasına virgül işareti yazılarak ayrılırlar.
Output metodu ile yeni bir kayıt yaptığınızda, yeni bilgiler eski kayıtların üzerine yazılacaktır. Bo mod ile işlem yaparken eski verilerinizin kaybolacağını veya zarar göreceğini bilmeniz gerekir.
 
2 ? Append Modu
--------------------------------------------------------------------------------
 
 
Output modunda bulunan bütün özellikleri kullanabilen bir sıralı erişim modudur. Print ve write komutları output modunda olduğu gibi kullanılırlar.
Output modu ile yaptığınız tüm işlemleri Append modu ile yapabilirsiniz. Aralarında tek bir fark vardır o da Append modunda yeni kayıt yapıldığında kendini dosya sonuna eklemesidir. Yani Append modunda işlem yapıldığında eski kayıtlarınız silinmez ve yeni kayıt dosya sonuna kendini otomatik olarak ekler. Böylece hem Output modunda kayıt yapmış hem de verilerinizi kaybetmemiş olursunuz.
 
3 ? Random Modu
--------------------------------------------------------------------------------
 
 
Sıralı erişim dosyalarından oldukça farklı bir yapıya sahiptir. Bir veritabanı yapısına uygundur ve düşük seviyeli bir veritabanı için rahatlıkla kullanılabilir.
Bu moda yapılan her kayıt bir kayıt numarasına sahiptir. Ayrıca her kayıt belli bir uzunluktadır ve belirtilen uzunluğu aşan kayıtlarda artık bölüm hedef dosyaya yazılmaz. Dosya açma işlemi sırasında dosya kayıt bilgisinden hemen sonra kayıtların karakter uzunlukları belirtilerek her kaydın bir kayıt numarası alması sağlanır.
Kullanımı : Open App.Path & ?/volkan.txt? For Random As #1 Len=15 şeklindedir. Satırın sonunda bulunan Len = 15 bilgisi her kaydın ne kadar karaktere sahip olduğunu gösterir. Böylece sistem hedef dosyadaki bütün kayıtları okur ve bunları 15 karakterlik parçalara bölerek birer sıra numarası verir. Bu sıra numarasıyla daha sonra kayıtlar okunabilir.
Gönderdiğimiz veriler belirtilen kayıt uzunluğundan fazla ise değişken tanımlamamıza bağlı olarak ya kayıtların sonundaki fazlalık atılarak kayıt yapılır yada kayıt tam yapıldığı halde bir bölümü daha sonraki kayıt içinde yer alır.
Eğer gönderdiğimiz bilgiler kayıt uzunluğundan kısaysa eksik bölge kadar boşluk karakteri kayıt sonuna eklenerek kayıt uzunluğu olması gereken boyuta getirilir. Bu özellik ile kayıtlarımız belli bir düzende sıralanır ve veritabanı gibi kullanılabilir.
Random modunda PUT metodu kullanılır.
 
4 ? Binary Modu
--------------------------------------------------------------------------------
 
 
Binary dosyalama modu diğer modlara göre çok daha gelişmiş uygulamalar için tasarlanmıştır. Bütün özel dosya biçimleri Binary modu ile kayıt edilebilir ve içinde metin tabanlı dosyalama modlarına göre daha karmaşık bilgiler barındırabilir. Her kayıt metin değeri olarak 1 karakterlik yer kaplar. Random erişim modunda olduğu gibi her kayıt bir kayıt numarasına sahiptir fakat sadece 1 karakterlik kayıtlar yapabildiğimiz için bu kayıt numaraları aslında hedef bilginin dosya içindeki karakter sırasıdır.
Binary erişim modu ile her karaktere ayrı ayrı erişebilir, düzenleyebilr veya silebilirsiniz. Bu özelliğinden dolayı metin tabanlı dosya biçimleri dışındaki bütün özel dosya biçimlerine Binary mod ile erişmek zorunda kalırız. Örneğin bir .EXE veya .BMP dosyası oluşturmak istediğimde kullanacağımız dosya erişim biçimi kesinlikle Binary mod olmalıdır. Aksi taktirde oluşturduğumuz dosya işlemci veya işleyici program tarafından doğru olarak okunamaz, işlenemez.
Kullanımı :Put #1, 1, bilgi1 şeklindedir. ?, 1 ,? kayıt numarasıdır. Yani bu bilgi1?in 1. karakter olduğunu belirtir.
 
OKUMA MODLARI
--------------------------------------------------------------------------------
 
 
1 ? Input Modu
--------------------------------------------------------------------------------
 
 
Input modunda dosya okumak için iki teknik kullanabiliriz. Bunlardan birincisi Input okuma modudur.
Bu teknikte dosya açıldıktan sonra verilen her input komutu dosyada bir satırın okunması anlamına gelir. Satır numarası verilmediği halde bir input komutundan sonra gelen diğer input komutu sıradaki satırın okunması anlamına gelir. Dosya kapanmadığı sürece her input komutunda bir sonraki satır okunacaktır. Bu durum dosya açıldıktan sonra her satırın sadece bir defa okunabilmesi anlamına gelir. Ayrıca hedef satıra ulaşmak için o satırdan önceki bütün satırları da okumak zorunda kalırız. Dosyayı tümüyle okuyacak ve bir değişkene atayacak olursak input tekniği etkili bir çözüm olabilir, fakat dosya üzerinde özel işlemler yapmak istiyorsak input tekniği bize çeşitli sorunlar çıkartacaktır.
Input modunda kullanacağımız ikinci teknik ise Line Input. Bu teknikte hedef satır numarası verilebilir ve diğer kayıtlarla uğraşılmadan direkt olarak hedef satır okunur. İstendiğinde daha önce okunmuş bir satır tekrar okunabilir, okunmuş olan satırdan da daha önceki bir satıra ulaşılabilir. Metin tabanlı kayıtlar oluşturmuşsak input modu ve line input tekniği işinize yarayacaktır.
 
2 ? Random Modu
--------------------------------------------------------------------------------
 
 
Random modu yine bu moda kaydedilmiş olan verileri okumak için kullanılır. GET tekniği kullanılır.
Kullanımı : Get #1, 1, bilgi1 û  şeklindedir.
 
3 ? Binary Modu
--------------------------------------------------------------------------------
 
 
Binary modu yine bu moda kaydedilmiş olan verileri okumak için kullanılır. GET tekniği kullanılır.
Kullanımı : Get #1, 1, bilgi1 û  şeklindedir.
 
KODLARIN KULLANIMINA ÖRNEK
__________________________________________________ __________
 
Private Sub command1_Click()
Dim bilgi As String
Open App.Path & ?/volkan.txt? For Input As #1
Do While Not EOF(1)
Bilgi = bilgi & Input(1,#1)
Loop
Close #1
MsgBox (bilgi)
End Sub
 
Private Sub Command1_Click()
Dim bilgi1 As Byte
Dim bilgi2 As Byte
Dim bilgi3 As Byte
Dim bilgi4 As Byte
Open App.Path & ?/volkan.txt? For Binary As #1
Get #1, 1, bilgi1
Get #1, 10, bilgi2
Get #1, 20, bilgi3
Get #1, 30, bilgi4
Close #1
MsgBox (CStr(Chr(bilgi1))&vbCrLf_
&CStr(Chr(bilgi2))&vbCrLf_
&CStr(Chr(bilgi3))&vbCrLf_
&(CStr(Chr(bilgi4)))
 
End Sub
__________________________________________________ __________________________________________
VB.NET İLE RAST GELE STRİNG ÜRETME..
 
Bu uygulama birçok yerde işimize yarayabilecek bir ?Rastgele Kod Üretici? dir. Rastgele üretilmiş bir koda birçok yerde ihtiyaç duyabiliriz. Örneğin; web sitenizin üye kayıtlarında üye adaylarının gerçek email adreslerini girmelerini garantilemek isteyebilirsiniz. Bunu sağlamanın en basit yolu, kişinin verdiği email adresine rastgele ürettiğiniz bir kodu göndermektir. Böylece üye adayından, üyelik işlemlerinin tamamlanarak hesabın aktive olabilmesi için, email adresine gönderdiğiniz aktivasyon kodunu ?üyelik aktivasyon? sayfanızda girmesini isteyebilirsiniz. Eğer email adresi doğru değilse aktivasyon kodunu edinemeyeceğinde üyeliği de geçerli olmaz.
 
Rastgele kod üretebilmek için kullanacağımız en önemli sınıf ?System? isim alanı (namespace) içerisinde bulunan ?Random? sınıfıdır (class). Bu sınıfı kullanarak kod içerisinde görünmesini istediğimiz karakterler dizisinin boyutu kadar rastgele tamsayı üreteceğiz.
 
Kullanacağımız diğer bir sınıf ise System.Text isim alanı içerisinde bulunan StringBuilder sınıfıdır. Yapacağımız işlem bir metin birleştirme döngüsü içermekte ve metin birleştirme işlemlerinde StringBuilder sınıfı, string tipine oranla daha fazla performans sağlamaktadır.
 
<B> Uygulamayı bir fonksiyon olarak hazırlayacağız.</B>
 
Fonksiyon üreteceği ?rastgele kod? un kaç karakter uzunlukta olması istendiğini ?codeLength? parametresiyle alacak. Ürettiği ?codeLength? kadar karakter uzunluğundaki ?Rastgele Kod?u da string veri tipinde, fonksiyonun çağırıldığı yere döndürecek.
 
Private Function GenerateCode(ByVal codeLength As Integer) As String
 
End Function
 
Fonksiyonda ilk olarak ?sb? değişken adıyla, ?rastgele kod?u yapılandıracağımız StringBuilder nesnesini ve ikinci olarak da ?objRandom? adıyla, rastgele sayı üretecek olan Random nesnesini yapılandıracağız.
 
Dim sb As New System.Text.StringBuilder
 
Dim objRandom As New System.Random
 
Sıra ?Rastgele Kod?umuz içinde yer almasını istediğimiz karakterleri bir metin dizisi olarak tanılamaya geldi. Ben bu örnekte ?A-Z?, ?a-z? ve ?0-9? arası karakterleri kullandım. Siz isterseniz uygulamayı zenginleştirmek için farklı karakterler de kullanabilirsiniz.
 
Dim strChars() As String = {"A", "B", "C", "D", "E", "F", "G", "H",
 
......................................
 
"l", "m", "n", "o", "p", "q", "r", "s", "z"}
 
Şimdi işlemlere başlayabiliriz. Önce rastgele üreteceğimiz sayı aralığını bulalım. Yukarıdaki karakterler ?strChars? adında bir metin dizisinde tutulmaktalar. Diziler 0 indeksle başladıklarından rastgele üretilecek olan minimum rakam 0 olmalıdır. Üretilecek maksimum rakam ise dizinin en son elemanının indeksi olmalıdır. Dizinin en büyük indeksli elemanının indeks bilgisini
 
Dim maxRand As Integer = strChars.GetUpperBound(0)
 
koduyla aynı anda hem bu değeri tutacak olan ?maxRand? adında bir değişken tanımlayarak dizinin ?GetUpperBound(0)? metoduyla alırız.
 
?Rastgele Kod?un üretilmesi, istenilen kod uzunluğu için her bir basamağın rastgele oluşturulmasıyla sağlanır. Bunun için, 0 ile ?Rastgele Kod? için kullanılacak karakter dizisinin en büyük indeksi arasında rastgele bir sayı objRandom.Next(maxRand) metoduyla üretilir ve bu değer ?rndNumber? değişkenine atanır.
 
Dim rndNumber As Integer = objRandom.Next(maxRand)
 
Karakter dizisindeki rastgele bir eleman, edinilen ?rndNumber? sayısını indeks olarak kullanarak ?strChars(rndNumber)? ifadesiyle elde edilir ve bu karakter sb.Append metoduyla ?sb? nesnesine eklenir.
 
sb.Append(strChars(rndNumber))
 
Eğer 10 karakter uzunluğunda bir ?rastgele kod? istenirse, önce birinci basamak için rastgele bir karakter üretilir, daha sonra ikinci basamak için ve bu böylece 10?a kadar devam eder. Bu üretilen karakterler ?sb? değişkeni içerisinde ard arda eklenir.
 
For i As Integer = 0 To codeLength - 1
 
Dim rndNumber As Integer = objRandom.Next(maxRand)
 
sb.Append(strChars(rndNumber))
 
Next
 
En son olarak da StringBuilder nesnesinin içerinde yapılandırılmış olan ve rastgele karakterlerden meydana gelen sonuç, string veri tipine sb.ToString() metoduyla dönüştürülerek fonksiyon sonlandırılır ve değer fonksiyonun çağırıldığı yere döndürülür.
 
Return sb.ToString()
 
Aşağıdaki örnek kod ve yukarıdaki ekran görüntüsü, metin birleştirme işlemlerinde gerçekten çok iyi performans gösteren StringBuilder sınıfının, string ile karşılaştırıldığı bir console (konsol) uygulamasıdır.
 
 
Private Function GenerateCode(ByVal codeLength As Integer) As String
Dim sb As New System.Text.StringBuilder
 
Dim objRandom As New System.Random
 
Dim strChars() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I", _
"J", "K", "L", "M", "N", "O", "P", "Q", "R", _
"S", "T", "U", "V", "W", "X", "Y", "Z", _
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", _
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", _
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
 
Dim maxRand As Integer = strChars.GetUpperBound(0)
 
For i As Integer = 0 To codeLength - 1
 
Dim rndNumber As Integer = objRandom.Next(maxRand)
 
sb.Append(strChars(rndNumber))
 
Next
 
 
Return sb.ToString()
 
End Function
 
 
----------------------------------------------
 
 
Sub Main()
 
Dim newCode As String
 
newCode = GenerateCode(10)
 
Console.WriteLine("Üretilen kod : {0}", newCode)
 
Console.ReadLine()
 
End Sub
__________________________________________________ __________________________________________________
VİSUAL BASİC DE KONTROL KOMUTLARI...
 
Visual Basic'de Kontrol Komutları
Kontrol komutlari programcilar tarafindan sikca kullanilan belirli ifadeleri kontrol etmek veya bazi sartlarin gerçeklesip gerçeklesmedigini kontrol etmek amaciyla kullanilan komutlardir. Biz burada en çok kullanilan komutlarin üzerinde duracagiz.
If Kontrol Yapisi :
Genel olarak bu komut yapisi su sekilde yazilir.
If Kosul Then
Kosul dogru ise yapilmasi istenen islemler.
Endif
Kullandigimiz her If kontrolu için mutlaka bir Endif kullanmaliyiz. Bu kontrol yapisinin sonlandigini belirtir.
Örnek:
If ad="FATIH" Then
Maas=10000000
Endif
Eger kosul gerçeklesmemis ise yapilmasi istenen bazi islemler varsa o zaman su sekilde bir kontrol yapisini kullanabiliriz.
If Kosul Then
Kosul dogru ise yapilmasi istenen islemler.
Else
Kosul yanlis ise yapilmasi istenen islemler.
Endif
Ayni anda bir kaç kosul için karsilastirma yapilmak isternirse;
If Kosul Then
Kosul dogru ise yapilmasi istenen islemler.
Elseif Kosul1 Then
Kosul1 dogru ise yapilmasi istenen islemler.
Elseif Kosul2 Then
Kosul2 dogru ise yapilmasi istenen islemler.
Else
Bütün kosullar yanlis ise yapilmasi istenen islemler.
Endif
yapisi kullanilir. Bu yapida mutlaka Else blogunun bulunmasina gerek yoktur. Burada eger Kosul dogru ise ilk Then?den sonraki satirlar çalistirilarak Elseif ifadesine kadar icra edilirler. Daha sonra Endif ifadesinden sonraki satir icra edilir.Eger Kosul yanlis ise Kosul1 ifadesi kontrol edilir.Dogru ise buradaki then den sonraki satirlar çalistirilir. Yanlis ise Kosul2?ye bakilir. Eger bu kosulda yanlis ise Else ifadesinden sonraki satirlar çalistirilir.
Örnek :
If Isim="Ali" Then
Maas=Maas * 1.2
Elseif Isim="Murat" Then
Maas=Maas * 1.4
Elseif Isim="Kemal" Then
Maas=Maas * 1.1
Endif
Örnek :
If Bolen=0 Then
Msg.Text=" Bolen sayi sifir olamaz."
Else
Sonuc= Sayi / Bolen
Msg.Text = Sonuc
Endif
Ornek :
If name="Ali" AND no="1301920035"
Not=4
ElseIf name="Ahmet" AND no="1301940023" Then
Not=3
ElseIf name="Hakan" AND no="1301930045" Then
Not=2
ElseIf name="Hatice" AND no="1301940005" Then
Not=7
Endif
Select Case:
Bu kontrol yapisinda sadece bir degiskenin durum kontrolü yailir.Kontrolü yapilacak degiskenin genel olarak alabilecegi degerler belirli ise bu yapinin kukllanilmasi If yapisina göre daha avantajlidir. Yazilis biçimi genel olarak asagidaki sekildeki gibidir
Select Case Degisken
Case Deger1
Degisken=Deger1 oldugu durumda yapilmasi istenen islemler
Case Deger2
Degisken=Deger2 oldugu durumda yapilmasi istenen islemler
Case Else
Degisken yukaridaki degerler den hicbirine esit degil ise yapilacak islemler
End Select
Kullandigimiz her Select ifadesi için bir End Select kullanmaliyiz.
Örnek :
Select Case No
Case 1304
Name="Murat Tuna"
Case 1306
Name="Ayse Sinem"
Case 1307
Name="Hakan Kaya"
Case 1312
Name="Abdullah Kahyali"
Case 1324
Name="Hatice Uygun"
End Select
Örnek :
Select Case Ay
Case 1 Max_date=31
Case 2
Dim Artik as Integer
Artik = Yil Mod 4
If Artik=0 Then
Max_date=29
Else
Max_date=28
Endif
Case 3
Max_date=31
Case 12
Max_date=31
Case Else
Mesaj="Error : Bir yilda 12 ay vardir."
End Select
 
__________________________________________________ _____________________________________
VB DE KES,KOPYALA,YAPIŞTIR..
 
Kes, Kopyala, Yapıştır
Bir TextBox'ta Kes, Kopyala, Yapıştır, Geri Al işlemlerinin yapılması için iki tane çok kolay yol mevcut. Aşağıdaki örnekler SendKeys methodunu kullanıyor.
İşte birinci örnek:
Sub DoEditThing(whatThing As String, onWhat As Object)
Select Case whatThing
Case "Copy"
onWhat.SetFocus
SendKeys "^C"
Case "Cut"
onWhat.SetFocus
SendKeys "^X"
Case "Paste"
onWhat.SetFocus
SendKeys "^V"
Case "Undo"
onWhat.SetFocus
SendKeys "^Z"
End Select
End Sub
Aşağıdaki kod aynı işi yapan ikinci örnek:
Sub DoEditThing(whatThing As String, onWhat As Object)
Dim Send$
Select Case whatThing
Case "Copy"
Send = "^C"
Case "Cut"
Send = "^X"
Case "Paste"
Send = "^V"
Case "Undo"
Send = "^Z"
End Select
If Len(Send) Then
onWhat.SetFocus
SendKeys Send
End If
End Sub
Şimdi, yukarıdaki iki örnekten birini formunuza ekledikten sonra aşağıdaki kod satırıyla istediğiniz işlemi yapabilirsiniz.
DoEditThing Copy|Cut|Paste|Undo*, On_Which_Object**
* - Bir tanesini seçin; Copy, Cut, Paste veya Undo
** - TextBox'ı seçin; (ör. Text1)
System Dizinini Bulmak
Örneğin INI dosyalarını kullanan bir uygulama yazdığınızda, çoğunlukla \System dizinine ihtiyaç duyarsınız. Genellikle bu dizinin yolu "C:\Windows\System\" şeklindedir.
1. Fakat bazı kullanıcılar windows'u farklı sürücü veya dizine kurabilirler. Ve işte bu sorunu çözmek için kullanacağınız kod aşağıda.
Bu kodu bir Module'nin declarations section kısmına kopyalayın:
Declare Function GetSystemDirectory Lib "Kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
 
Function VBSysDir() As String
Dim Gwdvar As String, Gwdvar_Length As Integer
Gwdvar = Space(255)
Gwdvar_Length = GetSystemDirectory(Gwdvar, 255)
VBSysDir = Left(Gwdvar, Gwdvar_Length)
End Function
Daha sonra aşağıdaki kodu kullanarak \System dizininin yolunu bulabilirsiniz:
MsgBox VBSysDir & " is the System Directory",
 
__________________________________________________ __________________________________________________ ______________________
10 AFFEDİLMEZ PROGRAMCI HATASI...
 
1.option explicit ifadesini kullanmamak. (option explicit bas modülü içine ilk satira yazilir ve program içindeki tüm degiskenlerin birer birer tanimlanmasini sart kosar. Programci örnek olarak Dim sozcuk As String ifadesi ile sozcuk degiskenini programa tanitmadan bu degiskeni kullanamaz.)
 
2.Tüm degiskenler ve fonksiyonlar için gereken veri türlerini deklere etmemek.
Özellikle gerekli olan veri türünü deklere etmezseniz tüm türleri içine alan VARIANT
deklere etmis olursunuz ki VARIANT veri türü 32 byte yer kaplar.
 
3. Okunmasi zor kodlar yazmak. (okuyacak kisi bir insan degil derleyicidir.)
2 yada 3 ekrandan fazla prosedür yazmak. (Sub ... End Sub)
Kurallara yada adlandirma ilkelerine uymayan degisken, nesne yada prosedür tanimlamak.
VB'nin tekelinde olan degisken yada nesne adlarini kullanmaya çalismak.
 
4. Normalde kullanicinin girmesi gereken degerleri kod içine sabit degerler halinde yazmak (hard-coding). Bunlar bazi sayilar yada dosya yada dizin adlari olabilir. Örnek: Her kullanici Windows'unu WINDOWS adli dizine kurmak zorunda degildir (Bu bazen WIN bazen WIN98 vs olabilir)
Programinizi yazarken Windows dizininin adini kendi bilgisayarinizdaki gibi düsünmeyin...
 
5. Kullanicinin ihtiyaçlarina gereken özeni göstermemek.
Programlama sayginligina uygun dil kullanmamak. (Siz yerine Sen hitap sözcügü kullanimi gibi). Kullaniciya ters gelebilecek hata mesajlari vermek.
Form tasarlarken kullanim kolayligini düsünmemek.
Kontrollerin göze hos gelmeyecek yerlesimi
Standart Windows tasarimina uymamak. (Menü tasarimi, kontrol butonlarinin genelde yukarida olmasi, ALT-F4 ile programin kapatilmasi, Ctrl-O dosya açmak, Ctrl-P yazdirmak vs için kullanilmasi) Bu standartlar zaten Windows kullanan kisilere kullanimi kolay programlar üretmenize neden olacaktir. Ve dikkat ederseniz birçok program bu standartlari takip eder, siz de etmelisiniz.
 
6. Hata yapmasi kolay kodlar yazmak.
Yeterli hata kontrolleri yazmamak
Kullanicinin yapmasi muhtemel hatalari öngörememek ve olusmasi halinde bunlari giderememek
 
7. Tekrar kulanilabilecek kodlar yazmamak. Yazdiginiz ani kurtaracak gelisigüzel kodlar yazmak yapmamaniz gereken önemli kurallardan biridir, çünkü ileride benzer kod bloklarina ihtiyaciniz olacaktir ve yeri geldiginde o kod blogunun ne ise yaradigini anlayabilmeniz gerekir.
Basit kodlarla yapilabilecek isler için kontroller, kütüphaneler veya ActiveX kontroller kullanmak ta bir hatadir. Bu tarz kod yazma gereksiz büyüklük meydana getirir. Her dll yada ocx kontrolu setup disketinize ekstra yük demektir.
Alisilmis isler için farkli arabirimler tasarlamak.
 
 
8. Yetersiz dökümantasyon.
Gerekli açiklamalari kodlar arasina yazmamak
 
9. Veri türlerinin uygunsuz kullanmak.
Dizileri gerekli büyüklüklerde üretmemek.
Degiskenlerin geçerlilik alanlarini gereginden fazla genis tutmak. Örnek olarak sadece tek bir fonksiyon içinde kullanilan bir degiskeni Public olarak deklere etmek programin çalismasi boyunca bellekte kalacagi için gereksiz yer isgal edecektir.
 
10. Diger programcilardan çaba göstermeksizin faydalanmak yada gereken yerde yardim istememek.
Baskalarinin ürettiklerini kendinizinmis gibi göstermek
 
__________________________________________________ ________________________________

ALINTIDIR
 
 

 
 

 ~ 

Bu konunun linki : 

Yukarıdaki linki arkadaşlarınıza göndermek için kullanabilirsiniz ve bu sayfada; VISUAL BASIC HAKKINDA BIRCOK ORNEK hakkında bilgiler nedir yazıları veya şiirleri gibi sözleri veya resimleri VISUAL BASIC HAKKINDA BIRCOK ORNEK siteleri gibi benzer birçok forum konularını bulabilirsiniz.

 ~ 

Son Forum Mesajları

Kaynak linkimizi belirtmek koşulu ile her türlü bilgiyi kopyalayabilirsiniz. Forum içerisinde yazılan tüm mesajların hukuki sorumlulukları mesajları yazanlara aittir. Üyeler, üyelik sözleşmesi gereği bu kuralı kabul etmiş sayılır. Ziyaretçilerimiz bu forumu kullanmadan önce Forum Kurallarını okumak zorundadırlar. Aksi durumda meydana gelecek bütün olumsuz durumlardan ziyaretçilerin bizzat kendileri sorumludur. Sitemizde telif, kişi haklarına; yasalara aykırı olduğunu düşündüğünüz bir konu görürseniz bize aşağıdaki iletişim adresinden ulaşabilirsiniz.

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 960

© 2006-2020 ilgiliFORUM.com