Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 28 мар 2024, 10:32

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: TMemTableEh Delphi 11.2 AV в SetFieldData только 64bit
СообщениеДобавлено: 05 мар 2023, 06:57 
Не в сети

Зарегистрирован: 23 мар 2017, 13:41
Сообщений: 70
Начиная с версии 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]


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 мар 2023, 15:32 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.

В текущей версии библиотеки EhLib.VCL 11.0 Build 11.0.013
это ошибка уже давно исправлена.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 мар 2023, 15:44 
Не в сети

Зарегистрирован: 23 мар 2017, 13:41
Сообщений: 70
Ох, совершенно забыл указать версию библиотеки (9.1).
Мы в свое время так и не смогли перейти на более новую, так как почему-то при переходе на 9.2 и выше очень много всего ломалось.
В основном это были артифакты отрисовки, но так же были и AV, которые уходили при удалении->добавлении компонента заново, но сделать это для всего проекта оказалось не реально.

Пост написал прежде всего как подсказку для таких же как и мы "некрофилов", а то мало ли ))


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: dnau и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB