Skocz do zawartości

Recommended Posts

Napisano

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).

Napisano

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.

Napisano

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...