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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
я уже ответил:
dataset.open;
dataset.onchange := handler; // включить
....
// отключить
dataset.onchange := nil;  
dataset.close;

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 12:34 10-09-2012 | Исправлено: XPerformer, 12:34 10-09-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
флаги - вполне годное решение
с OnChange(Scroll,...) всё-таки удобнее работать когда они назначены в IDE
а то можна забыть убрать перед билдом, например
 
с другой стороны, и конструкции типа

Код:
 
.........
MyDataSet.OnChange:=nil;
try
  //тут переоткрываем, бегаем по данным итд
finally
  MyDataSet.OnChange:=MyDataSetChange;  
end;
 

т.е. когда всё одном блоке вполне годятся, особенно если это код из другого модуля
можна и правильнее

Код:
 
.........
MyForm.StartProcessingData(MeDataSet);//выполнит, в т.ч. MyDataSet.OnChange:=nil;
try
  //тут переоткрываем, бегаем по данным итд
finally
  MyForm.EndProcessingData(MyDataSet);//выполнит, в т.ч. MyDataSet.OnChange:=MyDataSetChange;  
end;
 

 

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 16:21 10-09-2012 | Исправлено: ant0ni02004, 16:24 10-09-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Комрады, подскажите.
 
Вот в этой функции происходит проверка возможности коннекта с возвратом значения ошибки в случае неудачи.
 
В чем проблема: если раскомментировать строку
Код:
raise EAbort.Create('')

то невозможно отловить параметр ErrMsg в вызвавшей процедуре (подозреваю, что вылетаю из нее). Если закомментировать, то появляется стандартное окно с сообщением об ошибке, появление которого я и пытаюсь предотвратить.
 
Можно ли чем-то заменить класс EAbort, чтобы добиться желаемого?
 
зы. пока нашел один способ: вместо выходного параметра перед вызовом EAbort сразу писать текст сообщение в какой-нибудь потомок TCustomEdit. Но хотелось бы абстрагирования кода функции от контролов на форме.

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 10:06 13-09-2012 | Исправлено: eddoc, 10:14 13-09-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eddoc
совершенно верно, по EAbort происходит вылет из функции, и из вызвавшей её итд
это ж исключение, хоть и специфическое
а отлавливать например так

Код:
 
1) передать текст ошибки в исключение
raise EAbort.Create(ErrMsg);
 
2) отловить это исключение в вызвавшем методе
try
  TestConnWithExcept(.....)
except
  on e:EAbort do
   .... смотрим e.Message....
  on e:exception do
    ... а здесь,например, raise ....
end
 
3) можно написать SafeTestConnWithExcept который будет всё это отлавливать и анализировать (чтобы не повторять подобный код всюду)
 


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



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

Цитата:
1) передать текст ошибки в исключение

не взлетело

Цитата:
2) отловить это исключение в вызвавшем методе

муторно, придется в метод вкладывать еще процедуру
 
Переписал функцию с передачей указателя  - вполне сгодится для любого наследника TCustomEdit
 
зы. спасибо за отклик, натолкнуло на мысль

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 18:24 13-09-2012 | Исправлено: eddoc, 18:25 13-09-2012
ant0ni02004

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

Цитата:
не взлетело  

сорри, копипаст проклятый попутал...
я имел в виду вот что:

Код:
 
on E:exception do
begin
   ......
   raise EAbort.Create(e.Message);  
end;
 

и вообще зачем там EAbort?
поставили результат в false, заполнили ErrMsg, exit(а не raise) - и дальше анализируем
Если true то порядок, Иначе ошибка была и смотрим ErrMsg

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 02:35 14-09-2012
eddoc



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

Цитата:
exit(а не raise) - и дальше анализируем  

Нет, ну надо же. Как все просто. Мне и в голову не приходило, что эта конструкция работает даже в эксцепшенах  
 
Респект

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 09:05 14-09-2012 | Исправлено: eddoc, 09:06 14-09-2012
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. У меня неожиданный вопрос возник. Летом перед отпуском был абсолютно рабочий проект под Delphi 2010. По приезде, спустя некоторое время вернулся к работе над проектом. И в первый же запуск получаю вылет приложения на саммой ранней стадии с ошибкой Privileged instruction. Проект компилируется-билдится без проблем, по сути никаких изменений не было, но исполняемый файл теперь нерабочий. Даже не знаю куда теперь копать и что править в консерватории. В системе кардинально ничего не менялось, системные обновления (WinXP SP3 x86) устанавливались по мере выхода, никаких новых устройств и драйверов.  
В общем, любые советы категорически приветствуются, голова дымится уже.

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 16:23 15-09-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
сделайте полный build проэкта

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 16:43 15-09-2012
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ant0ni02004
Уже, не помогает. Более того, достал из бэкапа исходники предыдущего билда, компиляю, запускаю - те же грабли. В обоих случаях EurekaLog выдает сходную информацию по ошибке:
 

Код:
 
; dxDockControl.dxDockingPaintersManager  
; ---------------------------------------
012C3FF8  in      eax, $6B                                ; <-- EXCEPTION
012C3FFA  pop     dword ptr [esi+$03]
012C3FFD  dec     esi
012C3FFE  imul    ebp, [ecx+$B914EDD3], $A7
012C4005  xor     esp, [ebx-$43]
012C4008  and     [edi+$98F1D762], bh
012C400E  repne
012C400F  push    $70542F90                               ; ''...
012C4014  xor     [esi], cl
012C4016  sub     al, $CC
012C4018  scasd
 

 
Походу дела, что то у девок сломалось, но что именно и с чего бы вдруг, а тем более как это лечить - непонятно совершенно.

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 17:04 15-09-2012
Bonivur



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Используются ли dll? Что использует проект помимо девок? Почитай тут ещё - http://www.devexpress.com/Support/Center/Question/Details/B203103

----------
Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 21:49 15-09-2012
golkanavt



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

Цитата:
Используются ли dll? Что использует проект помимо девок?

В явном виде нет, а так куча всего - чуть не весь спектр DevEx, FastReport, FIBPlus, TMS и всякой мелочи. Проект рабочий, поднял еще несколько ревизий из Git'а - со всеми та же беда, походу дело в IDE.  С момента возвращения, что вспомнил из изменений - обновлял DotNetFramework, MS Office 2003 -> MS Office 2007, да видеодрайвера.  
 
Прочитал инфу по ссылке. На мой случай не особо похоже, девы обновлялись давно - пол-года назад, в марте - и с тех пор проблем не было, несколько версий программы успел выпустить в работу.
 
В любом случае, спасибо за участие. Попробую собрать с нуля тестовый проект, да накидать в него сложных форм из проблемного - совсем простое приложение без логики с гридами и контролами без наполнения данными компилируется и запускается нормально.

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 23:23 15-09-2012
VABRO



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По ссылке, что Вам, golkanavt, раньше указали сказано, что из-за разных версий кода (в DLL и в проекте) такое может происходить. Намекают, что полный ребилд проекта может помочь (это когда исходники компонентов тоже перекомпилируются заново)
 
Примечание:
Дизассемблированный листинг от EurekaLog указывает, что исключение (<-- EXCEPTION) происходит на инструкции чтения из порта ввода/вывода (in eax, $6B;  чтение из порта с номером 107).
 
А эта инструкция привилигированная. Должна инструкция выполняться на уровне ядра ОС (ring 0/kernelspace code), а не из кода пользовательского режима доступа (ring 3/userspace code).

Всего записей: 44 | Зарегистр. 24-08-2010 | Отправлено: 05:58 16-09-2012 | Исправлено: VABRO, 06:09 16-09-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ant0ni02004
создайте в проекте папку, например dcu и настройте (Project-Options-Compiler) билдить туда (unit output directory) тогда оно и все системные заодно перебилдит
 
если это уже сделано - тогда нужно искать кто портит, м.б. и девки
я и сам не раз сталкивался, что работающий проэкт вдруг начинал "чудить" и исключения выбрасывать прямо со старта (никаких обновлений компонент не происходило). полный перебилд помогал.
 
заодно проверьте, не слетели ли настройки компиляции (complee boolean eval, @ operator итд)

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 15:10 16-09-2012 | Исправлено: ant0ni02004, 15:11 16-09-2012
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем откликнувшимся. Походу дела проблема была в другом - после проверки диска и переустановки DevEx все заработало как положено.

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 13:11 17-09-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как можно выполнять поиск и сортировку тегов в xml используя сабжевый (msxml) парсер IXMLDocument?

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 04:33 20-09-2012 | Исправлено: AlexCoRu, 04:35 20-09-2012
AlexCoRu

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

Код:
var
  XMLDocument: TXMLDocument;
  Node: IXMLNode;
begin
  XMLDocument.Active := True;
  XMLDocument.SetNodeIndentStr(#9);
  XMLDocument.Options := XMLDocument.Options + [doNodeAutoIndent];
  XMLDocument.DocumentElement := XMLDocument.CreateNode('Root', ntElement, '');
  Node := XMLDocument.DocumentElement.AddChild('Node');
  Node.AddChild('Child');
end;

Так вот по завершении Node.ChildNodes.Count будет больше 1! Т.к. добавятся ещё узлы из-за doNodeAutoIndent. Как быть? Хочется чтобы и отступы сохранялись, и левых узлов не было. Искать другой парсер?

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 20:01 25-09-2012 | Исправлено: AlexCoRu, 20:49 25-09-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
а вот как бы не оказалось что это всё согласно стандарту происходит
я и сам когда-то удивлялся Text-нодам...

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 23:27 25-09-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С этим я разобрался, гугль помог:
Код:
XMLDocument.XML.Text := FormatXMLData(XMLDocument.XML.Text);

А какой метод обхода детей эффективнее:
Код:
ANode := AParent.ChildNodes.First;
while Assigned(ANode) do
begin
  ...
  ANode := ANode.NextSibling;
end;
 
или
Код:
for I := 0 to AParent.ChildNodest.Count - 1 do
begin
   ANode := AParent.ChildNods[I];
  ...
end;
Или есть ещё лучше?

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 08:00 26-09-2012 | Исправлено: AlexCoRu, 10:00 26-09-2012
Frodo_Torbins

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

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:26 26-09-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