vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 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

Fortgeschrittene Programmierung
Re: Public Type und Anzahl.... 
Autor: TheNukeduke
Datum: 16.01.08 11:53

Hallo Sina,

sofern dein Typ nur Strings enthält, gibt es eine Lösung, die allerdings etwas
unsauber ist, also Vorsicht beim Benutzen:
Option Explicit
 
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
  ByVal destination_pointer As Long, _
  ByVal source_pointer As Long, _
  ByVal bytes As Long)
 
Private Type test
 s1 As String
 s2 As String
 s3 As String
 s4 As String
 s5 As String
End Type
Private Const TEST_ELEMENTS = 5 ' Beim erweitern des Typs anpassen!
 
 
Private Sub Form_Load()
Dim arr(1 To TEST_ELEMENTS) As String ' Array anlegen
Dim bla As test
 
' ein paar Zuweisungen
bla.s1 = "erstes Element"
bla.s3 = "drittes Element"
bla.s4 = vbNullString
bla.s5 = "ENDE"
CopyTypeToArray bla, arr ' Funktionsaufruf
MsgBox arr(1) & vbCrLf & arr(2) & vbCrLf & arr(3) & vbCrLf & arr(4) & vbCrLf & _
  arr(5) ' Testausgabe
End Sub
 
' Der Funktion wird einfach der Typ und das Array übergeben
Private Function CopyTypeToArray(ByRef struct As test, ByRef arr() As String)
Dim I As Long
Dim J As Long
Dim Min As Long
Dim Max As Long
 
Min = VarPtr(struct.s1) ' MUSS das erste Element des Typs sein
Max = Min + Len(struct) - 1
J = 0
For I = Min To Max Step 4
   J = J + 1
   CopyMemory VarPtr(arr(J)), I, 4
Next I
End Function
Ich hoffe der Code ist verständlich, zum Testen einfach in ein leeres Projekt
kopieren und starten.
Zu beachten:
- Die Konstante zu dem Typ immer an die Zahl der Elemente anpassen
- Sollte sich das erste Element des Typs ändern, in der Copyfunktion anpassen
- Das Array nur direkt nach dem Kopieren verwenden
Sobalt man einen String in dem Typen ändert, enthält ein vorher kopiertes Array
ungültige Pointer und beim Zugriff auf diese könnte das Programm abstürzen.
Also in deinem Fall am besten immer Type in Array kopieren, insert machen, und
danach das Array als ungültig ansehen und nicht mehr verwenden.
Hoffe das Hilft dir.

Gru?,
Nukeduke

if (youAreHappyAndYouKnowIt) {
???ClapYourHands();
}

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Public Type und Anzahl....785Sina15.01.08 23:03
Re: Public Type und Anzahl....522BAStler16.01.08 09:20
Re: Public Type und Anzahl....566TheNukeduke16.01.08 11:53

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