| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Probleme mit If-Anweisung (641 mal gelesen)
|
Jules_Vernes Mitglied Systemadmin
 
 Beiträge: 145 Registriert: 04.10.2005 Catia V5R14
|
erstellt am: 24. Mai. 2006 13:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen Folgendes (komisches) Problem Ich hab eine If-Schleife mit der abfrage x1=x2 Then ..... End if jetzt hab ich das mal langsam Durchlaufen und die Werte für x1 und x2 sind identisch aber es wird trotzdem FALSE angezeigt und er geht nicht in die Schleife. Ich hab x1 und x2 genau gleich deklariert(als DOUBLE). Kann mir jemand sagen an was das liegen könnte?? Merci Grüsse Jules Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tschack Mitglied
 
 Beiträge: 186 Registriert: 29.11.2002 P4 3,0 1 GB nvidia Geforce 6200V+ Windows XP SP2 IV 9 SP1/IV 10 SP2/IV 11
|
erstellt am: 24. Mai. 2006 13:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Jules_Vernes
Hallo Jules Verne, mit so vielen Informationen können nur Hellseher eine Lösung anbieten. Probier's doch mal in deren Forum. mfg - Hans
------------------ "WennhinterFliegenFliegenfliegenfliegenFliegenFliegennach" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
okl Mitglied Wirtsch-Ing (Maschbau)
 
 Beiträge: 157 Registriert: 21.04.2006 3,6 mHz, 2 GB RAM, NVIDIA Quadro FX 1300, Pro/E Wildfire 3, Win XP Prof SP2, Office, VS 2005, VB 6, VS Express
|
erstellt am: 24. Mai. 2006 14:16 <-- editieren / zitieren --> Unities abgeben:          Nur für Jules_Vernes
hallo! bist du sicher, dass die werte wirklich gleich sind? bis auf die letze nachkommastelle? wenn die berechnet werden, kann das zu unterschieden führen. poste mal deinen ausschnitt, so dass man ein paar mehr infos bekommt. okl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jules_Vernes Mitglied Systemadmin
 
 Beiträge: 145 Registriert: 04.10.2005 Catia V5R14
|
erstellt am: 24. Mai. 2006 14:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo okl, ich bin mir ziemlich sicher das die Werte gleich sind. Hab sie beide in die Überwachung genommen und überprüft. Ich runde sie ja auch aber es klappt totzdem nicht. Könnte es sein das in der Überwachung nicht alle Nachkommastellen angezeigt werden? Hintergrund ist ich hole mir Koordinaten von Punkten in CATIA V5. Das klappt ja auch soweit. Ich dachte daher das dies ein VB-Problem sein könnte. Im Anhang mein Codeschnipsel. Gibt es eine Funktion mit der ich z.B. nur 5 Nachkommastellen mitziehen kann? Grüsse Jules
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jules_Vernes Mitglied Systemadmin
 
 Beiträge: 145 Registriert: 04.10.2005 Catia V5R14
|
erstellt am: 24. Mai. 2006 14:36 <-- editieren / zitieren --> Unities abgeben:         
|
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
     
 Beiträge: 7545 Registriert: 05.2002.24
|
erstellt am: 24. Mai. 2006 17:17 <-- editieren / zitieren --> Unities abgeben:          Nur für Jules_Vernes
|
okl Mitglied Wirtsch-Ing (Maschbau)
 
 Beiträge: 157 Registriert: 21.04.2006 3,6 mHz, 2 GB RAM, NVIDIA Quadro FX 1300, Pro/E Wildfire 3, Win XP Prof SP2, Office, VS 2005, VB 6, VS Express
|
erstellt am: 24. Mai. 2006 17:40 <-- editieren / zitieren --> Unities abgeben:          Nur für Jules_Vernes
Hallo Jules, dim x1, y1 as double bewirkt, dass y1 eine Variable des Typs Double ist und x1 vom Typ Variant. Das könnte das erste Problem sein. Dann verschenkst Du übelsten Speicherplatz durch die einfache Deklaration Dim KOORD1(1), ohne Typenbezeichnung, sprich as irgendwas. Versuch es erstmal mit der genauen Deklaration der Vars. Mehr kann dazu im Moment auch noch nicht sagen. Hab leider im Moment zu wenig Zeit, um mich richtig in deinen Code zu lesen. Zum Runden: Math.Round("Zahl", "Nachkommastellen"), zB x1 = Math.Round(x1, 5): x1 ist mathematisch gerundet auf 5 Stellen hinter dem Komma. Math ist Mitglied von der Library VBA, sollte also auf Deinem Rechner vorhanden sein. Grüße, okl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ

 Beiträge: 2897 Registriert: 06.07.2001 what i think? I think, no skill
|
erstellt am: 24. Mai. 2006 17:48 <-- editieren / zitieren --> Unities abgeben:          Nur für Jules_Vernes
Die Dim-Definition hat Okl schon erwähnt, änder deine Dimanweisung in Dim X1 As Double, Y1 As Double und es sollte gehen (zumindest bei mir unter VBA wenn die Zahl KOORD1(0) = "1234.1234" übergeben wird) eventuell auch: deine X1 und Y1 sind = KOORD1(x) X2 und Y2 definiertst du als CDbl(KOORD2(x)) möglicherweise könnte da das Problem sein da: cdblWert = CDbl("123,04") ' ergibt 123.04 cdblWert = CDbl(123.04) ' ergibt 123.04 cdblWert = CDbl("123.04") ' ergibt 12304 ist halt die Frage wie sieht das inputformat aus... [Diese Nachricht wurde von Thomas Harmening am 24. Mai. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
 
 Beiträge: 453 Registriert: 23.01.2002
|
erstellt am: 25. Mai. 2006 17:36 <-- editieren / zitieren --> Unities abgeben:          Nur für Jules_Vernes
|
Jules_Vernes Mitglied Systemadmin
 
 Beiträge: 145 Registriert: 04.10.2005 Catia V5R14
|
erstellt am: 27. Mai. 2006 11:38 <-- editieren / zitieren --> Unities abgeben:         
Grützi Zamme danke für die vielen Antworten. Hey pablo das mit dem "If Abs(x1-x2) < 0.000001 then" ist ne gute Idee, so müsste es funzen werde es bald versuchen Ich glaube nämlich das während einer Überwachug einfach nicht alle Stellen angezeigt werden, sonst müsste ja auch die Abfrage klappen. Ich dachte immer wenn ich z.B. Dim x1,y1 As Double schreibe das beide als Double deklariert werden, dem ist wohl nicht so. Noch ein schönes Wochenende Grüsse Jules
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |