Diesel Pascal

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Re: Diesel Pascal

Сообщение v-t-l » 26.02.2021 12:20:16

*Rik* писал(а):А если в Lazarus приложение с TZPgEventAlerter сделать, ошибка воспроизводится?

[Уведомление об исключении отладчика]

Проект project1 вызвал класс исключения 'EZSQLException' с сообщением:
SQL Error: ошибка SSL: decryption failed or bad record mac

В файле '../../src/dbc/ZDbcPostgreSqlUtils.pas' на строке 699:
raise EZSQLException.CreateWithStatus(Result,Format(SSQLError1, [GetMessage(ErrorMessage)]));


[Игнорировать этот тип исключений]

[Остановить] [Продолжить]
Есть подозрение, что TZPgEventAlerter не синхронизируется с основным потоком при использовании общего соединения.

Добавлено спустя 2 часа 1 минуту 18 секунд:
При использовании отдельного соединения для TZPgEventAlerter почти 2 часа тестирования ошибок не вызвали.
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 26.02.2021 15:15:04

v-t-l писал(а):
*Rik* писал(а):А если в Lazarus приложение с TZPgEventAlerter сделать, ошибка воспроизводится?

[Уведомление об исключении отладчика]

Проект project1 вызвал класс исключения 'EZSQLException' с сообщением:
SQL Error: ошибка SSL: decryption failed or bad record mac

В файле '../../src/dbc/ZDbcPostgreSqlUtils.pas' на строке 699:
raise EZSQLException.CreateWithStatus(Result,Format(SSQLError1, [GetMessage(ErrorMessage)]));


[Игнорировать этот тип исключений]

[Остановить] [Продолжить]
Есть подозрение, что TZPgEventAlerter не синхронизируется с основным потоком при использовании общего соединения.

Добавлено спустя 2 часа 1 минуту 18 секунд:
При использовании отдельного соединения для TZPgEventAlerter почти 2 часа тестирования ошибок не вызвали.

А в Дизель-Паскале через отдельное соединение тоже работает?
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение v-t-l » 27.02.2021 12:06:58

*Rik* писал(а):А в Дизель-Паскале через отдельное соединение тоже работает?

Да, исключения не появляются.
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 27.02.2021 12:51:39

v-t-l писал(а):
*Rik* писал(а):А в Дизель-Паскале через отдельное соединение тоже работает?

Да, исключения не появляются.

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

ps.
В Дизель-Паскаль не все компоненты от ZEOS добавлены, если ещё какие-то нужны, могу добавить.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение Aleks69 » 01.03.2021 12:25:40

Добрый день!

Выложил более-или менее настроенную среду Lazarus для Android в этой теме: viewtopic.php?f=5&t=43209

Не осталось ли у автора Diesel Pascal первых версий виртуальной машины, чтоб он смог проверить просто машину + простейшие контролы из вкладки Android Bridges (там свои контролы) на принципиальную возможность работать под Android?

Добавлено спустя 4 часа 49 минут 2 секунды:
Хотя, мне кажется - ситуация с адаптацией Diesel Pascal гораздо сложней, чем это мне виделось на первый взгляд. Масса проблем будет с расположением элементов на странице - все эти андроидные ReiativeLayout не имеют прямых аналогов (?) при работе дизайнера форм для Windows.
Aleks69
новенький
 
Сообщения: 35
Зарегистрирован: 29.03.2009 14:25:01

Re: Diesel Pascal

Сообщение v-t-l » 27.02.2024 11:25:48

Добрый день!
Не нашел, как в xDBGrid реализовать LookupCombo столбец с с автодополнением по мере набора текста? Хотел сделать обработчик OnSelectEditor с показом своего контрола - недоступно.
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 27.02.2024 12:20:10

v-t-l писал(а):Добрый день!
Не нашел, как в xDBGrid реализовать LookupCombo столбец с с автодополнением по мере набора текста? Хотел сделать обработчик OnSelectEditor с показом своего контрола - недоступно.

Здравствуйте.
Я редко использую саму сетку для редактирования данных, поэтому таким функционалом не заморачивался. Можно попробовать добавить.
Не могли бы Вы пример изготовить в Lazarus, можно с обычной сеткой, если там это работает?
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение v-t-l » 27.02.2024 16:29:20

AutoComplete для Lookup полей стандартной TDBGrid отсутствует. Поэтому сделал в примере через OnSelectEditor.
3.7z
Тестовый пример
(78.6 КБ) Скачиваний: 250

В DieselPascal событие OnSelectEditor не доступно.
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 29.02.2024 12:44:01

Выпустил новую версию с поддержкой события. Вставил код из Вашего примера, Есть отличие:
Для получения прямоугольника, где отображать редактор, использовать r = xDBGrid1.SelectedEditorRect;
Если в столбце используется 2 поля и нужно понять где и как отображать редаткор, для верхнего поля или для нижнего, использовать xDBGrid1.CellCursorPos.
Если (Column.Index = 5) and (xDBGrid1.CellCursorPos = ccpTop) курсор в столбце с индексом 5 и в верхнем положении для поля Field
Если (Column.Index = 5) and (xDBGrid1.CellCursorPos = ccpBottom) курсор в столбце с индексом 5 и в нижнем положении для поля xField
Я убрал связь с полями и пробовал без данных, время было мало на эксперименты, сам редактор отображается. Попробуйте, получится с данными или нет?

