Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
kerim80
Newbie
Newbie

Anmeldedatum: 28.02.2008
Beiträge: 1

Element im Int-Array löschen und re-dimensionieren
Verfasst am: 28.02.2008, 14:53

ich will mich kurz/knapp halten. Habe Excel 2007.
Folgendes Szenario und Problem habe ich:

1. habe ein "Gewichtetes Array" vom Typ=Integer, z.B. (0,0,0,0,0,0,1,1,1,2,2,2,2,2,2,2,2,2,2,2,3,3,etc.) / Einträge von 0 bis 24
2. wähle mir mit folgendem Code aus diesem Array per Zufall einen Eintrag aus:


x = PosZahl(UBound(GewichteterArray))
Private Function PosZahl(ByRef ObereGrenze As Integer) As Integer
Randomize -Timer ' Sicherstellen, daß bei jedem Start wirklich eine neue Zufallszahl generiert wird
PosZahl = Int(Rnd * ObereGrenze) ' gibt Zahlen im Bereich von [0 - Oberegrenze]
End Function


3. lösche diese Eintrag (Zufallszahl) aus dem Array, mit folgendem Code:
den Code habe ich von der Seite: http://www.vbarchiv.net/archiv/tipp_955.html


ArrayDelete GewichteterArray, x

Private Declare Sub CopyMemoryPtr Lib "kernel32" _
Alias "RtlMoveMemory" ( _
ByVal Destination As Long, _
ByVal Source As Long, _
ByVal Length As Long)

Public Sub ArrayDelete(ByRef sArray() As Integer, _
ByVal nDelPos As Long, _
Optional ByVal nSize As Variant, _
Optional ByVal bRedimSize As Variant)

Dim nPtr As Long

' Größe des Arrays bestimmen, falls nicht angegeben
If IsMissing(nSize) Then nSize = UBound(sArray)

If nDelPos < nSize Then
' Element aus Array löschen und alle
' nachfolgende Elemente nach vorne schieben
nPtr = StrPtr(sArray(nDelPos))
CopyMemoryPtr VarPtr(sArray(nDelPos)), VarPtr(sArray(nDelPos + 1)), _
VarPtr(sArray(nSize)) - VarPtr(sArray(nDelPos))
CopyMemoryPtr VarPtr(sArray(nSize)), VarPtr(nPtr), Len(nPtr)
End If

' Array ggf. autom. um 1 Element verkleinern
If IsMissing(bRedimSize) Then bRedimSize = True
If bRedimSize Then
nSize = nSize - 1
If nSize < 0 Then nSize = 0
ReDim Preserve sArray(nSize)
Else
sArray(nSize) = 0
End If
End Sub


4. gibt er mir im MS-VB-Editor die Fehlermeldung "Nicht genügend Speicher" oder schließt automatisch das EXCEL-Programm

-> Habt ihr einen Lösungsvorschlag oder einen anderen, wie ich ein ausgewähltes Element von einem Integer-Array lösche und danach redimensioniere???
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: array löschen, element verkleinern

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wichtig: Filebrowser z.B. für ein RAT 2204 13.01.2008, 12:14
Keine neuen Beiträge msgbox mit symbol _&_ z.B. yesno oder systemmodal 1156 27.09.2008, 00:16
Keine neuen Beiträge Abändern eines Ordnernamens (z.B. C:\Programme = Programme) 1294 23.04.2008, 16:33
Keine neuen Beiträge "Zurück-Funktion" mit Listview und z.B. DirView 823 17.04.2008, 14:30
Keine neuen Beiträge Fenster auslesen z.b von icq oder msn wer online kommt 1336 11.02.2008, 17:46
 


[ Time: 0.0726s ][ Queries: 80 (0.0339s) ][ GZIP on - Debug on ]