jari17 Temat założony przez niniejszego użytkownika |
WinApi, wyświetlanie watrości liczbowej w polu statycznego tekstu - błąd aplikacji » 2021-02-21 16:31:06 Chciałem napisać prosty podprogram konwertujący jakąć wartość int na łańcuch tekstowy z odpowiednimn formatowaniem. Po uruchomieniu programu przez .exe pojawia mi się błąd "(L "Buffer is too small" && 0)". void WyswietlaczWartosci( HWND UchwytWys, int wartosc, const char * jednostka, int Dzielnik ) { char Bufor[ 1000 ] = ""; int WysLiczba01 = wartosc / Dzielnik; char Wys01[ 10 ] = "0"; _itoa_s( WysLiczba01, Wys01, sizeof( Wys01 ), 10 ); if( WysLiczba01 == 0 && wartosc < 0 ) strcat_s( Bufor, sizeof( Bufor ), "-" ); strcat_s( Bufor, sizeof( Bufor ), Wys01 ); if( Dzielnik >= 10 ) { if( wartosc < 0 ) wartosc = wartosc *( - 1 ); int WysLiczba02 = wartosc % Dzielnik; char Wys02[ 100 ] = "0"; _itoa_s( WysLiczba02, Wys02, sizeof( Wys02 ), 10 ); strcat_s( Bufor, sizeof( Bufor ), "." ); while( WysLiczba02 <=( Dzielnik / 10 - 1 ) ) { strcat_s( Bufor, sizeof( Bufor ), "0" ); WysLiczba02 = WysLiczba02 * 10; } strcat_s( Bufor, sizeof( Bufor ), Wys02 ); } if( jednostka != "" ) { strcat_s( Bufor, sizeof( Bufor ), " " ); strcat_s( Bufor, sizeof( Bufor ), jednostka ); } SetWindowText( UchwytWys, Bufor ); } |
|
wwojtas |
» 2021-02-21 17:45:07 |
|
pekfos |
» 2021-02-21 18:10:48 Czemu nie sprintf()? |
|
jari17 Temat założony przez niniejszego użytkownika |
» 2021-02-21 18:31:59 Czy zamiennik sprintf() może być przyczyną? |
|
pekfos |
» 2021-02-21 18:35:41 Przyczyną jest błędny kod. sprintf() możesz użyć zamiast większości tego, co masz teraz. Daję taką odpowiedź, bo nie wiadomo co robisz. W pierwszej kolejności odpowiedz czy piszesz w C, czy C++? Potem czy piszesz konwersję bo chcesz, czy dlatego że nie znasz funkcji z biblioteki standardowej? |
|
DejaVu |
» 2021-02-21 19:49:34 |
|
jari17 Temat założony przez niniejszego użytkownika |
» 2021-02-21 20:32:12 Piszę w języku C++. Program ma: pobrać wartość "int" i przekonwertować ją na tekst możliwy do wyświetlenia w oknie aplikacji. Jest tam jeszcze funkcja dzielnika, która ma ustalać przecinek oraz jest możliwość dopisania jednostki fizycznej na końcu wyświetlanej waryośći.
Ma wyświetlać kolejno stringi: LiczbaPrzedPrzecinkiem - kropka - LiczbaPoPrzecinku - Jednostka
Np. Z wpisanych argumentów (poza uchwytem): 12684; "kg" ; 100 Ma zrobić stringa: 126.84 kg |
|
pekfos |
» 2021-02-21 20:49:52 Dla 100; ""; 100 wynikiem ma być 1, czy 1.00? W każdym razie, najprościej będzie jak podzielisz te dwie liczby z zachowaniem części ułamkowej i wypiszesz jako jedną liczbę. |
|
« 1 » 2 |