Diesel Pascal

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

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

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 18.06.2014 08:49:29

ogorodov писал(а):Привет *Rik*
Я тут еще на баг наткнулся ... вот такая конструкция не работает
На исходной версии работала ... посмотри пожалуста

Я свой тестовый пример смотрю, в нем то-же самое, у меня работает. Можете сделать тестовый проект с базой?

Скорее всего транзакция не стартанула автоматом. На ibqPlanNume AutoStartTransaction установлено?
Попробуйте сделать так:
Код: Выделить всё
ibqPlanNume: TIBDataSet;
...
procedure Tdm.DoReturnDatePlan(Sender: TObject; const Date: TDateTime; const TypPl: Integer; const KomentPl: String);
begin
  ibqPlanNume.Edit;
  ibqPlanNume.FieldByName('DATEPL').AsDateTime:=Date;
  ibqPlanNume.FieldByName('TYPEPL').AsInteger:=TypPl;
  ibqPlanNume.UpdateTransaction.StartTransaction;
  (ibqPlanNume.FieldByName('NOTE') as TBlobField).AsString:=UTF8ToCP1251(KomentPl);
  ibqPlanNume.Post;
end;

Если сработает, будем смотреть почему не срабатывает авто запуск транзакции.

Blob в IB живет отдельной жизнью, работа с ним идет не так как с обычными данными. Если при работе с данными транзакцию можно запустить во время метода Post, когда данные пересылаются на сервер, то при обращении к Blob полю данные тут-же отправляются на сервер, поэтому транзакцию нужно запускать отдельно, независимо от DataSet.Post.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 353
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal (Суржи)

Сообщение ogorodov » 18.06.2014 10:19:56

Да в таком варианте заработала .... может это из-за того что я со старой версией FireBird работаю ... 1.5.5
ogorodov
новенький
 
Сообщения: 30
Зарегистрирован: 22.10.2009 11:32:07

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 18.06.2014 10:29:13

ogorodov писал(а):Да в таком варианте заработала .... может это из-за того что я со старой версией FireBird работаю ... 1.5.5

Нет, не из-за этого.

Попробуйте вот такой вариант.
Замените у себя файлы вот этими:
http://visual-t.ru/files/IBCustomDataSet.pas
http://visual-t.ru/files/IBBlob.pas
Я старт транзакции в другое место перенес, так должно быть правильнее.

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

Re: Diesel Pascal (Суржи)

Сообщение ogorodov » 18.06.2014 11:13:55

Все заработало в автомате ... Спасибо ...
Я еще изменения внес в модуля ... может сгодиться
Код: Выделить всё
IBIntf.pas
...
  function InternalLoadLibrary: TLibHandle;

  var
      S, LocalLib, LibPath: string;
  begin
    Result := NilHandle;
    S := LibName;
    if (S <> '') then
    begin
      {$IFDEF LCLSUPPORT}
      LibPath := ExtractFilePath(S);
      if LibPath = '' then
        begin
          LocalLib := ExtractFilePath(Application.ExeName) + S;
          if FileExists(UTF8ToSys(LocalLib)) then
            Result := LoadLibrary(UTF8ToSys(LocalLib))
        end else begin
  //        if FileExists(UTF8ToSys(S)) then
          Result:=LoadLibrary(UTF8ToSys(S));
        end;
      {$ELSE}
//      if FileExists(UTF8ToSys(S)) then
        Result:=LoadLibrary(UTF8ToSys(S));
      {$ENDIF}
    end
  end;

Без этого программы не подтягивают клиентские библиотеки из системных каталогов ... приходиться ее держать в папке с программой
ogorodov
новенький
 
Сообщения: 30
Зарегистрирован: 22.10.2009 11:32:07

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 18.06.2014 11:23:15

ogorodov писал(а):Все заработало в автомате ... Спасибо ...
Я еще изменения внес в модуля ... может сгодиться

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

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 25.07.2014 12:40:22

Обновил Дизель-паскаль и компоненты.
Исправлены ошибки в дизайнере форм (в основном проявляющиеся в Linux). В компоненте дизайнер форм добавлено свойство которое управляет способом перемещения компонентов по форме: перемещать сам объект или его контур как в Delphi 7 (у последнего способа выявлен баг, этиология которого пока не до конца ясна, поэтому трудно определиться с лечением).
Улучшения в компоненте xFormsBar - компонента которая эмулирует работу MDI интерфейса.
В движок Дизель-паскаль внедрена поддержка библиотеки uos для воспроизведения аудио файлов.

visual-t.ru

