Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Terminalausgabe Formatieren - 000 statt 0 Kategorie: Programmierung Basic (von Kay - 23.06.2006 15:48)
 Als Antwort auf Re: Terminalausgabe Formatieren - 000 statt 0 von Bravo - 23.06.2006 0:40
Kay nutzt:  CC1-Unit V1.1, CC1-Station V1.1
> Ich glaube aber eher in die andere Richtung:

glauben is' nich  *g*
ich denke, du musst einfach die gesamte zahl zerlegen.
ich habe mir einst in CCBaisc dafür eine universelle routine geschnitzt,
welche komfortabel die ausgabe von dezimalen mit und ohne
führungsnullen und mit und ohne komma erledigt, somit aber natürlich
die zeichen einzeln ans display sendet (was bei CC I v 1.1 eh nicht anders geht)


#INT_OUT 'Ausgabe von Integerwerten und Kommasimulation
   on maxstellen goto INT_OUT_1,INT_OUT_10,INT_OUT_100,INT_OUT_1000,INT_OUT_10000
   #INT_OUT_10000
      j = int_out / 10000 : gosub INT_OUT_ZERO_CHECK
   #INT_OUT_1000
      j = (int_out / 1000) mod 10 : gosub INT_OUT_ZERO_CHECK
   #INT_OUT_100
      j = (int_out / 100) mod 10 : gosub INT_OUT_ZERO_CHECK
   #INT_OUT_10
      j = (int_out / 10) mod 10 : gosub INT_OUT_KOMMA_CHECK
   #INT_OUT_1
      lcd_dat = int_out mod 10 + 48 : gosub SEND_CHAR
return

   #INT_OUT_KOMMA_CHECK
      if komma_flag = -1 then goto zwangsnull else goto INT_OUT_ZERO_CHECK
      #zwangsnull
      lcd_dat = j + 48 : gosub SEND_CHAR
      lcd_dat = 44 : gosub SEND_CHAR
   return

   #INT_OUT_ZERO_CHECK
      lcd_dat = j + 48
      if lcd_dat = 48 then goto check else gosub SEND_CHAR
      return
      #check
      if null_flag = -1 then goto printnull
      lcd_dat = 32 : gosub SEND_CHAR : return
      return
      #printnull
      lcd_dat = 48 : gosub SEND_CHAR
   return


zur erklärung:
dem unterprogramm wird der auszugebende wert in der varable int_out übergeben.
zusätzlich benötigt es in der variante zwei flags: komma_flag und null_flag.
je nach dem,  ob diese flags gesetzt sind,  wird ein zehntel-komma gesetzt  oder nicht
bzw wird eine zahl mit führenden nullen ausgegeben oder statt der nullen leerzeichen.
ausserdem wird über den parameter maxstellen bestimmt, wieviele stellen die
auszugebende zahl hat. in jedem fall ist so die ausgabe fest formatiert.

schau dir das ruhig mal an und versuche,  es für dich zu nutzen. umschreiben musst du dirs
allerdings selbst,  denn ich beherrsche nur CCBasic.

gruß Kay

 Antwort schreiben

Bisherige Antworten: