Autor
|
Thema: Dictionary im CATVBS unter UNIX (2742 mal gelesen)
|
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: 17. Jul. 2012 13:38 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich schreibe gerade an einem XMLParser auf CATVBS-Basis (also VBScript) (siehe http://ww3.cad.de/foren/ubb/Forum137/HTML/005041.shtml). Dafür würde ich gern Dictionary-Objekte verwenden um meine Listen elegant zu verwarbeiten. Collection probiere ich gar nicht erst, da ich weiß, dass die im Script nicht funktioniert. Nun ist es so, dass ich diese Objekte über Code:
Set m_dictAttributes = CreateObject("Scripting.Dictionary")
erzeuge. Und da schießt mir direkt der erste Gedanke in den Kopf: Geht das auch unter UNIX? Ich mein ist jetzt nicht so sehr das Problem eine eigene Dictionary-Klasse zu schreiben, aber würde mir den Aufwand schon gern sparen, zumal es dann ja noch mehr Code wäre. Daher meine Frage an die Gemeinde: Kann ich Scripting.Dictionary unter UNIX 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 |
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: 17. Jul. 2012 14:03 <-- editieren / zitieren --> Unities abgeben:
So schnell geht's manchmal: habe eine UNIX-Testinstanz gefunden und bekomme kein Dictionary-Objekt auf diese weise. :-) Muss also ein eigenes schreiben. ------------------ 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 |
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: 27. Jul. 2012 15:18 <-- editieren / zitieren --> Unities abgeben:
Anbei mein Vorschlag für eine eigene Dictionary-Klasse. Wäre euch natürlich sehr verbunden, wenn ihr Verbesserungsvorschläge habt oder Fehler entdeckt. Was mich extrem stört: Ich entwickle unter VBA und portiere es dann zu VBS, wobei ich die ganzen Deklarationen dann wegnehmen muss. Wenn ihr was wisst, wie ich die Deklarationen behalten kann, das wär' super. Dass sie CATVBS/CATScript zur Laufzeit eliminiert ist mir bewusst und egal, ich will nur den Code bei der Portierung nicht so viel anfassen müssen. ------------------ 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 |
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: 27. Jul. 2012 15:55 <-- editieren / zitieren --> Unities abgeben:
Und schon das erste Update, habe ide Remove-Methoden überarbeitet, da die Objekterkennung etwas wirrer im Script ist. ------------------ 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 [Diese Nachricht wurde von HoBLila am 27. Jul. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 27. Jul. 2012 19:29 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hi, Zitat: Wenn ihr was wisst, wie ich die Deklarationen behalten kann, das wär' super. Dass sie CATVBS/CATScript zur Laufzeit eliminiert ist mir bewusst und egal, ich will nur den Code bei der Portierung nicht so viel anfassen müssen.
Ich glaube das geht nicht da VBS ja einen eignen Interpreder mitliefert der das eben nicht unterstützt sondern seine Variablen selbst im Arbeitsspeicher anlegt / verwaltet. Aber du könntest es durch ein kleiner Textberbeitungsscript jagen und alles Deklarieren (split an Leerzeichen und 00 / 01 des Array's behälst du den Rest löschst du (bzw. Kommentierst aus). Dann biste wesentlich schneller und da du ja so und so viel in VBS entwickelst ist das auch ein Invest in die Zukunft :-) ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 27. Jul. 2012 21:59 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Moin moin, Zitat: Aber du könntest es durch ein kleiner Textberbeitungsscript jagen
... daran wäre ich auch interessiert, denn ich hatte beim schrieben des Scripts die Probleme bei Unterroutinen/Funtkionen Function Beispiel(oEins As String, oZwei As Integer) As Product Da ging es nicht mit array = Split(txt," As") etc... Also, wenn jemanden was hat, um es zu Automatisiert, dann her damit. 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: 27. Jul. 2012 22:28 <-- editieren / zitieren --> Unities abgeben:
Gute Idee, da werde ich was schreiben, wird nicht schwer. Werde es mit Replace, statt Split machen und einfach über ne Liste von bekannten Deklarationen jagen. Die Standard-Sachen sind ja bekannt und muss es demnach nur um die jeweiligen Fälle erweitern, so dass das entsprechende Skript eben mit der Zeit wächst, da es aber automatisch arbeitet und ja nur dne Code umwandeln muss sollte die Laufzeit keine Rolle spielen. :-) Denke zumindest so könnt's gehen. ------------------ 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 |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 28. Jul. 2012 11:45 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
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: 21. Aug. 2012 10:35 <-- editieren / zitieren --> Unities abgeben:
Habe mal einen Vorschlag für einen solchen VBS-Converter angehängt. Zusätzlich gleich die aktuelle Dictionary-Klasse mit Beispiel Modul, welches einen Test der Klasse erlaubt. Dadurch braucht ihr nix weiter machen als es in einen ordner zu entpacken und den Converter einmal über den Ordner zu jagen. Ist sicher noch viel am Converter zu machen, drum präsentiere ich den frühen Stand schon einmal. Wie man am Beispiel erkennt habe ich bei der Umwandlung auch ein Problem: Ich arbeite mit dem String-Array arrSKeys() Code:
Dim arrSKeys() As String
nach der Umwandlung sieht es so aus: Code:
Dim arrSKeys()
das funktioniert natürlich nicht, es müsste Code:
Dim arrSKeys
sein, da kein Array mehr zurück gegeben wird sondern ein Objekt, welches wiederum ein Array beinhaltet. Viel Spaß beim Ausprobieren! ------------------ 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 |
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: 28. Feb. 2013 16:27 <-- editieren / zitieren --> Unities abgeben:
Bin gerade über eine Schwachstelle meiner item()-Funktion der Dictionary-Klasse gestolpert. Code:
' Methode um ein Element, dessen Key bekannt ist, zu erhalten Public Function item(ByVal i_sKey As String) As Variant Dim lCount As Long Dim lItem As Long item = vbNullString lCount = Me.count If (lCount > 0) Then For lItem = 0 To lCount - 1 If (i_sKey = m_arrSKeys(lItem)) Then If (IsObject(m_arrVarValues(lItem))) Then Set item = m_arrVarValues(lItem) Else item = m_arrVarValues(lItem) End If Exit For End If If (m_boolIsSort = True) Then If (Left(m_arrSKeys(lItem), Len(i_sKey)) > i_sKey) Then Exit For End If Next lItem End If End Function
Diese Funktion liefert mir das jeweilige Element / Value zurück. Leider kann ich es so aber nicht verändern / neu setzen. Mir fällt gerade auch nichts ein, wie ich es besser lösen könnte. :-( Beispiel: Ich habe ein Element mit Key="Blubb" und Value=5 drin und möchte Blubb jetzt auf 7 ändern, so würde ich gern mein Dictionary so aufrufen Code:
myDict.item("Blubb") = 7
Wahrscheinlich muss ich mit Properties arbeiten und habe es daher schon einmal auf Get umgebaut, was noch nicht reicht. Eine solche Let-Property, welche auf ein Array geht, habe ich aber noch nie gebaut. Daher schreibe ich, in der Hoffnung, dass noch jemand eine Idee hat. Code:
' Methode um ein Element, dessen Key bekannt ist, zu erhalten Public Property Get item(ByVal i_sKey As String) As Variant Dim lCount As Long Dim lItem As Long item = vbNullString lCount = Me.count If (lCount > 0) Then For lItem = 0 To lCount - 1 If (i_sKey = m_arrSKeys(lItem)) Then If (IsObject(m_arrVarValues(lItem))) Then Set item = m_arrVarValues(lItem) Else item = m_arrVarValues(lItem) End If Exit For End If If (m_boolIsSort = True) Then If (Left(m_arrSKeys(lItem), Len(i_sKey)) > i_sKey) Then Exit For End If Next lItem End If End Property
Ich werde jetzt als erste Lösung eine set-Funktion schreiben, der Key und neue Value übergeben werden, ist aber noch nicht ganz das, was ich mir vorstelle. ------------------ 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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|