Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Dictionary im CATVBS unter UNIX

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Dictionary im CATVBS unter UNIX (2742 mal gelesen)
HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


MyDictionary_0.1.0.0.catvbs.txt

 
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


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


MyDictionary_0.1.1.0.catvbs.txt

 
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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für HoBLila 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 27. Jul. 2012 21:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für HoBLila 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für HoBLila 10 Unities + Antwort hilfreich

Hi,

genau das mit dem Replace ist noch besser. Wir könnten das auch mal zusammen im Forum machen. Was mir hierbei vorschwebt ist eine einfache txt Datei als Backbone in der die Zeichen / Zeichenketten stehen die ersetzt werden sollen. Das Script checkt den Code, passt ihn an VBS an und schreibt ihn selbstständig in eine CATvbs Datei (oder überschreibt eine vom User ausgewählt CATVbs Datei).

------------------
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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


VBSConverter.zip


MyDictionary.zip

 
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


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz