Что возвращает lstrlen ?

Тема в разделе "WASM.BEGINNERS", создана пользователем gershkovich, 22 ноя 2006.

  1. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    Привет всем !

    Мне надо определить длину строку в байтах.
    Читаю МСДН (http://msdn2.microsoft.com/en-us/library/ms647492.aspx) :

    Что означает or WCHAR values ???
    Означает ли это что lstrlen может возвращать
    количество символов (т.е. количество байт деленное на 2) ?

    Как тогда узнать реальное количество байт ?

    Заранее спасибо.
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Код (Text):
    1. Означает ли это что lstrlen может возвращать
    2. количество символов
    Да возвращается длина в символах. И это правильно, потому-что как правило нужно знать именно кол-во сиволов а не байт.

    *2;
     
  3. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Не может, а возвращает

    Если работаешь с юникодом, умножь число символов на 2 :)

    А вообще, есть две функции lstrlenA (lstrlen) и lstrlenW
    Используешь первую - получаешь число байт, вторую - слов.
     
  4. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    lstrlen (lstrlenA) возвращает длину строки в байтах. lstrlenW - UNICODE версия, возвращает длину строки в словах (чтобы ее использовать нужно либо явно писать lstrlenW, либо в фасме подключать win32w.inc вместо win32a.inc).
     
  5. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    Все понял.
    У меня как раз замаплено lstrlenA

    Спасибо.
    Вопрос закрыт
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    shoo
    Они обе возвращают длину в символах :) Просто размер символа char равен 1 байту, а wchar - двум :)
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    rmn
    Первую с юникодом лучше не использовать, т.к. в некоторых юникодовых символах (пробел, запятая и т.д.) старший байт равен нулю и это собьёт с толку lstrlenA.
     
  8. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    То, что каждая функция используется для строки соответствующего формата показалось настолько очевидным, что не стал об этом говорить :)