Скриншоты рабочего приложения Дизель-паскаль (используем уже не один месяц, полет нормальный) и дизайнера в Win и Lin:
http://www.visual-t.ru/screenshots.htm
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 353
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal (Суржи)

Сообщение ogorodov » 30.07.2014 12:33:14

Привет Rik
Не подскажеш где нужно исправить исходники IBSQL IBQuery в твоей версии чтобы StartUpdateTransaction выполнялось автоматом при запросах типа update и insert ?
ogorodov
новенький
 
Сообщения: 30
Зарегистрирован: 22.10.2009 11:32:07

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 30.07.2014 14:42:23

ogorodov писал(а):Привет Rik
Не подскажеш где нужно исправить исходники IBSQL IBQuery в твоей версии чтобы StartUpdateTransaction выполнялось автоматом при запросах типа update и insert ?


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

В IBQuery транзакция и так автоматом стартует, я его вроде как не трогал... Что не так с ним? Опиши что с ним делаешь или пример какой-нибудь дай...
IBQuery не рассчитан на работу с 2мя транзакциями. Ему в свойстве Transaction назначается только одна транзакция, если SQL запросы модифицирующие, то назначается пишущая транзакция..
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 353
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal (Суржи)

Сообщение ogorodov » 04.08.2014 11:59:41

просто при запросах модификации типа ...
Код: Выделить всё
  sqlu:=TIBSQL.Create(nil);
  try
    sqlu.Database:=idbMail;
    sqlu.Transaction:=ibtMailUpd;
    if not ibtMailUpd.Active then
      ibtMailUpd.StartTransaction;
    sqlu.SQL.Text:='delete from PLACE...
    sqlu.ExecQuery;
    sqlu.Transaction.Commit;
  finally
    sqlu.Free;
  end;

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

Re: Diesel Pascal (Суржи)

Сообщение sign » 05.08.2014 06:19:27

Напишите процедуру, в которой будете всё приготавливать, всё проверять.
Код: Выделить всё
procedure Prepare(sqlu: ...; idbMail: ...; ibtMailUpd: ...; const sqlText: string);
begin
  sqlu.Database:=idbMail;
  sqlu.Transaction:=ibtMailUpd;
  if not ibtMailUpd.Active then
      ibtMailUpd.StartTransaction;
  sqlu.SQL.Text:=sqlText;
end;

Тогда ваш вызовы будут просты:
Код: Выделить всё
  sqlu:=TIBSQL.Create(nil);
  try
    Prepare(sqlu, idbMail, ibtMailUpd, 'delete from PLACE...');
    sqlu.ExecQuery;
    sqlu.Transaction.Commit;
  finally
    sqlu.Free;
  end;
sign
энтузиаст
 
Сообщения: 873
Зарегистрирован: 30.08.2009 09:20:53

Re: Diesel Pascal (Суржи)

Сообщение ogorodov » 05.08.2014 08:50:10

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

Re: Diesel Pascal (Суржи)

Сообщение Kemet » 16.10.2014 17:54:29

Юра, есть планы перевести Дизель Паскаль полностью на UTF8?
Kemet
постоялец
 
Сообщения: 231
Зарегистрирован: 10.02.2010 19:28:32
Откуда: Временно оккупированная территория

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 16.10.2014 18:27:12

Kemet писал(а):Юра, есть планы перевести Дизель Паскаль полностью на UTF8?

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

Re: Diesel Pascal (Суржи)

Сообщение Kemet » 16.10.2014 20:15:52

Юра, я пока детально не смотрел, но вот открываю dplex и вижу там конвертацию обрабатываемого скрипта в cp1251
Kemet
постоялец
 
Сообщения: 231
Зарегистрирован: 10.02.2010 19:28:32
Откуда: Временно оккупированная территория

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 16.10.2014 21:17:17

Kemet писал(а):Юра, я пока детально не смотрел, но вот открываю dplex и вижу там конвертацию обрабатываемого скрипта в cp1251

Однобайтовые символы парсить проще и быстрее. Я пока не отказался от русской транскрипции языка программирования (хотя на данный момент эта функция отключена), поэтому пока так, строки оттуда возвращаются в UTF-8, поэтому, собственно не вижу большой проблемы(для России, во всяком случае). Парсеры в SynMemo хоть и не переводят код в однобайтовую кодировку, но работать с многобайтовыми символами для задания подсветки синтаксиса, тоже не умеют, поэтому пока загвоздка с русской транскрипцией, не удается сделать подсветку синтаксиса...
В Delphi версии можно было так, тут редактор был свой, самописный:
Изображение
Если поддержку транскрипции включить, интерпретатор и сейчас русский код прогонит...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 353
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Пред.След.

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

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

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 1

Рейтинг@Mail.ru