Werte vergleichen mit Unicode Variablen

HansJ

Mitglied
Hallo,
da habe ich wieder mal eine Anfänger Frage.

Ich habe 2 Werte, einen Eingabe Wert szZStand zb. 120 und einen Wert aus einer Datei szAZStand zb. 130.
Ich möchte prüfen ob der szZStand größer als szAZStand ist.

if (szAZStand > szZStand)

funktioniert es nicht, wie kann ich die Variablen umwandeln damit ich die Werte vergleichen kann.

So sind die Beiden definiert
TCHAR szAZStand[14] = TEXT(" ");
TCHAR szZStand[14] = TEXT(" ");
 
Hi.

Das kannst du im Grunde auf 2 verschiedene Arten machen. Entweder vergleichst du die Werte lexikalisch, dann solltest du die Funktion _tcscmp benutzen oder du willst die Werte numerisch vergleichen, dann mußt die die Werte erstmal umwandeln und kannst dann vergleichen. Für das letztere kannst du die Funktion _sntscanf verwenden.

Gruß
 
Leider bekomme ich die Fehlermeldung

warnig C4013 _snwscanf undefined assuming extern returning

Kann es daran liegen das ich embedded Visual C++ benutze?

#include <stdio.h> (habe auch wchar.h ausprobiert)

TCHAR szAZStand[14] = TEXT(" ");
int i;

i = _snwscanf( szAZStand, 13, L"%s")

Hans
 
Also mit Embedded VC++ kenn' ich mich gar net aus.

Folgendes funktioniert aber in VS .NET 2003 VC++:

Code:
#include <tchar.h>
...
  _TCHAR buf[10];
  _TCHAR *str = _T("594");
  int i;
  _sntscanf(str, sizeof(buf)/sizeof(_TCHAR), _T("%d"), &i);

  _tprintf(_T("%d\n"), i);

Ich weiß nicht ob du die Generic Text Mappings in Embedded VC++ überhaupt benutzen kannst. Hast du eigentlich das _UNICODE Makro definiert?

Gruß
 
Hallo
ich habe einen Weg gefunden

TCHAR str = TEXT("594");
int i;

_sntscanf(str, _T("%d"), &i);

Danke für die Hilfe
 
Du meinst doch sicher _stscanf, oder?! _sntscanf erwartet als zweiten Parameter einen int der angibt wieviele Zeichen gelesen werden sollen.

Außerdem ist ein TCHAR nur ein einzelnes Zeichen.

Bei mir kompiliert VC++ (verständlicherweise) den Code nicht einmal. :confused:

Gruß
 
Hallo,
du hast Recht im Programm habe ich

TCHAR[4] str = TEXT("594");
int i;

eingetragen.

Warum diese Zeile so funktioniert weiß ich nicht

_sntscanf(str, _T("%d"), &i);

aber so wird str in i geschrieben

Hans
 
Du hast recht, ich sollte beim Sesser aufpassen

TCHAR str[4] = TEXT("594");

aber die Zeile funktioniert unter eVC++

_sntscanf(str, _T("%d"), &i);
 
Zurück