vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: mögliche Datentypen beschränken 
Autor: Mika
Datum: 30.04.07 11:48

*thread mal wieder nach oben schieb

Moin.

So, nachdem ich es nun eine Weile hab schleifen lassen, hier nun mein Lösungsvorschlag. Damit kann man die Klasse schon einmal nur noch mit vergleichbaren Datentypenbenutzen, was soweit meinen Wünschen entsprach. Allerdings gibt es das Problem, dass man auch "höhere" Datentypen verwenden kann, sofern sie die passende Schnittstelle implementiert haben. Und das war es ja, was ich ausschließen wollte.
Die Klasse sollte Zugriffe auf eine Ini-Datei machen können, und die Daten zur besseren Validierung im jeweilis passenden Datentyp speichern können.
Da man den Datentyp T nicht beliebig umwandeln kann, musste intern mehr oder minder etwas zurecht gebastelt werden, womit ich noch nciht so ganz zufrieden bin. Für den Anfang funktioniert es aber immerhin. Vielleicht weiß ja wer, wie man es anständig lösen kann, ohne ein solches Gepfusche *selbstkritik üb*, oder eben auch nicht ...
Public Class Eintrag(Of T As IComparable(Of T))
	Private pDatei As String
	Private pSektion As String
	Private pName As String
	Private pStandard As Object
	Private pWert As Object
 
	Public Sub New(ByVal datei As IO.FileInfo, ByVal sektion As String, ByVal name _
  As String, ByVal standard As T)
		Me.pDatei = datei.FullName
		Me.pSektion = sektion
		Me.pName = name
		Me.pStandard = standard
		Me.pWert = standard
	End Sub
 
	Public Sub New(ByVal datei As IO.FileInfo, ByVal sektion As String, ByVal name _
  As String, ByVal standard As T, ByVal wert As T)
		MyClass.New(datei, sektion, name, standard)
		Me.pWert = wert
	End Sub
 
	Public Function Lesen() As Boolean
		Dim r As Integer
		Dim sb As New System.Text.StringBuilder(1024)
		Dim x As T ' Testvariable
 
		Try
			r = GetPrivateProfileString(Me.pSektion, Me.pName, Me.pStandard, sb, _
  sb.Capacity, Me.pDatei)
			Me.pWert = sb.ToString()
			x = CType(Me.pWert, T) ' Test, ob Umwandlung von Object in T problemlos 
' klappt
 
			Return True
		Catch ex As Exception
			Me.Reset()
			Return False
		End Try
	End Function
 
	Public Function Schreiben() As Boolean
		Try
			Return WritePrivateProfileString(Me.pSektion, Me.pName, Me.pWert, Me.pDatei)
		Catch ex As Exception
			Return False
		End Try
	End Function
 
	Public Sub Reset()
		Me.pWert = Me.pStandard
	End Sub
 
	Public Function IsOf(ByVal items() As T) As Boolean
		For Each item As T In items
			If item.ToString() = Me.pWert.ToString() Then Return True
		Next
 
		Return False
	End Function
 
	Public ReadOnly Property Datei() As String
		Get
			Return Me.pDatei
		End Get
	End Property
 
	Public ReadOnly Property Sektion() As String
		Get
			Return Me.pSektion
		End Get
	End Property
 
	Public ReadOnly Property Name() As String
		Get
			Return Me.pName
		End Get
	End Property
 
	Public ReadOnly Property Standard() As T
		Get
			Return CType(Me.pStandard, T)
		End Get
	End Property
 
	Public Property Wert() As T
		Get
			Return CType(Me.pWert, T)
		End Get
		Set(ByVal value As T)
			Me.pWert = CObj(value)
		End Set
	End Property
End Class
 
Friend Module API
	<Runtime.InteropServices.DllImport("kernel32.dll", SetLastError:=True)> _
	  Public Function GetPrivateProfileString( _
	   ByVal lpAppName As String, _
	   ByVal lpKeyName As String, _
	   ByVal lpDefault As String, _
	   ByVal lpReturnedString As System.Text.StringBuilder, _
	   ByVal nSize As Integer, _
	   ByVal lpFileName As String) As Integer
	End Function
 
	<Runtime.InteropServices.DllImport("kernel32.dll", SetLastError:=True)> _
	Public Function WritePrivateProfileString( _
	 ByVal lpAppName As String, _
	 ByVal lpKeyName As String, _
	 ByVal lpString As String, _
	 ByVal lpFileName As String) As Boolean
	End Function
End Module
Bye.
Mika
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
generische Klassen und Textbox1.132Nikoman04.04.07 11:40
Re: generische Klassen und Textbox748t.b.d05.04.07 09:10
Re: generische Klassen und Textbox741Nexpert05.04.07 11:38
Re: generische Klassen und Textbox808t.b.d05.04.07 12:00
Re: generische Klassen und Textbox861Nexpert05.04.07 21:10
Re: generische Klassen und Textbox738Melkor05.04.07 21:48
mögliche Datentypen beschränken850Mika05.04.07 19:59
Re: mögliche Datentypen beschränken875Melkor05.04.07 20:35
Re: mögliche Datentypen beschränken857Mika30.04.07 11:48
Re: mögliche Datentypen beschränken730Moderatorralf_oop30.04.07 12:04
Re: mögliche Datentypen beschränken729Mika30.04.07 12:06
Re: mögliche Datentypen beschränken762Moderatorralf_oop30.04.07 12:14

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel