unsigned short zu char * konvertieren

shader09

Erfahrenes Mitglied
Hallöchen tutorials.de Members,

also ich hab mal wiede in kleines Problemchen. Unzwa habe ich mit einer Funktion mir das Datum wieder geben lassen, nun will ich das ausdrucken. Mit hilfe eines Befehls sage ich es soll in die 15 Zeile geschrieben werden. Da kommt dann aber immer,

cannot convert from 'unsigned short' to 'char *'


hab schon im Inet rumgesuch(zB sprintf), auch was gefunden. Aber irgendwie is das immer von char* -> unsigned short. Könnt ihr mir vielleicht helfen!?

vielen Dank
 
Hallo,

das hört sich nach einem Zeichenformat-Problem (UNICODE) an. Ohne konkretere Infos von dir, wird's allerdings mit der Hilfe schwierig.

Gruß
MCoder
 
Also muss mal noh sagen das ich eMbedded Visual C++ benutze, BS ist WindowsCE.Net.
was bräuchteste noch so für informationen!?
 
Na mal kucken ob du damit was anfangen kannst,

Code:
      lZeile14 = date;
      lZeile15 = time;

      mPrinter.PrintPos(11,lZeile14);
      mPrinter.PrintPos(11,lZeile15);

Arbeite mit ESC sequenzen ums mal zu erwähnen.
 
Schönen guten tag,

Ich glaube das Problem liegt wo anders;) :

Code:
cannot convert from 'unsigned short' to 'char *'

sagt doch deutlich aus, dass das Datum als unsigned short (int) zurückgegeben wird
und die Funktion fürs drucken einen char[] erwartet.

Du musst also da wo du den wert(Datum) der variable erhälst, eine Konvertierung durchführen
Code:
char* Datum = static_cast<char*> funktion_die_das_datum_zurückliefert();

Ich denke ma da liegt der Fehler !
...korrigiert mich wenn ich falsch liege :)

MFG darrell
 
Das wäre mein Code für die Uhrzeit bzw. das Datum,

Code:
static CString GetDatumNormal()
{
  SYSTEMTIME systemTime;
  TCHAR gDatumNormal[64] = {TEXT("\0")};

  ::GetLocalTime(&systemTime);
  WORD wYear = (WORD) *(((BYTE*)&systemTime.wYear+1));				
  _stprintf(gDatumNormal, TEXT("%02d.%02d.%04d"), //Art der Datumsanzeige
        systemTime.wDay, systemTime.wMonth,systemTime.wYear);
----->
  return (CString) gDatumNormal;
}


Müsste ich dann bei dem "Pfeil" die Konvertierung durchführen!?
 
Na mal kucken ob du damit was anfangen kannst
Nein, damit kann ich leider nichts anfangen, weil ich nicht weiss, was "lZeileXX" für ein Datentyp ist und wie die
Methode "PrintPos" deklariert ist.
Schönen guten tag,
Ich glaube das Problem liegt wo anders;) :
Code:
cannot convert from 'unsigned short' to 'char *'
sagt doch deutlich aus, dass das Datum als unsigned short (int) zurückgegeben wird
und die Funktion fürs drucken einen char[] erwartet.
Das Problem liegt genau an der Stelle, die ich genannt habe. Die Datumfunktion liefert einen UNICODE-String, aber die
Druckmethode erwarten einen ANSI-String. Ein einfacher Typecast hilft da leider nicht. Entweder wird die
Druckmethode so umgebaut, dass sie auch mit UNICODE zurechtkommt, oder der String muss konvertiert werden.
Das könnte etwa so aussehen (Ich tippe mal, dass "date" und "time" CStrings sind);
C++:
int  nLen     = date.GetLength() * 2;
char *pszLine = new char[nLen + 1];
wcstombs(pszLine, date, nLen);
mPrinter.PrintPos(11, pszLine);
delete [] pszLine;
Gruß
MCoder
 
Zuletzt bearbeitet:
Zurück