Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).


 
Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    topdon

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Механизм разбора- выделение фиксированной подстроки с определенной позиции,
    в этой подстроке- нахождение подстрок по разделителям внутри.
     
    Добавлено:
    Спасибо. Я прошу дать ссылку, если можно, или привести элем. пример.
    У меня в поле doc
    ADOQuery1.SQL := 'select id, doc from Book';
    сидит строка более 5000 символов. В БД формат ntext
    Если бы я мог написать типа
     
    Var
     s: string;
    ...
    s := adoquery1.fieldbyname('doc').asstring;
     
    то был бы вполне удовлетворен.
    А с потоками никогда не работал.
     
     
     
     

    Всего записей: 71 | Зарегистр. 26-09-2009 | Отправлено: 13:56 29-12-2014 | Исправлено: topdon, 14:11 29-12-2014
    SuPriTo



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    topdon

    Цитата:
    s := adoquery1.fieldbyname('doc').asstring;  

    У вас данный код не работает, что ли?
    Тут только вопрос с памятью может возникнуть, если символов окажется слишком много.
    5000 символов - это очень мало.

    Всего записей: 1484 | Зарегистр. 24-03-2009 | Отправлено: 14:35 29-12-2014 | Исправлено: SuPriTo, 14:35 29-12-2014
    landy



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    topdon ты же вроде уже раньше решил эту проблему с доступом к полю DOC через CAST? Или такое решение не работает?

    Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 15:44 29-12-2014
    topdon

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да, все работает вроде. Не помню, что меня смутило.
    Ошибка в другом, прошу прощения.

    Всего записей: 71 | Зарегистр. 26-09-2009 | Отправлено: 16:47 29-12-2014
    Ichigo2



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет.
    У меня на StringGrid стоит OnMouseMove и подсвечивается ячейка под курсором, получается такой более-менее "живой" грид. Но при попытке Drag'n'Drop'а на таблицу она замирает. Можно ли сделать одновременно драгндроп и рабочий МаусМув, чтобы визуально отображать ячейку для дропанья?
    У таблицы DragKind=dkKind, DragMode=dmManual

    Всего записей: 153 | Зарегистр. 01-05-2011 | Отправлено: 20:48 27-01-2015
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ichigo2
    Обрабатывай OnDragOver, в нем делай все что необходимо.

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:25 28-01-2015
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, подскажите, какая последняя версия Indy 10 нормально билдится в проекте Delphi 2006? Крайняя из снапшота (равно и тибурон) при билдинге проекта ругаются с ошибкой компилятора Internal Error.

    Всего записей: 3145 | Зарегистр. 29-09-2005 | Отправлено: 15:10 06-02-2015
    landy



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DmitryKz, тут написано, что 10.1.5. Думаю, надо попробовать тщательно вычистить все следы перед установкой и перебирать релизы.

    Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 22:28 19-02-2015
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    landy
    10.1.5 это "родная", идущая в дистрибутиве. Попробую перебрать релизы..

    Всего записей: 3145 | Зарегистр. 29-09-2005 | Отправлено: 22:42 19-02-2015
    landy



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DmitryKz, а на каком хоть модуле оно падает?  

    Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 08:14 20-02-2015
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    landy
     

    Цитата:
    [Pascal Fatal Error] IdGlobal.pas(8657): F2084 Internal Error: C4955

     
    Начинаю тест релизов - на трёх крайних падает..

    Всего записей: 3145 | Зарегистр. 29-09-2005 | Отправлено: 17:38 20-02-2015
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Последний непадающий с Tubro Delphi релиз - 5239. В IdGlobal.pas релиза 5260 по-иному именованы типы данных для некоторых переменных в функции function ReadLnFromStream (строка 8564). Вероятно, на этом компилятор и падает.

    Всего записей: 3145 | Зарегистр. 29-09-2005 | Отправлено: 20:26 20-02-2015 | Исправлено: DmitryKz, 20:26 20-02-2015
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!
    Прошу помощи в решении непонятной мне проблемы, пишу программу на Delphi 7 для сохранения технических данных в БД Access, всё работает, но с течением времени размер программы в taskmgr потихоньку увеличивается, при запуске программа весит 5МБ, после подключения к БД 10МБ, за каждые сутки прибавляет минимум по 30 МБ, делал через компоненты ADO(Connect, Command, пытался и на Query) уничтожение компонентов никакой пользы не приносит и заставить их не увеличивать свой размер тоже не получается. Приведу полный код процедур создания, удаления и записи    
    Подробнее...
    Прошу помогите устранить причину увеличения размера, или хотя бы как размер обратно вернуть к 5МБ

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 07:33 27-08-2015
    idiMAN

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sammozg
    Это Вам для начала...
    Блог GunSmoker-а Ищем утечки памяти
    Использование AutomatedQA MemProof
    Delphi отображение утечки памяти

    Всего записей: 466 | Зарегистр. 05-05-2003 | Отправлено: 08:20 27-08-2015
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    idiMAN
    Про утечки памяти я уже кучу чего перечитал, пробовал отслеживать момент уничтожения объекта,  знаю что утечка в ADO компонентах(где то натыкался на описание подобного типа СОМ объект хранится в памяти после уничтожения) методы free, destroy, freeandnil эффекта не дали... после них освобождается пара сотен КБ, а остальное весит, но и при запуске увеличивается на те же пару сотен...

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 10:13 27-08-2015
    idiMAN

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я предложил просто найти, где именно происходит утечка. Если вы твёрдо уверены, что утечка внутри системы, а не в самих ADO-компонентах, то боюсь ничего не поделать, иначе нужно править исходники ADO-компонентов.

    Всего записей: 466 | Зарегистр. 05-05-2003 | Отправлено: 11:05 27-08-2015
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я засовывал их в отдельный поток, видно что поток уничтожается а вот память не освобождается, может есть вариант принудительно освободить память?

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 12:28 27-08-2015
    SuPriTo



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sammozg

    Цитата:
    Я засовывал их в отдельный поток, видно что поток уничтожается а вот память не освобождается, может есть вариант принудительно освободить память?

    Значит поток не уничтожает память. Иначе бы память освободилась.

    Всего записей: 1484 | Зарегистр. 24-03-2009 | Отправлено: 12:33 27-08-2015
    idiMAN

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sammozg
    Насколько я знаю, память принадлежит процессу, а не потоку. Так что уничтожение потока не приведёт к освобождению выделенной в нём памяти, тем более если она "утекла".

    Всего записей: 466 | Зарегистр. 05-05-2003 | Отправлено: 12:48 27-08-2015
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    при запуске программа весит 5МБ, после подключения к БД 10МБ
    Это нормально.
    Цитата:
    за каждые сутки прибавляет минимум по 30 МБ
    А какой максимум? Если оно останавливается гдето на 200 Мб, то все ОК и нет повода беспокоится. А если может дойти до 1,5 Гб, и продолжить расти, то это конечно проблема.
    Но это не обязательно утечка, тут еще может быть проблема в фрагментации памяти. Делфийский менеджер памяти (в последних версиях) неплохо с этим справляется, а вот что там в СОМ, сильно зависит от версии винды.
     
    P.S. И сюда еще загляните: https://support.microsoft.com/ru-ru/kb/978155

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 13:08 27-08-2015 | Исправлено: Frodo_Torbins, 13:13 27-08-2015
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru