DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Kanal mit String in eine Zahl umwandeln

Hallo, 

 

Ich würde gerne die Zahlen oZahl.Values(i) welche als String formatiert sind, einzeln in einen Float umwandeln. Könnt ihr mir bitte einen Tipp geben, wie das funktionieren soll. 

Ansonsten erhalte ich folgenden Fehler:

 

Dieser Kanal wurde mit dem Typ DataTypeFloat64 erzeugt.  Die Werte, die Sie zum Füllen verwenden, dürfen nicht vom Typ vbString sein.

 

Vielen Dank im Voraus. 

 

- Mosquito

0 Kudos
Message 1 of 4
(6,569 Views)

Mit Cdbl(oZahl.Values(i)) bekomme ich die selbe Fehlermeldung.

0 Kudos
Message 2 of 4
(6,566 Views)

Hallo Mosquito,

 

ich möchte mich Otmar anschließen. Wie er hier schreibt, sollten die Frage erstmal geklärt werden, warum die Daten als String vorliegen.

Soweit ich verstanden habe, bekommst du Zahlen als String, möchtest du damit irgendwas machen und dann in einem Kanal ablegen.

Wie kommen die Werte in das Array des Objekts? warum liegen diese als String vor? Was machst du mit den Daten und warum sollen die anschließend im Kanal abgelegt werden?

 

Prinzipiell funktiniert der Vorschlag von Otmar.

Wenn die Zahlen als string richtig formatiert vorliegen("1" oder "   1  ") kann man die werte ohne weiteres verrechnen und kann diese beispielsweise in einem Kanal ablegen.

 

Beides ist im angehängten Beispiel zu finden. Ich habe es in DIAdem 2011 und DIAdem 2012 getestet. Beides funktioniert!

Man sollte an der Stelle der Frage nachgehen, warum hier die Daten nach der Umwandlung als String vorliegen. Dazu müsste man den Quellcode anschauen und debuggen. Aus einem Befehl kann man nicht auf den Programmablauf schließen.

Debuggen wird ausführlich im DIAdem Advanced Kurs erklärt.

 

class test
  dim mynArray(10) ' Numerisches Array
  dim mysArray(10) ' String Array
end class

dim oObject
set oObject = new test

oObject.mynArray(0)= 1
oObject.mysArray(0)= "eins"
oObject.mysArray(1)= " 1"

'call Msgbox( cdbl(oObject.mysArray(1)) )                                                                            ' Konvertierungs-Befehl cdbl
'Data.Root.ChannelGroups(1).Channels(1).Values(1) = cdbl(oObject.mysArray(1))

oObject.mynArray(1) = oObject.mynArray(0) + oObject.mysArray(1)                                  ' Verrechnung
call Msgbox(oobject.mynArray(1))

 


Mit freundlichen Grüßen,

 

Philipp K.

AE | NI Germany

0 Kudos
Message 3 of 4
(6,545 Views)

Vielen Dank für die Antwort! 🙂

 

 

Beste Grüße.

0 Kudos
Message 4 of 4
(6,519 Views)