Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Abfrage, ob ein Objekt leer ist

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:  Abfrage, ob ein Objekt leer ist (2074 mal gelesen)
Math.random
Mitglied
Ing

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

Beiträge: 8
Registriert: 23.02.2010

erstellt am: 23. Feb. 2010 20:12    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 an alle!

Für folgendes triviales Problem habe ich nirgends eine Lösung gefunden:

Wie kann in catvbs überprüft werden, ob ein Objekt leer ist?
Angenommen, es gibt eine Variable namens Testvariable:

Code:
Dim Testvariable

Dann kann folgende Abfrage gestartet werden:

Code:
If Testvariable = Empty Then ... Else ...

Dies funktioniert, solange Testvariable nicht mit einem Wert belegt ist und auch, wenn beispielsweise gesagt wurde:
Testvariable = "Abc" oder z.B. Testvariable = 123

Wird Testvariable jedoch als Geometrisches Element definiert (als Value einer User-Selection SelectElement2, z.B. durch Anklicken eines Punktes), dann gibt es eine Fehlermeldung.
Weil Empty nicht auf derlei Objekte anwendbar ist.

Wie lässt sich in diesem Fall prüfen, ob Testvariable bereits gesetzt wurde oder noch leer ist? Irgend etwas Einfaches à la Wenn Testvariable Dann...
Und wenn Testvariable als Geometrisches Element definiert wurde:
Wie lässt sich Testvariable reseten, ohne dass der Typ geändert wird? (vgl. String1 = "Abc" --> String1 = "")
So dass eine erneute Nachfrage (leer oder belegt?) möglich ist.

Was problemlos mit Strings, Reals, Booleans etc. funktioniert, muss doch auch mit Objekten möglich sein!

Vielen Dank für Eure Hilfe.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 23. Feb. 2010 20: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 Math.random 10 Unities + Antwort hilfreich

Servus
Versuch  es mal mit:
If Testvariable Is Nothing Then ...

Und zum Rücksetzen:
Set Testvariable = Nothing

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Math.random
Mitglied
Ing

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

Beiträge: 8
Registriert: 23.02.2010

erstellt am: 23. Feb. 2010 23:47    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 Bernd,

Danke, Is Nothing funktioniert.
Ich hatte im Vorfeld natürlich hier im Forum und im Web nach einer Lösung gesucht.
Da stößt man auf Worte wie Empty, Null und Nothing.
Die habe ich natürlich alle durchprobiert:

If ... = Empty/Null/Nothing/false/""/0  usw.

Dass man aber Is Nothing schreiben muss, statt = Nothing, darauf wäre ich nie gekommen.
Zumal z.B. = Empty in bestimmten Fällen super funktioniert.

Und beim Reseten wird im Zusammenhang mit Nothing auch wieder das übliche Gleichheitszeichen statt dem Is verwendet.
Mit Logik ist dem wohl kaum beizukommen. Das muss man auswendig lernen oder nachschlagen.
Aber im Netz war nichts zu dieser grundlegenden Visual-Basic-Thematik zu finden und in der V5Automation_R19.chm sowieso nicht.
Ein mit V5-Makros jahrelang vertrauter Kollege konnte mir hier auch nicht weiterhelfen.

Vielleicht hilft Deine Antwort ja auch anderen Forums-Nutzern.

MfG,
Hermann

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: 24. Feb. 2010 07:32    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 Math.random 10 Unities + Antwort hilfreich

Hallo,

IMHO war das in Visual Basic schon immer zu. "=" steht bei Objekten für eine ZUWEISUNG. Du brauchst aber eine ABFRAGE. Diese wurde schon immer mit "is Nothing" bzw. "Is Not Nothing" abgefragt. Du siehst das es hier schon eine gewisse Logik gibt. Das Zerstören von Objekten erfolgt dann eben mit einer Zuweisung, also "="

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 24. Feb. 2010 10:34    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 Math.random 10 Unities + Antwort hilfreich

Hallo,

wenn ich mich nicht ganz irre ist die Negation der Is Nothing Abfrage eher

If Not oObject is Nothing Then

Is Not Nothing erzeug (zumindest bei mir) einen Error.

Gruß

------------------
tomtom1972

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: 24. Feb. 2010 11:10    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 Math.random 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von tomtom1972:
Hallo,

wenn ich mich nicht ganz irre ist die Negation der Is Nothing Abfrage eher

[b]If Not oObject is Nothing Then

Is Not Nothing erzeug (zumindest bei mir) einen Error.

Gruß


[/B]


Hallo,

ja da hast du recht Tom.

If Not Object is Nothing ist die Negation. Habe wohl schneller getippt als gedacht 

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

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