| 
	
		
			| 
					08.12.2009, 22:20  
				  Beitrag #1 |  
			|  |  
			|  |  
	
		
			| 
					08.12.2009, 22:23  
				  Beitrag #2 |  
			| 
					
                                                 |   eg
   LVF-SeniorMod
 
 
 Beiträge: 3.868
 Registriert seit: Nov 2005
 
 2016
 2003
 kA
 
 66111
 Deutschland
 
 | Typecast 
					Es macht keinen Unterschied. Nur wenn du es ignorierst und gar nicht berücksichtigst, kann es zu komischen Verhalten im Programm kommen.
				 
 
				
				 |  |  
			|  |  
	
		
			| 
					08.12.2009, 22:38  
				  Beitrag #3 |  
			|  |  
			|  |  
	
		
			| 
					08.12.2009, 23:04  (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2009 23:04  von eg.) Beitrag #4 |  
			| 
					
                                                 |   eg
   LVF-SeniorMod
 
 
 Beiträge: 3.868
 Registriert seit: Nov 2005
 
 2016
 2003
 kA
 
 66111
 Deutschland
 
 | Typecast 
					Nur damit du explizit weisst, was im Programm passiert. Roter Punkt sagt z.B. nicht aus von welchem und in welchen Datentyp es castet.
				 
 
				
				 |  |  
			|  |  
	
		
			| 
					09.12.2009, 08:49  (Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2009 08:51  von rolfk.) Beitrag #5 |  
			| 
					
                                                 | rolfk
   LVF-Guru
 
      
 
 Beiträge: 2.318
 Registriert seit: Jun 2007
 
 alle seit 6.0
 1992
 EN
 
 2901GG
 Niederlande
 
 | Typecast 
					' schrieb:Guten Abend,
 ich würde gerne wissen ob, ...
 
 es einem Unterschied macht, wenn LV den Typecast macht -> roter Punkt
 ... oder ob man es selbst macht mit z.B. der Konvertierungspalette.
 
 Bei einem LV Anwendertreffen hat man uns erzählt man soll die roten Punkte vermeiden, weil dann zusätzlich Speicher allokiert wird.
 
 Kümmert Ihr euch da drumm oder lasst Ihr die Punkte Punkte sein?
 Gruß dimitri
 
Zuerst mal es ist kein Typecast sondern eine Konversion, was der Coercion-Dot macht. Bei einem Typecast bleibt der Speicherinhalt soviel möglich dasselbe aber der (interpretierte) Wert der Daten wird anders. Bei einer Konversion ist es genau umgekehrt.
 
Und die Antworten bis jetzt waren meiner Meinung nach jetzt etwas zu undifferenziert. Bei Skalars macht es prinzipiel nichts aus, aber explizite Konversion hilft wie von Eugen angegeben oft der Deutlichkeit.
 
Bei Arrays kann es durchaus einen Unterschied machen ob man explizit oder implizit konvertiert. Nimm als Beispiel eine Loop in der auf irgendeine Weise Single Precision Werte generiert werden die durch Autoindexing in ein Array angelegt werden. Dieses Array wird danach mit einem Double Precision Arrayeingang verbunden. Ohne explizite Konversion wird der Konversionsdot am Arrayeingang gemacht. Es wird also zuerst ein Single Precision Array angelegt und dieses wird danach in ein Double Precision Array konvertiert. Mit expliziter Konversion innerhalb der Loop, wird ganz einfach ein einzelnes Double Precision Array angelegt. Die Konversion findet so oder so statt, aber LabVIEW muss ein Array weniger anlegen, was sowohl Speicher als auch Laufzeit spart.
				 
 
				
				 |  
    |  
			|  |  
	
		
			| 
					09.12.2009, 09:07  
				  Beitrag #6 |  
			| 
					
                                                 |   unicorn
   LVF-Freak
 
     
 
 Beiträge: 680
 Registriert seit: Jul 2009
 
 8.6.1, 2010 - 2012
 1994
 EN
 
 10xxx
 Deutschland
 
 | Typecast 
					Von welchem Typ in welchen umgewandelt wird, ist aber klar, wenn der Eingang nur einen bestimmten Typ erwartet.  
Ich mache mir nicht allzuviele Sorgen um die roten Punkte. Wenn es eindeutig ist, wie umgewandelt wird, lasse ich sie stehen. Ich vermeide Sie, wenn der rote Punkt verschwindet, indem ich z. B. den Datentyp einer Drahtes (Variable) bzw. eines Eingabe- oder Anzeigeelements Controls ändern kann. Bei der Umwandlung von DBL nach Integer sollte man nachdenken, ob man nicht aufrunden oder abrunden möchte.
 
Manchmal kann der Rote Punkt auch effizienter sein als eine explizite Umwandlung: guckst Du hier .
 
Übrigens ein roter Punkt ist kein Type Cast im eigentlichen Sinne. Beim Type Cast wird die binäre Darstellung als ein andere Typ intepretiert. Ein DBL hat 8 Byte und kann in ein Array von 4 I16 oder 8 Zeichen gecastet werden. Manchmal wird beim roten Punkt ein Type Cast durchgeführt (z. B. U8 -> I8) hingegen ist SGL -> I64 eine Umwandlung der Zahl mit Rundung.
				
				
				 |  
    |  
			|  |  
	
		
			| 
					09.12.2009, 09:55  
				  Beitrag #7 |  
			| 
					
                                                 |   dimitri84
   Astronaut
 
      
 
 Beiträge: 1.496
 Registriert seit: Aug 2009
 
 2020 Developer Suite
 2009
 DE_EN
 
 53562
 Deutschland
 
 | Typecast 
					Seid bedankt. ' schrieb:Manchmal kann der Rote Punkt auch effizienter sein als eine explizite Umwandlung: guckst Du hier. 
Da wird aber nicht erklärt wann  der 'coercion dot' effizienter ist, oder?
				
 
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius) 
				
				 |  |  
			|  |  
	
		
			| 
					09.12.2009, 10:36  
				  Beitrag #8 |  
			|  |  
			|  |  
	
		
			| 
					09.12.2009, 10:46  
				  Beitrag #9 |  
			|  |  
			|  |  |  |