Autor
|
Thema: Problem mit Punkt/Komma, Skalierungsfaktor falsch (2164 mal gelesen)
|
geekv5 Mitglied Konstrukteur
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für geekv5
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
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für geekv5
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
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für geekv5
|
geekv5 Mitglied Konstrukteur
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für geekv5
|
geekv5 Mitglied Konstrukteur
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 / zitieren --> Unities abgeben:
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 >>)
|