Как узнать длину строки в ресурсах?

Тема в разделе "WASM.WIN32", создана пользователем Codeblight, 18 мар 2006.

  1. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
    Проблемы нет ! - алокаю буфер 4 кб - получаю строку, если полученная строка 4 кб - умножаю размер на 2, алокаю и опять пытаюсь получить (и так пока строка не будет меньше буфера) - вообщем работает, но схема убогая... Быть может кто знает, как можно легко узнать длину строки в ресухсах ? Перерывать вручную весь PE как-то не очень хочется, быть может есть способы попроще ?)



    p.s. поиском по форуму пользовался.
     
  2. KAdot

    KAdot New Member

    Публикаций:
    0
    Регистрация:
    27 фев 2005
    Сообщения:
    38
    FindResource

    SizeofResource
     
  3. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
    Сторки вроде хранятся в юникоде в ресурсах ?? а размер в чем я получу ?)) в байтах или в TCHAR ?
     
  4. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
    Все, понял 8-) Спасиб
     
  5. Codeblight

    Codeblight New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    60
    Адрес:
    Russia
  6. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    На ObjectPascal'e (на C также)
    Код (Text):
    1.  
    2. // ANSI version
    3. Buffer: PChar;
    4. SizeOfStr: DWORD;
    5. // Get Size of uID String + terminating null character
    6. GetMem(Buffer, $FFFF);
    7. SizeOfStr:=LoadStringA(hInstance, uID, Buffer, $FFFF)+1;
    8. FreeMem(Buffer);
    9. // Read uID String into Buffer
    10. GetMem(Buffer, SizeOfStr);
    11. LoadStringA(hInstance, uID, Buffer, SizeOfStr);
    12. //
    13. // uses String
    14. //
    15. FreeMem(Buffer);
    16.  
    17. // Unicode version
    18. Buffer: PWChar;
    19. SizeOfStr: DWORD;
    20. // Get Size of uID String + terminating null character
    21. GetMem(Buffer, $FFFF);
    22. SizeOfStr:=LoadStringW(hInstance, uID, Buffer, $FFFF)*2+2;
    23. FreeMem(Buffer);
    24. // Read uID String into Buffer
    25. GetMem(Buffer, SizeOfStr);
    26. LoadStringW(hInstance, uID, Buffer, SizeOfStr);
    27. //
    28. // uses String
    29. //
    30. FreeMem(Buffer);
    31.