Diesel Pascal

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

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

Re: Diesel Pascal

Сообщение *Rik* » 11.02.2016 09:43:29

TBlockSerial добавил, но все методы класса добавить не удалось т.к. некоторые работают с буферами через указатель, в системе указателей нет, не знаю, будет ли польза о него в таком виде, сам им не пользуюсь.

IBX обновил, в нем на fpc 3 обнаружился грандиозный косяк. TIBStringField.SetAsString вызывает метод базового класса из модуля dp TStringField.SetAsString, при переходе на fpc 3 "родительский" метод начал калечить данные. На данный момент пришлось обойтись без него, заменил исправленной конструкцией...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 365
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение ogorodov » 22.04.2016 14:15:00

Привет Rik ... Попробовал твои последние компоненты IBX 30
Выдает Exeption: lc_ctype=UTF8 invalid charset name in DBParam
С компонентами прошлой версии такой беды небыло ... с WIN1251 работает нормально
Глянь промеж дела в чем проблема.
ogorodov
новенький
 
Сообщения: 30
Зарегистрирован: 22.10.2009 11:32:07

Re: Diesel Pascal

Сообщение *Rik* » 22.04.2016 19:01:20

ogorodov писал(а):Привет Rik ... Попробовал твои последние компоненты IBX 30
Выдает Exeption: lc_ctype=UTF8 invalid charset name in DBParam
С компонентами прошлой версии такой беды небыло ... с WIN1251 работает нормально
Глянь промеж дела в чем проблема.

FireBird какой версии используешь?
Сейчас, чтобы определить сколько места занимает 1 символ в байтах для указанной в lc_ctype кодировки, компоненты делают запрос к FireBird и он возвращает длину 1 символа в байтах, если FireBird в ответе ни чего не вернул, предполагается что FireBird ни чего не знает о указанной кодировке и в результате возникает указанное тобой исключение... Могу предположить, твоя версия FireBird не обладает соответствующим функционалом. У меня на FireBird 2.5 и 3.0 ошибка не воспроизводится.
Видимо придется ещё что-то придумать для определения длины 1 символа для указанной кодировки, без запроса к FireBird...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 365
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение ogorodov » 25.04.2016 09:01:20

Да все верно ... FireBird 1.5
Подскажи пожалуйста в каком месте происходит запрос по кодировке ... чтобы принудительно кодировку устанавливать без запроса
Чтобы долго самому в сырцах долго не разбираться.
ogorodov
новенький
 
Сообщения: 30
Зарегистрирован: 22.10.2009 11:32:07

Re: Diesel Pascal

Сообщение *Rik* » 25.04.2016 10:19:43

ogorodov писал(а):Да все верно ... FireBird 1.5
Подскажи пожалуйста в каком месте происходит запрос по кодировке ... чтобы принудительно кодировку устанавливать без запроса
Чтобы долго самому в сырцах долго не разбираться.


Пакет IBExpress, модуль IBDatabase, процедуру TIBDataBase.LoadCharSize пока временно можно привести к такому виду, должно работать:
Код: Выделить всё
procedure TIBDataBase.LoadCharSize(CharSetName: string);
begin
  if not Connected then Exit;
 
      FCharLength := 4;
      FCharSetID := 4;
 
end;
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 365
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение ogorodov » 25.04.2016 13:38:12

Спасибо Rik ... в таком варианте заработало ...
ogorodov
новенький
 
Сообщения: 30
Зарегистрирован: 22.10.2009 11:32:07

Re: Diesel Pascal

Сообщение v-t-l » 24.11.2016 12:26:12

Нашел баг в Zeos src/plain/ZPlainPostgreSqlDriver.pas
Объявления, по крайней мере, одной структуры не рассчитаны на что-нибудь, кроме 32 бит
Код: Выделить всё
  TZPostgreSQLNotify = packed record
    relname: PAnsiChar;   { name of relation containing data }
    be_pid:  Integer; { process id of backend }            // А должен под 64 бита быть равен Int64
    payload: PAnsiChar; {additional data in notify}
  end;

Потому вылетает на постгрес-событиях на win64 и lin64.

Как, кстати, объявлен архитектуро-зависимый Integer?

Добавлено спустя 5 минут 28 секунд:
Да, большая просьба к Rikу, пофиксить это в своих сборках. (И проверить ссылки на загрузки на сайте). Заранее спасибо!
v-t-l
энтузиаст
 
Сообщения: 699
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 24.11.2016 12:39:37

v-t-l писал(а):Нашел баг в Zeos src/plain/ZPlainPostgreSqlDriver.pas
Объявления, по крайней мере, одной структуры не рассчитаны на что-нибудь, кроме 32 бит
Код: Выделить всё
  TZPostgreSQLNotify = packed record
    relname: PAnsiChar;   { name of relation containing data }
    be_pid:  Integer; { process id of backend }            // А должен под 64 бита быть равен Int64
    payload: PAnsiChar; {additional data in notify}
  end;

Потому вылетает на постгрес-событиях на win64 и lin64.

Как, кстати, объявлен архитектуро-зависимый Integer?

Добавлено спустя 5 минут 28 секунд:
Да, большая просьба к Rikу, пофиксить это в своих сборках. (И проверить ссылки на загрузки на сайте). Заранее спасибо!

Иногда ошибки возникают в результате неудачного "прикручивания" компоненты к движку Дизель-Паскаль...
А если тестовое приложение сделать, в самом Lazarus, баг воспроизводится?
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 365
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal

Сообщение v-t-l » 24.11.2016 12:52:53

Именно в Lazarus и удалось его вычислить.
После замены под Lazarus 1.6.2 rUnknown FPC 3.0.0 x86_64-linux-gtk 2 в структуре
Код: Выделить всё
be_pid:  Integer;
на
Код: Выделить всё
be_pid:  Int64;
тестовое приложение заработало нормально.
v-t-l
энтузиаст
 
Сообщения: 699
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 24.11.2016 12:55:23

v-t-l писал(а):Именно в Lazarus и удалось его вычислить.
После замены под Lazarus 1.6.2 rUnknown FPC 3.0.0 x86_64-linux-gtk 2 в структуре
Код: Выделить всё
be_pid:  Integer;
на
Код: Выделить всё
be_pid:  Int64;
тестовое приложение заработало нормально.

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

Re: Diesel Pascal

Сообщение v-t-l » 24.11.2016 13:59:51

*Rik* писал(а):А если на PtrInt заменить?

Работает, но мне кажется, идеологически :D правильнее будет SizeInt, ведь be_pid - это номер процесса, а не его адрес.
v-t-l
энтузиаст
 
Сообщения: 699
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 24.11.2016 15:15:08

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

Re: Diesel Pascal

Сообщение v-t-l » 24.11.2016 15:29:30

Спасибо!

Ссылки на странице http://visual-t.ru/download.html не все корректны:
TxDBF -> http://visual-t.ru/files/ibx.7z
Откомпилированный движок под Linux x64: Загрузить(tar.gz) -> http://visual-t.ru/files/exewindows64.7z
v-t-l
энтузиаст
 
Сообщения: 699
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Diesel Pascal

Сообщение *Rik* » 24.11.2016 15:40:02

v-t-l писал(а):Спасибо!

Ссылки на странице http://visual-t.ru/download.html не все корректны:
TxDBF -> http://visual-t.ru/files/ibx.7z
Откомпилированный движок под Linux x64: Загрузить(tar.gz) -> http://visual-t.ru/files/exewindows64.7z

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

Re: Diesel Pascal

Сообщение v-t-l » 25.11.2016 08:51:42

v-t-l писал(а):Нашел баг в Zeos src/plain/ZPlainPostgreSqlDriver.pas
Объявления, по крайней мере, одной структуры не рассчитаны на что-нибудь, кроме 32 бит
Код: Выделить всё
  TZPostgreSQLNotify = packed record
    relname: PAnsiChar;   { name of relation containing data }
    be_pid:  Integer; { process id of backend }            // А должен под 64 бита быть равен Int64
    payload: PAnsiChar; {additional data in notify}
  end;


Кстати, достаточно убрать из объявления packed record слово packed, и всё работает правильно и в 32 и в 64. :D

Добавлено спустя 34 минуты 17 секунд:
Тем более, что process id не превышает 32 бита ни в win64, ни в lin64.
v-t-l
энтузиаст
 
Сообщения: 699
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Пред.След.

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

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

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

Рейтинг@Mail.ru