• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed MessegeBox w C++ builder pokazuje błąd mimo napisania funkcji według instrukcji od Borland

Object Storage Arubacloud
0 głosów
170 wizyt
pytanie zadane 17 sierpnia 2020 w C i C++ przez IgorK Nowicjusz (220 p.)
zamknięte 18 sierpnia 2020 przez IgorK

Koystam z c++ buildera 10.3 i próbuje wywołać funkcje MessegeBox jak w załączniku

void __fastcall TForm1::Nowy1Click(TObject *Sender)
{
	if(Application -> MessageBox("Czy na pewno utworzyć nowy plik?","Potwierdź",MB_YESNOCANCEL | MB_ICONQUESTION)== IDYES )
	{
	   Tresc->Lines->Clear();
	   nazwapliku="";
	}
}

Ale nie wiem czemu wywala ten sam błąd 

cały czas zaznacza tylko tego pierwszego stringa "Czy na pewno utworzyć nowy plik?"

 

Tutaj link do instrukcji: http://www.functionx.com/bcb/topics/msgbox.htm

komentarz zamknięcia: Problem rozwiązany
1
komentarz 17 sierpnia 2020 przez VBService Ekspert (253,400 p.)
edycja 17 sierpnia 2020 przez VBService

Spróbuj zapisać bez polskich "ogonków".

"Czy na pewno utworzyc nowy plik?","Potwierdz"

... albo, sprawdź temat kodowania ANSI, UNICODE (polskie "ogonki" nie są standardowymi kodami, w niektórych kompilatorach c++ trzeba dodać flagę np.:
-ansi itp.) ...

Zapisywanie łańcuchów, jak i pojedynczych znaków jako stałe w kodzie C++ wymaga dodatkowego zachodu - dopisywania przed nimi literki "L". Ponieważ char pozostaje typem o długości jednego bajtu, do dyspozycji mamy też nowy typ znakowy: wchar_t. To również jest słowo kluczowe C++ i oznacza ono znak 2-bajtowy, a w praktyce jest liczbą 16-bitową bez znaku, jak unsigned short (w odróżnieniu od char, który w Visual C++ domyślnie jest liczbą ze znakiem).

// Tak było w ANSI
char ZnakA = 'A';
const char *LancuchA = "Ala ma kota.";

// Tak jest w Unicode
wchar_t ZnakW = L'A';
const wchar_t *LancuchW = L"Ala ma nowego kota.";

// Tak zapisujemy znaki specjalne
char ZnakSpecialnyA = '\xA7';
wchar_t ZnakSpecjalnyW = L'\u8BCD';
komentarz 18 sierpnia 2020 przez IgorK Nowicjusz (220 p.)
Usuwałem polskie znaki, ale nic to nie dawało. Natomiast dopisanie tego L zadziałało. Dzięki

1 odpowiedź

+1 głos
odpowiedź 17 sierpnia 2020 przez Official gildin Bywalec (2,820 p.)
wybrane 18 sierpnia 2020 przez IgorK
 
Najlepsza

Nie używam buildera ale spróbuj to 

if(Application -> MessageBox(L"Czy na pewno utworzyć nowy plik?",L"Potwierdź",MB_YESNOCANCEL | MB_ICONQUESTION)== IDYES )

 

komentarz 18 sierpnia 2020 przez IgorK Nowicjusz (220 p.)
A co zmienia to L?
komentarz 18 sierpnia 2020 przez IgorK Nowicjusz (220 p.)
Zadziałało, dzięki
komentarz 18 sierpnia 2020 przez VBService Ekspert (253,400 p.)
1
komentarz 18 sierpnia 2020 przez VBService Ekspert (253,400 p.)

@IgorK, 

Tabela 6. Typy łańcuchów znaków

... Korzystanie z std::wstring niewiele różni się przy tym od używania jego bardziej oszczędnego pamięciowo kuzyna. Musimy tylko pamiętać, żeby poprzedzać literką L wszystkie wpisane do kodu stałe tekstowe, które mają być trzymane w zmiennych typu std::wstring . W ten sposób bowiem mówimy kompilatorowi, że chcemy zapisać dany napis w formacie Unicode. Wygląda to choćby tak:

std::wstring strNapis = L "To jest tekst napisany znakami dwubajtowymi" ;

 

 

Podobne pytania

0 głosów
1 odpowiedź 262 wizyt
0 głosów
1 odpowiedź 182 wizyt
pytanie zadane 8 czerwca 2017 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
+3 głosów
1 odpowiedź 3,562 wizyt

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...