"EhLib.Com" https://forum.ehlib.com/ru/ |
|
TMemTableEh Delphi 11.2 AV в SetFieldData только 64bit https://forum.ehlib.com/ru/viewtopic.php?f=4&t=3308 |
Страница 1 из 1 |
Автор: | Konctantin [ 05 мар 2023, 06:57 ] |
Заголовок сообщения: | TMemTableEh Delphi 11.2 AV в SetFieldData только 64bit |
Начиная с версии Delphi 11.2, сохранилось и на Delphi 11.3 при сборке проекта под платформой Windows 64-bit начала появлятся AV. Код: First chance exception at $00000000003D1910. Exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'. Суть проблемы вот в этой строке: DataEvent(deFieldChange, Longint(Field)); так как сигнатура Data.DB.TDataSet.DataEvent не Longint а NativeInt - мы получаем AV, хотя в версии Delphi 11.1 было так же, но AV не было. Проблема решается заменой Longint на NativeInt. По сути эти 2 типа равнозначны, но видать что-то переделали ну и как водится все сломали. Дополнительная информация. [spoiler] Колстек: Код: Data.DB.TDataSet.DataEvent(deFieldChange,2058754320) MemTableEh.TCustomMemTableEh.DataEvent(deFieldChange,2058754320) MemTableEh.TCustomMemTableEh.SetFieldData($26C7AB61910, ... Data.DB.TField.SetData((49... Data.DB.TStringField.SetAsAnsiString(???) Data.DB.TStringField.SetAsString('1') Пример: Код: program TestMt; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, DB, MemTableEh; begin try var mt := TMemTableEh.Create(nil); try mt.FieldDefs.Add('name', ftString, 100, false); mt.CreateDataSet(); //mt.AppendRecord(['hello!']); mt.Append(); mt.Edit(); mt.FieldByName('name').AsString := '1'; mt.Post(); mt.ApplyUpdates(0); // just another code line finally mt.Free(); end; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. [/spoiler] |
Автор: | EhLibSupport [ 05 мар 2023, 15:32 ] |
Заголовок сообщения: | Re: TMemTableEh Delphi 11.2 AV в SetFieldData только 64bit |
Добрый день. В текущей версии библиотеки EhLib.VCL 11.0 Build 11.0.013 это ошибка уже давно исправлена. |
Автор: | Konctantin [ 05 мар 2023, 15:44 ] |
Заголовок сообщения: | Re: TMemTableEh Delphi 11.2 AV в SetFieldData только 64bit |
Ох, совершенно забыл указать версию библиотеки (9.1). Мы в свое время так и не смогли перейти на более новую, так как почему-то при переходе на 9.2 и выше очень много всего ломалось. В основном это были артифакты отрисовки, но так же были и AV, которые уходили при удалении->добавлении компонента заново, но сделать это для всего проекта оказалось не реально. Пост написал прежде всего как подсказку для таких же как и мы "некрофилов", а то мало ли )) |
Страница 1 из 1 | Часовой пояс: UTC |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |