Law Napisano Grudzień 1, 2018 Autor Zgłoś Udostępnij Napisano Grudzień 1, 2018 Nie wiem jak w waszych compilatorach, ale w moim Delphi 6 jest coś takiego: MessageBox MessageBoxA MessageBoxW Od czego są te funkcje A i W? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Omega Napisano Grudzień 1, 2018 Zgłoś Udostępnij Napisano Grudzień 1, 2018 A i W Oznacza typ znakow. I tak A to AnsiChar a W to WideChar. Ten pierwszy to standardowy typ znakow jaki znasz, czyli np. MARIUSZ. Zas drugi to dodatkowo do kazdego znaku dodawane jest zero, czyli: M0A0R0I0U0S0Z0. Taki sposob zapisu stosowany jest np. w nazewnictwie zasobow. Sa odpowiednie funkcje API, ktore moga formatowac naprzemiennie lancuch znakow. I teraz co do MessageBox, ta funkcja to to samo co MessageBoxA, ale nie to co MessageBoxW. W tej drugiej musial bys przekonwertowac odpowiedni lancoch Ansi do WideChar. Najczesciej w programowaniu uzywa sie AnsiChar. Ale zobacz w strukture pliku wordowskiego (*.doc). Wszystkie teksty zapisywane sa jako WideChar. Praktycznie wszystkie funkcje API, ktore w paramtrach potrzebuja lancucha znakow maja styl wyboru funckcji ( z koncowka A lub W). Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Nemo Napisano Grudzień 1, 2018 Zgłoś Udostępnij Napisano Grudzień 1, 2018 Twardy sie troche myli bo A to znaczy ze to jest kodowanie ASCII czyli 256znakow - co oznacza ze na jedne znak jest przeznaczony tylko bajt pamieci a Wide to jest Unikod czyli na kazdy znak przypadaja dwa bajty i jets on stosowany np w chinach gdzie jest bardzo duzo znakow - wtedy dzieki temu ze sa 2 bajty na znak to mozna pisac uzywajac 65tys znakow. I jak uzyjesz funkcji MessageBox to w zaleznosci na jakim systemie kompilujesz to ci sie uruchomi odpowiednia wersja - jelsi kompilujesz na ASCII (np. polskie windowsy) to uruchomi sie MessageBoxA a jesli kompilujesz na Unicodzie (np. japoniski windows) to uruchomi ci sie funkcja MessageBoxW. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Omega Napisano Grudzień 2, 2018 Zgłoś Udostępnij Napisano Grudzień 2, 2018 Pewnie masz racje, tylko mi chodzilo w tym przypadku o delphi. W kodach zdodlowych MessageBox jest przypisany bezposrednio do MessageBoxA. I wlasnie w delphi sie stosuje AnsiChar na AnsiString i na odwrot WideChar jako WideString. A przyznam szczerze nie wiedzialem tak naprawde do czego praktycznie sluzy te WideChar. Funkcje do knwersji zankow to: MultiByteToWideChar i WideCharToMultiByte Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.