Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Problem mit Punkt/Komma, Skalierungsfaktor falsch

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:  Problem mit Punkt/Komma, Skalierungsfaktor falsch (2164 mal gelesen)
geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 21. Dez. 2011 11:52    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!

Habe ein Problem mit einer Skalierung.. Und zwar nimmt er an manchen Rechnern den falschen Faktor (statt 1.01 macht er 1.10).. Ich weiß schon, dass es warscheinlich irgendetwas mit den Regionaleinstellungen von Windows zutun hat, denn der Kollege hat laut eigener Aussage nur das Dezimaltrennzeichen von "," auf "." gestellt..

Problem ist, auf meinem Rechner (ebenfalls Windows 7) funktioniert es einwandfrei, egal was ich einstelle..

Für die Skalierung wird die Prozentzahl aus einer TextBox ausgelesen, das Trennzeichen auf die Windows Einstellung geändert und dann der Wert für den Skalierungsbefehl errechnet..

Hier mal die entsprechenden Code-Schnippsel.. Eingabe in die CheckBox ist z.B. "1,0" oder "2.3", GetSystemDecimalSep() ermittelt das aktuell eingestellte Trennzeichen..

Code:

        If InStr(1, TextBox2.Text, ",") > 0 Then
           
            SKFaktor = CDbl(Replace(Projektassistent_Form1.TextBox2.Text, ",", GetSystemDecimalSep()))
               
        Else
       
            SKFaktor = CDbl(Replace(Projektassistent_Form1.TextBox2.Text, ".", GetSystemDecimalSep()))
           
        End If

Code:

Dim scaling21 As Scaling2
Set scaling21 = shapeFactory1.AddNewScaling2(reference1, (SKFaktor / 100 + 1))

Danke und Gruß
Stefan

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 21. Dez. 2011 11:58    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 geekv5 10 Unities + Antwort hilfreich

Hallo Stefan,
kannst du mal genauer sagen, wann der was richtig und was falsch macht? Ich verstehe dein Grundproblem, aber noch nicht ganz, was das mit dem Systemseperator zu tun hat bzw. wann genau der etwas falsch macht. Für mich ist logisch betrachtet 1,1 das gleiche wie 1.1 wie soll daraus den 1,01 werden?

Es mag sein, dass ich gerade aufm Schlauch stehe  aber ich verstehe wie gesagt noch nicht, wo genau dein Problem liegt, an welchem Punkt etwas schief läuft. Ein Fehler ist im Moment zumindest erstmal nicht erkennbar.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 21. Dez. 2011 12:11    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 Rick,

Problem ist, er gibt z.B. "1,5" (Prozent) in die CheckBox ein, der Wert für den Skalierungsbefehl sollte dann "1,015" sein, ist aber "1,15".. Hatte ich vergessen zu erklären..

Gruß
Stefan

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 21. Dez. 2011 12:41    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 geekv5 10 Unities + Antwort hilfreich

Versuch es mal so...


Code:
        If InStr(1, TextBox2.Text, ".") > 0 Then
           
            SKFaktor = CDbl(Replace(Projektassistent_Form1.TextBox2.Text, ".", ",")
               
        Else
       
            SKFaktor = CDbl(Replace(Projektassistent_Form1.TextBox2.Text)
           
        End If


        Dim scaling21 As Scaling2
        Set scaling21 = shapeFactory1.AddNewScaling2(reference1, (SKFaktor / 100 + 1))


Es müsste eigentlich mit CDbl immer eine Zahl als Typ Double mit Punktseperator rauskommen. Das Problem ist, wenn es als Text definiert ist und der Seperator vorher ein Punkt ist, dann wird der Punkt heraus gelöscht.

Code:
Beispiel:
Wert = CDbl("1,5") ' ergibt 1.5
Wert = CDbl(1.5)  ' ergibt 1.5
Wert = CDbl("1.5") ' ergibt 15

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 21. Dez. 2011 13:04    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

Achso, gut zu wissen.. Habe deinen Code etwas abgeändert(Klammer hinzugefügt und ein Replace entfernt) und es funktioniert bei mir, was es allerdings schon vorher hat.. Werde dann mal einen Testlauf mit dem Kollegen starten..

Code:

        If InStr(1, TextBox2.Text, ".") > 0 Then
           
            SKFaktor = CDbl(Replace(Projektassistent_Form1.TextBox2.Text, ".", ","))
               
        Else
       
            SKFaktor = CDbl(Projektassistent_Form1.TextBox2.Text)
           
        End If

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 21. Dez. 2011 13:07    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 geekv5 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von geekv5:
Achso, gut zu wissen.. Habe deinen Code etwas abgeändert(Klammer hinzugefügt und ein Replace entfernt) und es funktioniert bei mir, was es allerdings schon vorher hat.. Werde dann mal einen Testlauf mit dem Kollegen starten..

Ja sorry habs nur schnell händisch angepasst 

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 21. Dez. 2011 13:58    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

Funktioniert leider nicht, habe auf meinem Rechner testweise das Trennzeichen (Windows Regionaleinstellungen) auf "." gestellt - es klappt. Stelle ich allerdings die Region auf "Englisch (Großbritannien)" macht er wieder den beschriebenen Fehler! Meine vorherige Lösung hat bei mir in jedem Fall funktioniert, aber halt bei dem Kollegen nicht.. Bin irgendwie verwirrt   

Edit:

Problem liegt hier:

"CDbl(Projektassistent_Form1.TextBox2.Text)"

Wenn das Problem auftritt gibt er "10" statt "1.0" aus.. Vielleicht bekomm ichs ja hin  

Edit2:

Wenn ich die Sprache in den Regionaleinstellungen auf Englisch setze, ist das von dir beschriebene Verhalten umgekehrt, d.h. CDbl("1,5") ist "15" und CDbl("1.5") ist "1.5"..

Stelle ich allerdings nur das Trennzeichen um, ergeben sowohl CDbl("1,5") als auch CDbl("1.5") den gewünschten Wert "1.5".. Was mich allerdings stutzig macht, ist das der Kollege sagt, er hätte nur das Trennzeichen umgestellt und hat trotzdem das beschriebene Problem.. Naja, werde morgen mal über eine Remote Sitzung versuchen das Makro vor Ort zu fixen.. Toi Toi Toi 

[Diese Nachricht wurde von geekv5 am 21. Dez. 2011 editiert.]

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 21. Dez. 2011 14: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 geekv5 10 Unities + Antwort hilfreich

Hmm kann es sein, dass das Verhalten danach genau umgekehrt ist? Dann müsstest du wohl in der Tat eine sprachabhängige Verarbeitung definieren. Was für ein....

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 21. Dez. 2011 14:19    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

Genau richtig, siehe mein zweites Edit über deinem Post.. Wenn man nur das Trennzeichen auf "." stellt, kommt sogar immer der gewünschte Wert raus.. Aber naja, dank dir weiß ich jetzt wenigstens wo das Problem liegt, dankeschön 

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