C# Deklarationsproblem

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von TanGoo, 4. August 2006 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 4. August 2006
    Hallo,

    ich habe ein kleines Deklarationsproblem.
    Ich möchte die Systemzeit, also "unsigned char" an ein LCD Display ausgeben.

    Die Funktion dafür lautet:
    void stringout (char *c)

    stringout("dieser text wird richtig ausgegeben";)

    ----
    Jetzt habe ich versucht, den tag von "unsigned char" in "char*" zu konvertieren. Die variable "tagi" kann nur auf dem Normalbildschirm als "08" ausgegeben werden.
    Auf dem LCD Display wird ein falsches Zeichen ausgegeben.

    char *tagi = "00";

    tagi = (char*) tag;
    stringout(tagi);



    Ich wäre euch sehr Dankbar, wenn ihr mir helfen könntet!

    DANKE!
    TanGoo






    ------
    Hier noch der Quelltext zur Übersicht.
    ----




    // chrout()
    // zum Senden von Daten mssen RS=1 und RW=0 sein.
    // Die Daten werden in zwei Halbbytes zerlegt. -E=0 / E=1
    void chrout (char c)
    {
    int hb=c>>4,lb=c&0x0F; // DatenByte zerlegt
    // High HalbByte senden
    i2c_transmit(i2c_lcd,0x50+hb); // RS -RW E h h h h
    i2c_transmit(i2c_lcd,0x40+hb); // RS -RW -E h h h h
    // Low HalbByte senden
    i2c_transmit(i2c_lcd,0x50+lb); // RS -RW E l l l l
    i2c_transmit(i2c_lcd,0x40+lb); // RS -RW -E l l l l
    i2c_release();
    }

    // stringout()
    // Sendet einen nullterminierten String zur LCD-Anzeige.
    // Die Bytes des Strings werden on Halbbytes zerlegt und
    // gesendet.
    // Die Frequenz des I2C-Bus schein so gering zu sein,
    // dass die bertragung eines Zeichens mehr als 120s
    // bentigt. Damit wird die Abfrage des Busy-Flags
    // berflssig. -E=0 / E=1

    void stringout (char *c)
    {
    int n=0;
    do{
    chrout(c[n]);
    } while (c[++n]!=0);
    }


    // ZEIT:
    unsigned int jahr;
    unsigned char monat, tag, tagnr;
    unsigned char stunde, minute, sekunde;

    char *tagi = "00";

    char *wotag[]= {"So","Mo","Di","Mi","Do","Fr","Sa","So"};

    // Zeitdaten sind als dezimale Zahlen
    // gespeichert
    void holedatum (void)
    {
    inregs.h.ah = 0x2A; // SoftINT 21h, Funktion 2Ah
    int86(0x21,&inregs,&outregs);
    jahr =outregs.x.cx; // Jahr 4 Stellen (16Bit)
    monat =outregs.h.dh; // Monat 1-12(8Bit)
    tag =outregs.h.dl; // Tag 1-31
    tagnr =outregs.h.al; // Wochentag, 0-Sonntag
    //string tach=outregs.h.dl;

    tagi = (char*) tag;
    //chrout(tagnr);
    stringout(tagi);
    //stringout("08:33:32sdfsdfsdf";);
    printf("\n%0.2d",tagi);
    }

    void holezeit(void)
    {
    inregs.h.ah = 0x2C; // SoftINT 21h, Funktion 2Ch
    int86(0x21,&inregs,&outregs);
    stunde =outregs.h.ch; // Stunde 0-23
    minute =outregs.h.cl; // Minute 0-59
    sekunde =outregs.h.dh; // Sekunde 0-59

    }

    // ENDE ZEIT
     

  2. Anzeige
  3. #2 5. August 2006
    char * tagi = &tag;

    Sollte so gehen, weil du ja dem Zeiger tagi die Adresse von tag zuweist.

    Mfg

    Hamml
     
  4. #3 6. August 2006
    Danke für deine Antwort!


    ich hab das problem schon so gelöst:

    char st[20];
    itoa (stunde, st, 10);



    mfg
    tangoo
     

  5. Videos zum Thema