vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

Suche Visual-Basic Code
Type Anweisung in VB.Net 
Autor: Schmunzelhase
Datum: 23.10.11 09:54

Guten Morgen,

Kann mir bitte jemand einen Tipp geben, wie man eine derartige Type-Anweisung aus VB6 nach VB.Net(2008) bekommt?


Type tDaten
Teil_A(10) as String
Teil_B as Integer
end Type

Global gDaten(10) as tDaten


Im Code könnte man dann zum Beispiel ein Element gDaten(4).Teil_A(7) ansprechen.

Danke im Voraus
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Type Anweisung in VB.Net 
Autor: Manfred X
Datum: 23.10.11 11:43

Hallo!

In VB.Net kannst Du eine entsprechende Structure
erstellen. Die Länge des Array könntest im Konstruktor
festlegen, ebenso die Initialisierung der Array-Elemente.
(String ist in Net ein Referenztyp).
Public Structure tDaten
    Dim Teil_A() As String
    Dim Teil_B As Integer
 
    Public Sub New(ByVal Length As Integer)
         If Length < 1 Then Length = 1
         Array.Resize(Teil_A, Length)
         For i As Integer = 0 To Length - 1
             Teil_A(i) = String.Empty
         Next i
    End Sub
End Structure
 
'Array:
Dim glob(10) As tDaten
For i As Integer = 0 To glob.Length - 1
    glob(i) = New tDaten(10)
Next i
MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Type Anweisung in VB.Net 
Autor: Schmunzelhase
Datum: 23.10.11 14:41

Mahlzeit,

zunächst recht herzlichen Dank.
Funktioniert tatsächlich (obwohl ich nicht weiss was ich getippt habe). Wie kompliziert das jetzt aussehen wird, kann man vielleicht daran erkennen, wenn man mal das Originalproblem betrachtet.

Type tFilm
    Datum As Double 'Datum der Vorstellung + zeit
    FilmLang As Byte   'Flag auf Überlänge '1=normal 2=lang
    Saal As Byte 'welchers Kino
    User(1 To 2) As Byte 'welcher Mitarbeiter
    Info(1 To 2) As String * 150 '1=kasse 2=technik
    KATPersonen(1 To 20) As Boolean    'typ personen
    KATwetter As Integer   'typ wetter
    PointWoche As Integer   'setze auf woche
    PointListe As Integer 'setze auf liste in woche
    status As Byte 'wie steht film '0=leer 1=eingefügt 2=zum Verkauf  3=im _
      verkauft 4=abgerechnet
    FreiKarte(0 To 20) As Integer '
    KartenPreis(1 To 4) As Single '1=Normal 2=ermäßigt 3=kinder 4=frei 
    ' 5=UNormal 6=Uermäßigt
    KartenStart(1 To 4) As Long '1=normal 2=ermäßigt
    Besucher(1 To 4) As Long
    Gilde As Long
    Nebenverkauf(0 To 20) As Single
    Bon As Boolean
End Type
 
Type tKasse
    Titel(1 To 20) As tFilm
    GenaralInfo As String * 200
    Geld(1 To 3) As Single '1=Anfang 2=Diff 3=meine zählung
    Fertig As Boolean 'Tag abgerechnet
End Type
 
 
Global gKasse(0 To 1820) As tKasse
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Type Anweisung in VB.Net 
Autor: Manfred X
Datum: 23.10.11 19:54

Hallo!

Structure ist ein Werttyp. Vielleicht kannst Du für Deine
Zwecke einen Referenztyp verwenden (--> Class).

Arrays sind in VB.Net immer nullbasiert.
Dim User(1 to 2) klappt deshalb nicht.

    Public Class tFilm
        Public Datum As Double 'Datum der Vorstellung + zeit
        Public FilmLang As Byte   'Flag auf Überlänge '1=normal 2=lang
        Public Saal As Byte 'welchers Kino
        Public User(2) As Byte 'welcher Mitarbeiter
        Public Info(150) As String         '1=kasse 2=technik
        Public KATPersonen(20) As Boolean    'typ personen
        Public KATwetter As Integer   'typ wetter
        Public PointWoche As Integer   'setze auf woche
        Public PointListe As Integer 'setze auf liste in woche
        Public status As Byte 'wie steht film '0=leer 1=eingefügt 2=zum Verkauf _
           3=im _
        'verkauft 4=abgerechnet
        Public FreiKarte(20) As Integer '
        Public KartenPreis(4) As Single '1=Normal 2=ermäßigt 3=kinder 4=frei 
        ' 5=UNormal 6=Uermäßigt
        Public KartenStart(4) As Long '1=normal 2=ermäßigt
        Public Besucher(4) As Long
        Public Gilde As Long
        Public Nebenverkauf(20) As Single
        Public Bon As Boolean
    End Class
Sauberer wäre es, man würde geeignete Properties
erstellen, über die auf die (dann privaten) Member
zugegriffen wird.
Du könntest auch an die Verwendung von
Enumerationen denken (für Info, Status, PreisArt usw.)

MfG
Manfred

Beitrag wurde zuletzt am 23.10.11 um 19:56:13 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Type Anweisung in VB.Net 
Autor: Schmunzelhase
Datum: 23.10.11 22:02

Guten Abend,

Danke noch mal für die zusätzlichen Tipps.
Einiges habe ich bereits schon verstanden ... aber es macht es auch nicht einfacher. Hoffentlich habe ich mich mit dem Projekt nicht übernommen.

Mit Class hatte ich anfangs auch schon experimentiert. Aber es gelang leider nicht das Feld so zu dimensionieren wie ich es brauche (ein Array im Array).

Erschwerend wird sicherlich hinzukommen, dass ich früher eben den kompletten Datentyp gKasse(X) ganz easy in eine Datei schreiben konnte (PUT). Das wird jetzt garantiert um einiges komplizierter ... seufz

Aber nun gut. Man wächst eben an seinen Aufgaben (learning by doing)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Type Anweisung in VB.Net 
Autor: Manfred X
Datum: 23.10.11 22:24

Hallo!

Schau z.B. in der VB-Doku unter dem Stichwort
BinaryFormatter/Serialisierung (Serialize) nach.
Du kannst die Member der Instanz einer serialisierbaren
Klasse mit nur einer Anweisung speichern und laden.

http://www.vbarchiv.net/forum/read.php?f=22&t=68835&i=68957

MfG
Manfred

Beitrag wurde zuletzt am 23.10.11 um 22:33:34 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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