Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Robbe, > > Die Lösung/Ursache ist ganze einfach zu erklären: > Alle Rechenoperationen werden Grundsätzlich in 16Bit ausgeführt, > außer es wird durch einen Variabeltyp oder einer Konstante ein > Anderer Typ vorgegenen (long/float). > > Das Problem bei Deinem Proggie liegt hier: > system.hour() * 3600 > Dies wird in einer 16Bit Operation ausgeführt: > 11*3600 ergibt hier -25936 (0x9AB0 bzw. 39600-65536=-25936) > Damit das Ergebnis korrekt ist, muß einer der beiden Multiplikatoren > vom Typ long sein. > Das passiert genau in Deiner Berechnung: > noww = system.day() * 86400 + system.hour() * 3600 + system.minute() * 60 + system.second(); > Datentyp: Integer long Integer Integer Integer Integer Integer > So rechnet hier die CC2:(übersichtlich dargestellt) > noww = 1* 86400 + 11* 3600 + 45* 60 + system.second(); > noww = 86400 + (-25936)+ 2700 + 0; > Datentyp: long Integer Integer Integer > noww = 60464 + 2700 + 0; > Datentyp: long Integer Integer > noww = 63164 + 0; > Datentyp: long Integer > noww = 63164; > Datentyp: long > Dies waren jetzt die gesamten Zwischenschritte. > > Dein Programm müsste so aussehen, damit die Berechnung korrekt läuft: > <font face="courier new" size=2>long noww; > string s; > thread main > { > lcdext.init(); > system.setdate(2003,8,1); > system.settime(11,45,0); > noww=system.hour(); > noww=system.day()*86400 + noww*3600 + system.minute()*60 + system.second(); > s = ""; > str.putlong(s,noww); > lcdext.print(s); > quit 1; > }</font> > > So wird bei der Berechung system.hour() * 3600 der Wert von system.hour() > gleich in einem long gespeichert und auch so behandelt. > > MfG André H. > > > > Hallo, > > Ich habe folgendes Problem: > > > > Bei einer Berechnung bekomme ich immer ein falsches Ergebnis raus. > > > > Hier mein Programm: > > > > <i>long noww; > > string s; > > > > thread main > > { > > lcdext.init(); > > system.setdate(2003,8,1); > > system.settime(11,45,0); > > noww = system.day() * 86400 + system.hour() * 3600 + system.minute() * 60 + system.second(); > > lcdext.clear(); > > s = ""; > > str.putlong(s,noww); > > lcdext.print(s); > > halt; > > } > > </i> > > > > Auf meinem Display steht immer 63164. Rechne ich das aber mit meinem Taschenrechner aus, kommt 128700 raus wie kann das sein ??? > > > > > > Kann mir jemand helfen?? > > > > Robbe.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB