Size: a a a

2020 December 23

SB

Sergey Bodrov in Delphi & Lazarus
Или то же самое? Блин, извините, устал, не соображаю.
источник

Y

YuS in Delphi & Lazarus
Sergey Bodrov
Или то же самое? Блин, извините, устал, не соображаю.
:) Спасибо. Да я с IPC пытался работать, но в рамках передачи данных между разными процессами. И там есть ньюансы, связанные с безопасностью. В рамках одного процесса думаю все должно быть хорошо. Говорю про винду.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
YuS
Всем привет. Есть некая многопоточная либа, которая в потоках  использует Synchronize(@SomeMethod) для вызова событий в основном потоке (OnComplete, OnError etc.). Пытаюсь запустить приложение использующее эту либу как сервис в винде. Но так как в сервисе нет очереди событий, то соответственно synchronize не отрабатывают. Какие есть пути решения? Lazarus.
CheckSynchronize можно в цикле вызывать. поможет
источник

DB

Dmitry Belkevich in Delphi & Lazarus
кусок LazSvcMgr:

procedure TService.ManageDaemon;
begin
//FSecs := 10;
DoStart;
repeat
 if FDoTerm then
  Break
 else
  { wait a while }
  Sleep(50);
 CheckSynchronize;
until FDoTerm;
DoStop;
end;
источник

Y

YuS in Delphi & Lazarus
Dmitry Belkevich
CheckSynchronize можно в цикле вызывать. поможет
Ну как вариант
источник

n

novicer in Delphi & Lazarus
добрый вечер!
Подскажите, пожалуйста, почему это не работает? (задача покрасить окамляющие фиксированные  ячейки в разные цвета). Как можно решить эту задачу? https://pastebin.com/M1UynS2U
источник

VA

Viktor Akselrod in Delphi & Lazarus
novicer
добрый вечер!
Подскажите, пожалуйста, почему это не работает? (задача покрасить окамляющие фиксированные  ячейки в разные цвета). Как можно решить эту задачу? https://pastebin.com/M1UynS2U
(flag<20)

зачем?
источник

VA

Viktor Akselrod in Delphi & Lazarus
Stringgrid1.Cells[acol, arow]:=Stringgrid1.Cells[acol, arow];

а это что за магия?
источник

n

novicer in Delphi & Lazarus
Viktor Akselrod
(flag<20)

зачем?
без него ячейки перекрашиваются ежесекундно (цветомузыка, не знаю как назвать...). с этим флагом, красятся вообще. собственно, логично, что он просто вызывает эту функцию перерисовки большое количество раз, но как же в этом случае решить задачу?
источник

n

novicer in Delphi & Lazarus
Viktor Akselrod
Stringgrid1.Cells[acol, arow]:=Stringgrid1.Cells[acol, arow];

а это что за магия?
это фигня какая-то, просто забыл о существовании textout. удалил
источник

VA

Viktor Akselrod in Delphi & Lazarus
novicer
без него ячейки перекрашиваются ежесекундно (цветомузыка, не знаю как назвать...). с этим флагом, красятся вообще. собственно, логично, что он просто вызывает эту функцию перерисовки большое количество раз, но как же в этом случае решить задачу?
убери этот флаг.
ячейки будут перекрашиваться ровно тогда, когда это нужно
источник

n

novicer in Delphi & Lazarus
Viktor Akselrod
убери этот флаг.
ячейки будут перекрашиваться ровно тогда, когда это нужно
да, действительно. из-за переприсваивания перерисовывал. странно немного... странно устроена память в pascal... почему из-за копирования 1 свойства самого в себя, вызывалась процедура перерисовки?
источник

VA

Viktor Akselrod in Delphi & Lazarus
novicer
да, действительно. из-за переприсваивания перерисовывал. странно немного... странно устроена память в pascal... почему из-за копирования 1 свойства самого в себя, вызывалась процедура перерисовки?
память и паскаль тут непричем.
у тебя в сеттере текста ячейки вызывается перерисовка.
поэтому ты и получаешь цветомузыку
источник

DB

Dmitry Belkevich in Delphi & Lazarus
может кто не видел:
https://habr.com/ru/post/534466/
источник
2020 December 24

DB

Dmitry Belkevich in Delphi & Lazarus
"Придётся пожертвовать вызовами Excel через COM-объекты"

к слову. лучше и под виндой этим пожертвовать )
тут как раз либа пробегала. которая как раз и в лазаре работает
источник

O

Oleg in Delphi & Lazarus
Dmitry Belkevich
"Придётся пожертвовать вызовами Excel через COM-объекты"

к слову. лучше и под виндой этим пожертвовать )
тут как раз либа пробегала. которая как раз и в лазаре работает
Пользуясь случаем, хотел бы отметить оперативность исправления багов в fpSpreadsheet. У меня недавно был случай с файлом xlsx, сформированным не в Excel; при открытии демкой из комплекта компонентов не читались значения ячеек. Автор исправил меньше чем за 4 часа и обновил SVN.
источник

Y

YuS in Delphi & Lazarus
Lazarus. Оказывается у потоков работающих в процессе без очереди событий, не отрабатывает OnTerminate. Точнее он в очередь встает, но так как нет обработчика очереди, то поток залипает и не освобождается, как следствие утечка памяти.
источник

VA

Viktor Akselrod in Delphi & Lazarus
YuS
Lazarus. Оказывается у потоков работающих в процессе без очереди событий, не отрабатывает OnTerminate. Точнее он в очередь встает, но так как нет обработчика очереди, то поток залипает и не освобождается, как следствие утечка памяти.
это общее поведение и для фпц и для делфи. решение подсказали выше - самому дергать CheckSynchronize
источник

Y

YuS in Delphi & Lazarus
Viktor Akselrod
это общее поведение и для фпц и для делфи. решение подсказали выше - самому дергать CheckSynchronize
На самом деле я не разобрался где в демоне дергать CheckSyncronize. В итоге отказался от Synchronize. А при завершении потока увидел, что OnTerminate не работает.
источник

VA

Viktor Akselrod in Delphi & Lazarus
OnTerminate работает через Synchronize, если что. так что все логично
источник