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

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

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

ShIvADeSt (20-04-2006 01:53): http://forum.ru-board.com/topic.cgi?forum=33&topic=6679#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Други, выручайте.
Есть OpenDialog (нужен для выбора файла, без указания пути к которому хочу вообще запретить запуск приложения). "ПафМастЭкзист" и "ФайлМастЭкзист" не помогают
 
Как узнать мне, что юзер при выборе нажал "Отмена" в окне выбора файла (в самом ОупэнДайлог, т.е.)?

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 16:52 04-04-2006
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
reenoip
Метод Execute возвращает булевское значение false если нажали отмену.

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 16:56 04-04-2006 | Исправлено: EZH, 16:57 04-04-2006
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
if OpenDialog.Ececute then
  че-то делаем
else
  юзер нажал "Отмена

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 16:56 04-04-2006
nekr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как можно вызвать PopupMenu не правой а левой кнопкой???
Или может сужествуют полные аналогии?

Всего записей: 14 | Зарегистр. 04-04-2006 | Отправлено: 17:02 04-04-2006
EAV

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nekr
Обрабатывайет OnClick в нем вызывайте контекстное меню

Всего записей: 52 | Зарегистр. 17-03-2004 | Отправлено: 17:07 04-04-2006
whitewolfs

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Траблы продолжаются...  Да действительно фильтрация у меня была неправильная, теперь исправил, все фильтрует на 100 процентов. Спасибо за исправление. Но! RecordCount зараза всеравно показывает не число отфильтрованных записей, а общее число записей в базе.  В инете нашел вот что: "When the dataset has a filter or a range, RecordCount takes that filter or range into account. However, if the dataset is not a Paradox dataset, the value of RecordCount may be only an approximation when a filter is in effect".
 
Как я понимаю, все зависит от типа базы, поэтому RecordCount тут похоже не подойдет.
Млин, ну как же узнать число отфильтрованных строк??

Всего записей: 300 | Зарегистр. 21-10-2005 | Отправлено: 08:39 05-04-2006
ShIvADeSt



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

Цитата:
Как я понимаю, все зависит от типа базы, поэтому RecordCount тут похоже не подойдет.  
Млин, ну как же узнать число отфильтрованных строк??

не знаю, у меня разные базы были и везде нормально работало. ТОгда делай через SQL запрос, тогда будет точное отображение числа записей

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 08:47 05-04-2006
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
whitewolfs
Судя по тому коду, что ты раньше писал

Цитата:

Код:
 while not Table1.eof do begin
  ...  
  Table2.Insert;
  ...
  Table2.Post;  
end;

тебе RecordCound не нужен, но если очень хочется, тогда - считать

Код:
cnt := 0;
while not Table1.Eof do
  Inc(cnt);

 

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 08:51 05-04-2006 | Исправлено: RomanTim, 08:52 05-04-2006
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кажется RecordCount, RecNo возвращает то что надо когда датасет IsSequenced. А  если нет, то у меня были случаи когда рекордкаунт возвращал -1, хотя данные были. Сейчас для надежности делаю while not eof

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 09:42 05-04-2006
whitewolfs

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q][/q]
 
неа, IsSequenced тоже не помогает. Я тоже делаю while not eof,  но это медленно очень.

Всего записей: 300 | Зарегистр. 21-10-2005 | Отправлено: 10:52 05-04-2006
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
whitewolfs
запросом посчитай  
 
select count(*) as cnt from table1
where ...
 
cnt:=fieldByName('CNT').AsInteger;

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 11:17 05-04-2006
whitewolfs

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q][/q]
запросом это надо использовать TQuery, а нельзя.  Для доступа к базе юзаю TDBF (чтоб без BDE было). А TQuery без BDE вроде не работает же?

Всего записей: 300 | Зарегистр. 21-10-2005 | Отправлено: 11:26 05-04-2006
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А тебе обязательно ДБФ-формат ? Есть Absolute Database (_ttp://componentace.com) - замена БДЕ (правда, там свой формат баз)
 
With AbsoluteDatabase you can forget the Borland Database Engine (BDE) .  
Absolute Database is the compact, high-speed, robust and easy-to-use database engine.  
With Absolute Database you will not need special installation and configuration,  
it compiles right into your EXE.  
Make your application faster and smaller with Absolute Database!
 
Key Features:
 
·    No BDE; no DLLs
·    SQL'92 (DDL & DML) support
·    Single database file
·    Unmatched ease-of-use
·    100% compatibility with standard DB-aware controls
·    Strong encryption
·    BLOB compression
·    Full source code available
·    Royalty-free

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 12:04 05-04-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RostY
А ты ее юзал?

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 12:08 05-04-2006
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Немного юзал. Инсталировал, демошки попробовал. Перевел несколько програмок с БДЕ на него. Если большая база (> 200 000 записей, 16 мб размер базы), тормозит больше, чем БДЕ, если небольшая база то нормально.
 
очень понравилось, что есть возможность выборки "select from select"

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 12:19 05-04-2006 | Исправлено: RostY, 12:43 05-04-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Понадобилось сделать логирование некоторых операций в программе. Сделал класс TLogger с соответствующими методами. Переменную объявил в дата-модуле, создаю объект в начале dpr, освобождаю последней строчкой:

Код:
 
begin
  Log := TLogger.Create;
  Log.FileName := 'c:\PGS.log';
  Application.Initialize;
  Application.OnException := Log.ExceptionCatcher;
  Application.CreateForm(TDataModulePer, DataModulePer);
***
  Application.Run;
  Log.Save;
  Log.Free;
end.
 

Логом пользуются внутри дата-модуля, в частности, записывается DataModuleDestroy.
В результате получается, что DataModuleDestroy генерируется уже после строчки Log.Free, что заканчивается AccessViolation'ом.
Вопрос: как дата-модуль оказывается живым в время и как это обработать?

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 12:21 05-04-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RostY
Демки то и я смотрел. На первый взгляд понравилось... Но не знаю, стоит ли ее юзать в рабочих проектах. Думаю лучше сразу на FB или что-то подобное...
Тут недавно кто-то на нее жаловался, что, мол, постоянно рекавери делать хочет...
Не было таких проблем?
И еще насчет базу вопрос: сколько таблиц (в той кот. порядка 200мб) и насколько сильно тормозит все-таки?
Заранее спасибо за ответ.
 
evle
ДМ освобождается в  DoneApplication, который вызывается  в finalization юнита Forms.
finalization выполняется уже после выполнения последней строчки кода файла проекта.
Напиши прямо в твоем файле, где описан логгер

Код:
initialization
  Log := TLogger.Create;  
  Log.FileName := 'c:\PGS.log';  
 
finalization
  Log.Save;  
  Log.Free;


Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 12:38 05-04-2006
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vshersh
Ты невнимательно прочитал: 200 000 записей, 16 мб
таблиц там всего две (телефонный справочник города
 таблица 1: абоненты с адресами и телефонами
 таблица 2: коды и названия улиц)
 
когда выбрал все (или много) данных, просто отсортированных не по тому полю, по которому изначально отсортирована база, то ооооочень медленно работало перемещение по записям. Может, помогла б индексация, но так и не попробовал. Оставил пока на БДЕ.
 
Добавлено:
не счет рекавера не скажу - в тех проектах у меня специфическая задача - загрузить из текстовых файлов в базу, сделать несколько селектов и выдать результат анализа. Данные в базе не храню.

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 12:57 05-04-2006
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RostY
А почему бы не юзать Акцезовские базы, благо АДО стоит везде, БДЕ не требуется, и есть все средства чтобы юзать как SQL, так и обычный First, Next. Я в последнее время на нем многие вещи делаю, чтобы не ставить клиенту БДЕ, а так в инишке прописал путь к базе, прочитал из инишки, подключил и вперед.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:00 06-04-2006
Schatz



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
День добрый.
 
Есть программа которая запускается в свернутом в трей состоянии.
Возникла проблема, когда эту программу запускают в терминальном режиме с отключенным рабочим столом.  
Подскажите пожалуста, как определить наличие рабочего стола, т.е. когда можно программу в трей сворачивать а когда нет.
 
 
 
Нашел способ:
Получаю список работающих процессов, если среди них есть explorer.exe тогда не сворачиваю в трей.
 
Может есть другой способ?

Всего записей: 55 | Зарегистр. 31-05-2005 | Отправлено: 09:15 06-04-2006 | Исправлено: Schatz, 12:41 06-04-2006
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi
ShIvADeSt (20-04-2006 01:53): http://forum.ru-board.com/topic.cgi?forum=33&topic=6679#1


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru