Skip to main content
JNova.0
Associate III
February 16, 2024
Solved

string in textarea

  • February 16, 2024
  • 1 reply
  • 1347 views
Hello,
I use resources and everything works there.
Now I need to display text from code and I came across that the result of these commands is
 
23???
 
what is wrong with this code? What do I need to set where?
 

 

 

 

int intvalue_ = 23;
std::string stringvalue_ = "Hello";
Unicode::snprintf(textAreaBuffer, TEXTAREA_SIZE, "%d %s", intvalue_, stringvalue_ );
textArea.setWildcard(textAreaBuffer);

 

 

 

 
textArea has Typography BigFont selected in the designer
I have Wildcard Ranges in the Typography settings for BigFont
0-9,a-z,A-Z
 
It will definitely be something small.
Can you advise?
 
I found this sample, but even here the question mark appears

 

 Unicode::UnicodeChar a[] = {0x00B0,0};
 uint16_t degree = 28;
 Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%d %s", degree, a);
 textArea1.invalidate();

 

This topic has been closed for replies.
Best answer by JTP1

Hi JN

In your second try, set wildcard range for example 0x20-0xB0, now it missing the space (0x20) and 0xB0 (degree sign). Then it should work.

In first trial, the Unicode::snprintf can understand correctly only 16 bit strings so must first copy your 8 bit char string with Unicode::strncpy to unicode- array. Like this:

 

	int intvalue = 23;
	Unicode::UnicodeChar stringvalue[10];
	
	Unicode::strncpy(stringvalue, "Hello",10);
	
	Unicode::snprintf(textAreaBuffer, TEXTAREA_SIZE, "%d %s", intvalue,stringvalue );
 textArea.invalidate();

 

Note that you can also do like this when need only to put free text to wildcard:

 

	Unicode::strncpy(textAreaBuffer, "Hello",TEXTAREA_SIZE);
 textArea.invalidate();

 

 

Br JTP

1 reply

JTP1Best answer
Graduate II
February 16, 2024

Hi JN

In your second try, set wildcard range for example 0x20-0xB0, now it missing the space (0x20) and 0xB0 (degree sign). Then it should work.

In first trial, the Unicode::snprintf can understand correctly only 16 bit strings so must first copy your 8 bit char string with Unicode::strncpy to unicode- array. Like this:

 

	int intvalue = 23;
	Unicode::UnicodeChar stringvalue[10];
	
	Unicode::strncpy(stringvalue, "Hello",10);
	
	Unicode::snprintf(textAreaBuffer, TEXTAREA_SIZE, "%d %s", intvalue,stringvalue );
 textArea.invalidate();

 

Note that you can also do like this when need only to put free text to wildcard:

 

	Unicode::strncpy(textAreaBuffer, "Hello",TEXTAREA_SIZE);
 textArea.invalidate();

 

 

Br JTP