Law Napisano Grudzień 1, 2018 Autor Zgłoś 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
Omega Napisano Grudzień 1, 2018 Zgłoś 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
Nemo Napisano Grudzień 1, 2018 Zgłoś 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
Omega Napisano Grudzień 2, 2018 Zgłoś 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
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.