vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 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

Fortgeschrittene Programmierung
Re: Danke, eigentlich ja, aber ... ;) 
Autor: Dirk
Datum: 18.09.07 13:56

Ein Dictionary (du benötigst MS Scripting Runtine) ist in der Lage Objekte zu ersetzen. Der Schlüssel für den Zugriff ändert sich jedoch nicht! Wenn du also z.B. 4-Mal New gedrückt hast. Und dann in die Textbox "1" einträgst für das Objekt, das ersetzt werden soll, wird zwar das Objekt welches ehemals "1" war zerstört, siehe debug printing. Das neue Objekt wird aber nach wie vor über den Schlüssel "1" angesprochen, obwohl der Name dann "1REP" ist. Bei Mehrfachbetätigung von Replace dann entsprechend "1REPREP...."

Beispiel:
--- Klasse c1
Option Explicit
 
Public MyName As String  'auf get/let verzichtet
 
Private Sub Class_Initialize()
  Debug.Print "c1.Class_Initialize"
End Sub
 
Private Sub Class_Terminate()
  Debug.Print "c1.Class_Terminate " & MyName
End Sub
--- Formular (komplett mit Controls) einfach mit Notepad als Form1.frm abspeichern
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   3150
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4080
   LinkTopic       =   "Form1"
   ScaleHeight     =   3150
   ScaleWidth      =   4080
   StartUpPosition =   3  'Windows Default
   Begin VB.TextBox txtToBeReplaced 
      Height          =   375
      Left            =   3120
      TabIndex        =   3
      Top             =   360
      Width           =   615
   End
   Begin VB.TextBox txtShow 
      Height          =   1815
      Left            =   240
      MultiLine       =   -1  'True
      TabIndex        =   2
      Top             =   1200
      Width           =   2535
   End
   Begin VB.CommandButton cmdReplace 
      Caption         =   "Replace"
      Height          =   615
      Left            =   1680
      TabIndex        =   1
      Top             =   240
      Width           =   1095
   End
   Begin VB.CommandButton cmdNew 
      Caption         =   "New"
      Height          =   615
      Left            =   240
      TabIndex        =   0
      Top             =   240
      Width           =   1095
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
 
'--- Hier beginnt eigentlicher Code
Option Explicit
 
Private m_Dic As Dictionary
Private m_cnt As Integer
 
 
Private Sub cmdNew_Click()
 
  Dim obj As c1
 
  Set obj = New c1
  obj.MyName = CStr(m_cnt)
  m_Dic.Add obj.MyName, obj
 
  m_cnt = m_cnt + 1
 
  ShowContent
 
End Sub
 
Private Sub cmdReplace_Click()
 
  Dim rep As String
  Dim obj As c1
 
  rep = txtToBeReplaced.Text
 
  If m_Dic.Exists(CStr(rep)) Then
    Set obj = New c1
    obj.MyName = m_Dic(CStr(rep)).MyName & "REP"
    Set m_Dic(CStr(rep)) = obj
  End If
 
  ShowContent
 
End Sub
 
Private Sub Form_Load()
 
 
  Debug.Assert txtShow.MultiLine  'bitte setzen
 
  Set m_Dic = New Dictionary
 
End Sub
 
Private Sub ShowContent()
 
  Dim obj As c1
  Dim Key As Variant
 
  txtShow.Text = vbNullString
  For Each Key In m_Dic
    Set obj = m_Dic(Key)
    txtShow.Text = txtShow.Text & obj.MyName & vbNewLine
  Next Key
 
End Sub

Gruß
Dirk

--
?Get it right the first time

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Verweis einer Collection nachträglich ändern895Sven R15.09.07 15:15
Re: Verweis einer Collection nachträglich ändern547TheNukeduke15.09.07 17:51
Danke, eigentlich ja, aber ... ;)491Sven R15.09.07 19:03
Re: Danke, eigentlich ja, aber ... ;)488mst54715.09.07 20:01
Re: Danke, eigentlich ja, aber ... ;)468Sven R16.09.07 20:37
Re: Danke, eigentlich ja, aber ... ;)484Dirk18.09.07 13:56

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