Еще один вопрос насчет СОМ а точнее про использование памяти методом

Тема в разделе "WASM.BEGINNERS", создана пользователем deadly83, 23 апр 2008.

  1. deadly83

    deadly83 New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2007
    Сообщения:
    71
    Доброго времени суток!
    Столкнулся с явлением таким что после использования метода InnerText (это который в IHTMLElement) многократно, размер файла постоянно растет, что навело на мысль о том что этот метод не чистит за собой, ни к чему хорошему это конечно в будущем не приведет, да и некрасиво как то ехе весит копейки а память жрется в арифметической прогрессии. Есть способ этому воспрепятствовать?
     
  2. JamesB

    JamesB New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2008
    Сообщения:
    66
    Имеется ввиду IHTMLElement::get_innerText() ?
    Все строки должно быть освобождены после использования с помощью SysFreeString().

    > этот метод не чистит за собой

    Как он может "чистить за собой", если не знает, когда ты закончишь использовать строку ?

    Код (Text):
    1. BSTR bstrInnerText;
    2. if (SUCCEEDED(pElement->get_innerText(&bstrInnerText)))
    3. {
    4.   // ... use ...
    5.   SysFreeString(bstrInnerText);
    6. }
    > размер файла постоянно растет

    размер какого файла?
     
  3. deadly83

    deadly83 New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2007
    Сообщения:
    71
    JamesB
    Спасибо похоже то что надо, я конечно извиняюсь что не совсем доходчиво излагаю мысли, просто иногда знаний не хватает чтоб более детально описать проблему, на интуитивном уровне понимаю что должно где то быть такое но в том же MSDN где я читаю в ремарках нигде даже намека нету на то что, вы попользовались будьте добры потом вызвать SysFreeString(bstrInnerText);
    И еще вопрос к тебе JamesB я вижу ты сведущ в этом деле, подскажи случайно нет возможности брать не весь текст методом InnerText а только вновь введенные строки?
    Пример было в элементе:
    stroka1
    stroka2
    через пару секунд добавились еще несколько строк, стало:
    stroka1
    stroka2
    stroka3
    stroka4
    Есть ли возможность брать только stroka3,stroka4 с помощью каких то методов?
    IHTMLTableRow::rowindex
    IHTMLTAbleCell::cellindex это случайно не те функции которые в этом могут помочь?
    Спасибо.
     
  4. JamesB

    JamesB New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2008
    Сообщения:
    66
    эээ... innerText - это текст между открывающим тэгом и закрывающим...
    http://msdn2.microsoft.com/en-us/library/aa752299(VS.85).aspx

    про это написано внизу с пометкой, что для ХТМЛ-таблиц
    Не особо понял что ты хочешь сделать как бы... У обычного элемента innerText можно получить весь... и всё...
     
  5. deadly83

    deadly83 New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2007
    Сообщения:
    71
    Есть класс internet_explorer_server в нем идет чат, я хочу брать только те строки которые недавно были введены в этот чат а не весь чат целиком. Есть такая возможность?(типа как с richedit em_getlinecount после чего можно узнать что добавилось скажем 5 новых строк и взять по индексам только последние 5 строк)

    SysFreeString возвращает число 30h, я так понимаю это код ошибки System Errors - Numerical Order (младшая часть CODE а не Facility)
    но числу 30h соответсвует десятичное 48 а такого номера ошибки нет или в MSDN System Errors - Numerical Order даны сразу в hex?
    Стоит на это обращать внимание или важно то что функция выполнилась успешно?