Код: Выделить всё
method TNomenkForm.xDBGrid1SelectEditor(Sender: TObject; Column: TxColumn; var Editor: TWinControl);
var
  r: TRect;
  Ed: TDBLookupComboBox;
begin
  //if (Column.Index = 5) then
  //Если в столбце используется 2 поля и нужно понять где и как отображать редаткор,
  //Для верхнего поля или для нижнего, использовать xDBGrid1.CellCursorPos
  //На примере ниже проверяется что курсор стоит в верхнем положении.
  //Если второе поле в столбце не используется то использовать как if (Column.Index = 5)  then, без проверки позиции курсора
  if (Column.Index = 5) and (xDBGrid1.CellCursorPos = ccpTop)  then
    if ED = nil then
      ED = TDBLookupComboBox.Create(Self);
    end;
    ED.Parent = TWinControl(Sender);
    ED.Visible = False;
    ED.Color = clLime;
    //ED.DataSource:=ALBUMS_DS;
    //ED.DataField:='ArtistId';
    //ED.ListSource:=ARTISTS_DS;
    //ED.KeyField:='ArtistId';
    //ED.ListField:='Name';
    ED.AutoComplete = True;
//    ED.AutoDropDown:=True;
//    ED.AutoSelect:=True;
    r = xDBGrid1.SelectedEditorRect;
    ED.Left = r.Left-2;
    ED.Top = r.Top-2;
    ED.Width = r.Width;
    ED.Height = r.Height;
    Editor = ED;
  end;
end; 


ps. Пример на Дизель-Паскале.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение v-t-l » 31.03.2024 22:07:16

Работает. Только, нужно добавить
Код: Выделить всё
method TForm1.EDEditingDone(Sender: TObject);
begin
  TWinControl(Sender).Parent.SetFocus;
end;


Еще, в стандартном DBGrid есть среди Options полезная опция dgDisplayMemoText, позволяющая отображать в ячейках содержимое Memo-полей вместо текста (Memo).
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 01.04.2024 14:12:34

v-t-l писал(а):Работает. Только, нужно добавить
Код: Выделить всё
method TForm1.EDEditingDone(Sender: TObject);
begin
  TWinControl(Sender).Parent.SetFocus;
end;


Еще, в стандартном DBGrid есть среди Options полезная опция dgDisplayMemoText, позволяющая отображать в ячейках содержимое Memo-полей вместо текста (Memo).

Посмотрю, как время будет. Попробую добавить опцию.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение v-t-l » 30.08.2024 18:40:13

В последней версии Diesel Pascal 2.3.2, которая с ZeosDBO 8.0, не передаются параметры запросов, как минимум в TZReadOnlyQuery. В Diesel всё присваивается, а в постгресе NULL.
В Lazarus TZReadOnlyQuery с параметрами отрабатывает нормально.
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 30.08.2024 23:09:59

v-t-l писал(а):В последней версии Diesel Pascal 2.3.2, которая с ZeosDBO 8.0, не передаются параметры запросов, как минимум в TZReadOnlyQuery. В Diesel всё присваивается, а в постгресе NULL.
В Lazarus TZReadOnlyQuery с параметрами отрабатывает нормально.

Понял, проверю.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение Alexander » 31.08.2024 08:11:31

Ему бы компиляцию в машинный код сделать, да переписать на самом себе без Лазаруса...
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 771
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Diesel Pascal

Сообщение *Rik* » 31.08.2024 18:11:26

Alexander писал(а):Ему бы компиляцию в машинный код сделать, да переписать на самом себе без Лазаруса...

Смысла нет, будет тот же Лазарус..

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

Добавлено спустя 51 минуту 27 секунд:
v-t-l писал(а):В последней версии Diesel Pascal 2.3.2, которая с ZeosDBO 8.0, не передаются параметры запросов, как минимум в TZReadOnlyQuery. В Diesel всё присваивается, а в постгресе NULL.
В Lazarus TZReadOnlyQuery с параметрами отрабатывает нормально.

Надо проверить, обновил сборку. Дизель версия 2.3.4

Собственно, что обнаружил, в компонентах вместо TParam сейчас используется TZParam. В обертке интерпретатора для Zeos, которые подхватывают функции ParamByName был не исправлен возвращаемый результат TParam
Код: Выделить всё
AType.AddMethod('function ParamByName(const Value: string): TParam', @ZAbsRODataSet_PN);

Исправил на TZParam
Код: Выделить всё
AType.AddMethod('function ParamByName(const Value: string): TZParam', @ZAbsRODataSet_PN);

Можно вместо ParamByName использовать PN, пример ZQuery.PN('paramname').AsString = 'ыааы';
Надеюсь исправление поможет. Попробовал небольшой тест:
Код: Выделить всё
  ZReadOnlyQuery1.SQL.Text = 'INSERT INTO delivery (delivery_id, delivnaim) VALUES (:delivery_id, :delivnaim)';
  ZReadOnlyQuery1.PN('delivery_id').AsLargeInt = GetDeliveryID.GetNextValue;
  ZReadOnlyQuery1.PN('delivnaim').AsString = 'ыаыаы';
  ZReadOnlyQuery1.ExecSQL;
  Delivery.Close;
  Delivery.Open;

У меня работает.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Пред.След.

Вернуться в Компилятор / язык программирования

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru