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

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

Модерирует : 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

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

data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаем новые возможности и баги
Просьба писать только про Delphi 2009 и выше - по остальным версиям есть соответствующая тема.
Вопросы вареза здесь не обсуждаются !!!
См. также:
Известные важные баги Delphi 2010:

Описание________________________________________________ Исправлено Решение/Альтернатива_____________________
  1. Внимание !  Деинсталляция D2010 нарушает работу D2007 и D2009 !  
При деинсталляции удаляются CC3280MT.DLL и CC3290MT.DLL из Windows\System32,   необходимые для работы D2007 и D2009 соответственно.
Сделайте резервные копии
  2. Code Formatter не работает, если не инсталлирован пакет моделирования.   В нем также присутствует множество багов. Используйте с осторожностью.   1.   JEDI CodeFormat 2.44 SVN Snapshot (~750Kb)   Требуются JCL и JVCL  
2.GExperts with Formatter
  3. Не работает F1 в Object Inspector Update 2   IDEFixPack 2.9 от Andreas Hausladen
(dev. snapshots)
  4. Если IDE начинает падать с сообщением "Out of resources", возможно, что поврежден .res файл проекта. Удалить его, запустить IDE, открыть проект - новый .res файл будет создан автоматически.
  5. В редакторе не работает Class Completion, если в декларируемом классе есть поля с шаблонами. Перед декларированием поля добавить public или private и т.д.
  6. TTrayIcon.ShowBalloonHint() не работает на ОС ниже Vista [QC 77561] Update 2 * Установить Update 2   * ИЛИ почитать о причинах и решении проблемы на форуме embarcadero и в QC   * ИЛИ воспользоваться альтернативой, например Cooltray 4.4.0
  ...      


Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 14:28 26-08-2009 | Исправлено: data man, 18:27 06-08-2010
neznayka3

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

Цитата:
Application.OnException

там и хочу общий повесить. интересуют "хорошие практики". там же будет куча исключений - от бд, приложения и тд.

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 19:49 09-07-2012
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
ну в смысле был вопрос что почитать, а хелп как известно плохого не посоветует
как различать исключения пример тут
http://www.chami.com/tips/delphi/011497D.html

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 20:32 09-07-2012
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
Обработка ошибок, и далее того же автора: http://www.gunsmoker.ru/2010/03/blog-post.html

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 22:56 09-07-2012
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Спасибо, вот это статья - по объему просто книга
Но для начинающего, может, проще для начала взять что-то готовое - типа EurekaLog

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 01:08 10-07-2012
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPerformer
Время, потраченное на чтение этих статей, окупится не один десяток раз. А эврикой еще нужно уметь пользоваться, и как раз Александр о ней много пишет.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 00:33 11-07-2012
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Эврика с нулевыми усилиями человеку с нулевыми знаниями дает  строчку кода, где произошла ошибка. Если этого недостаточно, чтобы пришло озарение, где ошибка в твоем собственном коде (сложность которого не может быть выше уровня понимания самого же автора), то уж не знаю чем и помочь...
А научиться дебажить по статьям невозможно, уже проверено... Нужен личный опыт

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 00:40 11-07-2012
neznayka3

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

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 15:54 11-07-2012 | Исправлено: neznayka3, 15:57 11-07-2012
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
Если основной модуль нельзя модифицировать, то поможет WaitForInputIdle.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:11 11-07-2012 | Исправлено: Frodo_Torbins, 16:13 11-07-2012
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть не редактируемый набор данных, и процедура типа
Код:
 
procedure EnableActionForOrders;
begin
if <DataSet>.RecordCount=0 then
begin
  <Action>.Enabled:=false;
end
else
begin
  <Action>.Enabled:=true;
end
end;
 
В какое событие ее надо положить, с учетом того, что набор фильтруется программно и с помощью cxGrid? Те он может быть пустой.  События <DataSource> не подходят, тк набор не редактируется. <DataSet>.BeforeScroll будет срабатывать слишком часто, к тому же не срабатывает, когда cxGrid фильтрует.
как это по уму сделать?

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 20:44 31-07-2012
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
проще всего в Action.OnUpdate, либо на GridView.DataController.OnDataChanged (но оно будет происходить при загрузке на каждую запись грида).
и проверять не через DataSet.RecordCount, а GridView.ViewInfo.VisibleRecordCount

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 23:01 31-07-2012 | Исправлено: A_V, 23:04 31-07-2012
diablist



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

----------
POWER by DiAbLISt

Всего записей: 898 | Зарегистр. 29-06-2002 | Отправлено: 18:05 01-08-2012 | Исправлено: diablist, 04:37 03-08-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Комрады, подскажите.
 
Нужно из-под клиента запускать консольку в командной строке с параметрами. Чем лучше воспользоваться?
 
DXE, Win7 x64

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 14:47 03-08-2012
diablist



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

Цитата:
ShellExecute(0, 'runas', '"cmd.exe"', PWideChar('параметры'), nil, SW_SHOWNORMAL);

runas - если запуск нужно от имени админа

----------
POWER by DiAbLISt

Всего записей: 898 | Зарегистр. 29-06-2002 | Отправлено: 22:22 03-08-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diablist
Ага, спасибо. Я наконец-то вспомнил когда-то попутно читанное.
 
CreateProcess (если я правильно помню, его в своих унутрях и использует ShellExecute) и WaitForSingleProcess.
 
Пошел читать...

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 01:12 04-08-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот интересно. В этом куске кода, если не скрывать консольное окно флагом CREATE_NO_WINDOW, то в самой консоли ничего не отображается (я здесь запускаю gbak.exe от Firebird)  и оно уныло висит поверх окна приложения(пока идет процесс рестора базы), смущая пытливый взор юзверя.
 
Хотя, если запускать gbak из-под батника, то все в консольке весело рисуется.
 
Можно это победить еще какими-нибудь флагами или придется отрисовывать в соседнем потоке wait-окно для юзверя?

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 16:53 07-08-2012 | Исправлено: eddoc, 16:59 07-08-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eddoc
какие параметры вы этому коду ему передаёте? ведь батник не сам по себе запускается, а через cmd.exe (который и читает выход от gbak-а)

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 13:52 08-08-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подсобите с такой проблемой - пытаюсь нажать на кнопку через TWebBrowser в C++Builder XE2  
 вот код странички  
 
Код:  
  <INPUT value="Войти"  class="inp2"  type="button"  onclick="on_submit()" >  
 .................  
 <SCRIPT>function on_submit(){if (document.getElementById("client").value == "") {alert("Введите логин для входа в систему!");return false;}if (document.getElementById("password").value == "") {alert("Введите пароль для входа в систему!");return false;}login.submit();_gat._getTracker('UA-29905618-1')._trackEvent('Общие','Вход','');_gat._getTracker('UA-30154094-1')._trackEvent('Общие','Вход','');}document.getElementById("ViewerN").value=window.navigator.userAgent.substring(window.navigator.userAgent.indexOf("MSIE"),window.navigator.userAgent.indexOf(";", window.navigator.userAgent.indexOf("MSIE")));var loc=""+location;document.getElementById("port").value=loc.substring(loc.lastIndexOf(":")+1, loc.indexOf("/", loc.lastIndexOf(":")));document.getElementById("ClOffset").value = - (new Date()).getTimezoneOffset();function keyevent(e) // submit key{if (e.keyCode == 13) // 13 = enter key{on_submit();}} </SCRIPT>  
   
   
 
 
   
 мой код  
 
Код:    
   TComInterface<IHTMLDocument2>          pDoc;  
   TComInterface<IHTMLElementCollection>  pColl;  
   TComInterface<IDispatch>               pTmpDisp;  
   TComInterface<IHTMLInputElement>       pElement;  
   TComInterface<IHTMLElement>            pButtomElement;  
   TComInterface<IDispatch>               pDisp;  
   
   AnsiString InmemberName = "client";  
   WideString InmemberData = AdvEditBtn2->Text;  
   AnsiString Inpassword = "password";  
   WideString InpasswordData = AdvEditBtn3->Text;  
   AnsiString InpCode = "code";  
   WideString InpCodeData = AdvEditBtn4->Text;  
   
 AnsiString SubmitButton = "inp2";  
   
   if ( SUCCEEDED (browser->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDoc)))  
   {  
     if ( SUCCEEDED (pDoc->get_all(&pColl)))  
     {  
   
 ...  
       if ( SUCCEEDED (pColl->item(TVariant(WideString(SubmitButton)), TVariant(0), &pDisp)))  
       {  
         pButtomElement = pDisp;  
         ShowMessage(1);  
         pButtomElement->click();  
   
        }  
   
 
 
 данные в форму заносятся верно и если нажать кнопочку ручками все нормально, но если  
 давлю программно - получаю Assertion failed: intf!=0, file=c:\...\utilcls.h line 2374  
   
 пробовал и AnsiString SubmitButton = "submit";  
 таже байда.  
 Как правильно нажать на такую кнопку?, у нее получается нет имени????  
 Ну и походу вопрос - как прочитать каптчу - 4 цыфирки?

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 14:31 08-08-2012
eddoc



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

Цитата:
какие параметры вы этому коду ему передаёте? ведь батник не сам по себе запускается, а через cmd.exe (который и читает выход от gbak-а)

 
Само собой, я имел ввиду запуск cmd.exe из-под батника
 
Если имелись ввиду параметры в батнике, то командная строка выглядит примерно так

Код:
 
set isc_user=SYSDBA
set isc_password=masterke
 
e:\Portable_firebird\Firebird\Firebird_2_1\bin\gbak -c e:\Databases\test.fbk  e:\temp\new_test.fdb -v -y e:\temp\log_test_db.txt -z

 
Те же параметры "собираются" и в дельфях. А разве отображаемая там консолька не есть cmd.exe?

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 17:22 08-08-2012 | Исправлено: eddoc, 18:28 08-08-2012
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
про Dataset. как можно отменить изменения в записи только у одного поля?

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 15:13 10-08-2012
eddoc



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

Цитата:
про Dataset. как можно отменить изменения в записи только у одного поля?
 

По логике, никак. Как выход, изменять на клиенте искомое поле только по условию. Либо, менять в текущей транзакции только ЭТО поле

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 13:05 11-08-2012
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru