Приветствую Вас, falcon! С чтения MS DDK, как ни странно :). Ответ отправлен: 20.10.2004, 06:55 Отправитель: sir henry
Вопрос № 1869
Доброе время суток! Вопрос в следующем есть 2 базы работают под Фокс 2.6 в сети списываю себе их на машину и пытаюсь открыть как таблицы в Датабейс Десктопе он их неоткрывает говорит ошибка драйвера
Добрый день, Older! Возможно так оно и есть. Я, не отходя от кассы, открыл в "Датабейс Десктопе" таблицы, сделаные в FPD 2.6 (File->Open->Table...). Открылось без всяких возражений со стороны "Датабейс Десктоп". Попробуйте переустановить DD или скачать и поставить новый MDAC с сайта Микрософт. Ответ отправлен: 20.10.2004, 08:55 Отправитель: sir henry
Вопрос № 1870
Уважаемые эксперты, прошу помощи. Проблема: при запуске программа занимает ок. 9-10 м в ОЗУ (по данным TaskManager'a), что терпимо (хотя и не есть хорошо). Но. По мере работы с программой объем использования памяти растет и растет... и причем на слабоватых машинах юзеров (средняя конфигурация - 64 Мб ОЗУ, Селерон 700, форточки 98) - "тормоза" очень приличные, настолько, что они вынуждены часто перезагружаться, чуть ли не через каждые полчаса (просто закрыть и перезапустить программу - не помогает). Программа работает с БД MS SQL Server через ADO-компоненты, один TADOConnection и к нему десятка два TADOStoredProc. После каждого получения выборки из БД использование памяти чуть-чуть увеличивается, вообще после каждого обращения к БД - причем после закрытия процедур не уменьшается. В программе есть формирование текстового файла, который для предварительного
просмотра выводится в TRichEdit (TMemo не хватает, под 98 Виндой TMemo боль
ше 64 Кб текста не принимает). Так вот, при выводе текста в RichEdit объем памяти увеличивается тоже - и при последующем очищении поля тоже уже не уменьшается. Файл отсылается через Outlook Express с использованием Simple MAPI - MapiSendMail. MAPI.dll перед отправкой файла загружается с помощью LoadLibrary, после освобождается - FreeLibrary. Но опять же объем памяти при посылке письма сильно увеличивается - и при выгрузке библиотеки уменьшается, но уже не настолько. Увеличивают объем использования памяти стандартные диалоги открытия-сохранения (PromptForFileName), и опять же - после закрытия диалога размер программы в памяти не уменьшается! В программе одна основная форма (не считая пары настроечных, которые пользователь открывает редко). Основу составляет PageControl с несколькими TabControl'ами. Динамически создаваемых объектов, принадлежащих форме, нет; все компоненты на форму брошены
тоже в дизайн-тайме. Куда может "утекать" память? MemProof не помог - не пол
учается ничего особенного обнаружить там, а может, я просто не знаю, где искать, MemProof мной специально только вчера скачан. Прошу совета, я уже в отчаянии... Спасибо.
Здравствуйте, L_Dorrit! Отследите каждую динамическую переменную - уничтожается ли она после того как отработает и станет ненужна.Оптимизируйте запросы, чтобы получать толко те данные, которые необходимы. После работы с запросом отследите, не остался ли он в памяти лишним балластом. Попробуйте в каждую еденицу времени работать только с одной выборкой, а потом ее сразу же закрывать. Попробуйте создавать необходимые элементы программы в RunTime и после использования сразу же уничтожать. Конкретных рекоммендаций, к сожалению, дать не могу, потому что не знаю, как конкретно сделана Ваша программа. Ответ отправлен: 20.10.2004, 09:43 Отправитель: sir henry
Вопрос № 1871
Доброе время суток! Вопрос в следующем есть 2 базы работают под Фокс 2.6 в сети списываю себе их на машину и пытаюсь открыть как таблицы в Датабейс Десктопе он их неоткрывает говорит ошибка 8715 Could not finde language driver в ВДЕ админе все дравера стоят проверенно покрайней мере для FoxPro
Добрый день, Older! Переустановите заново BDE, это явно его проблемы. Ответ отправлен: 20.10.2004, 09:46 Отправитель: sir henry
Вопрос № 1872
Благодарю за быстрый ответ, sir Henry, но не совсем понятен один совет: "После работы с запросом отследите, не остался ли он в памяти лишним балластом". Как это можно проверить? А если окажется, что остается - что с ним делать, как освободить память? "Попробуйте создавать необходимые элементы программы в RunTime и после использования сразу же уничтожать" - что, ВСЕ необходимые элементы? Контролы, хранимые процедуры и прочее? У меня был опыт создавания контролов на форме в рантайме. При этом места меньше в памяти программа не занимала... А создавать их все - не такая уж быстрая процедура...
Доброе время суток, L_Dorrit! 1. Если я правильно понял Ваш вопрос, вы делаете выборку с целью получения какого-то набора данных? После выполнения запроса, он выдает Вам этот набор данных, состоящий из выбраных Вами полей и строк, соответствующих условию запроса. Все это дело помещается в память. И естественно, в зависимости от условий запроса, строк может быть очень много. Соответственно много будет занято под него и памяти. Когда Вы поработали с этим наборо данных и он Вам больше не нужен, закройте его: TADOQuery.Close. 2. Насколько я понял, у Вас двадцать компонент для встроенных процедур и Вы их все сразу создали во время разработки. Вы пользуетесь всеми сразу? Или последовательно? Если последовательно, то можно обойтись всего одним компонентом TADOStoredProc, последовательно присваивая ему имя процедур, которые у Вас хранятся внутри SQL сервера: TADOStoredProc1.StoredProcName:='DeleteRecord'; {Процедура
делает то, что нужно. Любуетесь
результатом} TADOStoredProc1.StoredProcName:='AddRecord'; {Процедура делает то, что нужно. Любуетесь результатом} TADOStoredProc1.StoredProcName:='CreateCursor'; {Процедура делает то, что нужно. Любуетесь результатом} (названия взяты чисто условно). Если уж крайне необходимо наличие нескольких компонент, то не думаю, чтобы они нужны были все в одно время. Поэтому можно создавать их по мере необходимости. Ответ отправлен: 21.10.2004, 10:24 Отправитель: sir henry
Вопрос № 1873
Здравствуйте уважаймые эксперты! Подскажите пожалуйста, как можно следить за буфером обмена на Delphi и при появлении в нём текста отправлять этот текст в Memo (RichEdit), но чтобы старый текст, находящийся там оставался? Заранее благодарен!
Приветствую Вас, Андрей! richedit1.Lines.Append('Текст и буфера...'); Ответ отправлен: 22.10.2004, 15:38 Отправитель: CJ Отвечает sir henry
Здравствуйте, Андрей! Можно периодически проверять, не содержит ли Клипборд данных в нужном Вам формате: If TClipboard.HasFormat(CF_TEXT) Then Begin TMemo.Lines.Add(TClipboard.AsText); TClipboard.Clear; End; Ответ отправлен: 21.10.2004, 10:31 Отправитель: sir henry
Вопрос № 1874
Здравствуйте! Добавление к ранее заданному вопросу! Подскажите пожалуйста, как мне следить за буфером обмена, когда форма неактивна и добовлять содержимое (текст) в Memo?, т.е. пользователь добавил 1-е слово-в Memo оно отобразилось, 2-е слово-отображается в Memo на новой строке, не удаляя первого и т.д. В приложении возможный кусок кода. Заранее благодарен!
Доброе время суток, Андрей! Memo1.Lines.Add как раз и предусматривает добавление текста каждый раз в новую строку TMemo. Ответ отправлен: 21.10.2004, 10:35 Отправитель: sir henry
Вопрос № 1875
Здравствуйте, уважаемые эксперты. Подскажите пожалуйста каким образом с помощью Delphi, прграммно можно создать виртуальный диск, который в дальнейшем должен быть зашифрован.
Добрый день, Руки_Прочь!!!! Если Вы работаете с файловой системой NTFS, то нет проблем, шифрация у Вас прямо под ркой. Виртуальный диск можно создать командой: subst диск:каталогкаталог Ответ отправлен: 21.10.2004, 10:48 Отправитель: sir henry
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.