Autor
|
Thema: selection elemente löschen (1259 mal gelesen)
|
joerneman Mitglied Konstrukteur
Beiträge: 140 Registriert: 19.07.2009
|
erstellt am: 29. Apr. 2015 11:13 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe eine selection mit mehreren String Elementen. Die Anzahl der Elemente ist variable. z.B "002" "005" "004" "006" "002" "004" "001" jetzt möchte ich gerne alle doppelten rauslöschen. Das nachher nur noch "002" "005" "004" "006" "001" übrigbleiben. Wie gehe ich da am besten vor.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 29. Apr. 2015 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für joerneman
Möchtest Du aus dem String oder aus der Selection löschen? Ich würd's mit einer Collection oder einem Dictionary lösen. Jedes Element in einer Schleife hinzufügen und vor dem Hinzufügen prüfen ob es bereits schon vorhanden ist. Wenn ja, dann das aktuelle löschen, wenn nein, dann hinzufügen Code:
If(MyCollection.Exists(sNameOfElement)) Then ' Löschen Else ' Hinzufügen MyCollection.Add(sNameOfElement, objElement) ' kann auch andersrum sein, Dictionary und Collection haben je den Key an der anderen Stelle End If
Ich mag die Collection, da sie super simpel ist, aber das Dictionary macht Dir später in anderen Programmen weniger Ärger. Reiner Erfahrungswert. Wenn es ein CATVBS werden muss und unter Unix laufen soll, dann kannst Du hier auch suchen, ich habe irgendwann mal eine eigene Dictionary-Klasse gepostet, diese kann auch besser auf einzelne Elemente zugreifen. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joerneman Mitglied Konstrukteur
Beiträge: 140 Registriert: 19.07.2009
|
erstellt am: 29. Apr. 2015 13:53 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die Antwort. Ja ich will aus der Selection löschen. Ich werden es mit der Collection mal ausprobieren, habe ich noch nicht mit gearbeitet. Und mich melden falls es nicht klappt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 29. Apr. 2015 14:12 <-- editieren / zitieren --> Unities abgeben: Nur für joerneman
Aus der Selection löschen könnte sogar noch einfacher werden. Füge einfach über die Schleife alle Elemente zur Collection hinzu. Die Collection akzeptiert nur einen Eintrag je Key (Name). Dann leere die Selection selWork.Clear und füge über eine Schleife alle Elemente der Collection wieder zur Selection hinzu. Und schwupp ist das Thema erledigt mit nur 2 Schleifen und den zwei Klassen Collection und Selection. Ein Array wäre aber ressourcenschonender, jedoch nicht so leicht zu verwenden. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joerneman Mitglied Konstrukteur
Beiträge: 140 Registriert: 19.07.2009
|
erstellt am: 29. Apr. 2015 14:38 <-- editieren / zitieren --> Unities abgeben:
Ok, werde es so mal probieren. Ist denn in der Collection direkt der String hinterlegt sprich "001"? Oder die Variable z.B test = "001"? Code:
For i=1 to selection1.count set mNr = selection1.Item(i).Value Ver_Nr = mNr.Name If(MyCollection.Exists(Ver_Nr)) Then End if Else MyCollection.Add(Ver_Nr) End if Next
(Der Code ist ungetestet, wie gesagt habe ich noch nicht mit einer Collection gearbeitet und weiss nicht wie diese aufgebaut ist) Dann noch die Schleife um die Collection wieder der Selection hinzuzufügen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 29. Apr. 2015 14:55 <-- editieren / zitieren --> Unities abgeben: Nur für joerneman
Beginnt die Selection bei 1 und nicht bei 0? Nimm lieber einen sprechenden Namen als nur ein Zeichen für den Iterator. Spart Dir später massig Ärger, z.B. beim Suchen & Ersetzen. Ansonsten solltest Du das Objekt selbst auch hinzufügen und dann den Namen als Key verwenden. Wenn die Objekte schon in der Collection sind hast Du später weniger Arbeit die Selection neu zu schreiben, weil Dir MyCollection.Keys bereits ein Array liefert wo alle Objekte drin sind. Was ich grad auch nicht weiß: selWork.Item(iIterator) ist ohne .Value vom Typ SelectedElement. Eventuell kannst Du bereits mit genau diesem Objekt arbeiten ohne das .Value zu bilden. Später wird es durch das Selection.Add ja ehh wieder ein SelectedElement. Hier kenne ich mich aber auch nicht so gut aus. Code:
For iIterator=0 to selection1.count-1set objWork = selWork.Item(iIterator).Value sNameOfObj = objWork .Name If(MyCollection.Exists(sNameOfObj)) Then Else MyCollection.Add(objWork, sNameOfObj) End if Next iIterator
------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joerneman Mitglied Konstrukteur
Beiträge: 140 Registriert: 19.07.2009
|
erstellt am: 29. Apr. 2015 15:04 <-- editieren / zitieren --> Unities abgeben:
|