Володимир Антонашко

Пользователи
  • Публикаций

    10
  • Зарегистрирован

  • Посещение

Информация о Володимир Антонашко

  • Звание
    Пользователь

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Включить
  1. Володимир Антонашко

    Освобождение памяти. И перерисовка Tcolumn.

    Извиняюсь. Действительно все правильно работает. У меня ошибка была в другом месте. Но проблема с памятью осталась. Использование всего трех фотографий по 1мб заняли аж 10мб ОЗУ. Мне нужно найти способ освобождать память после удаление фотографий из stringgrid.
  2. Володимир Антонашко

    Освобождение памяти. И перерисовка Tcolumn.

    Может дело в том что я колонке glyphcolumn пробую присвоить string?
  3. Володимир Антонашко

    Освобождение памяти. И перерисовка Tcolumn.

    У меня на версии berlin так работать не хочет. А точнее изображение выводиться. Но только с индексом 0.
  4. Володимир Антонашко

    Освобождение памяти. И перерисовка Tcolumn.

    Представляю.. Я вчера попробовал. Клиенту нужен в таком случае ssd и мощное железо. Да.. Вариант плохой. Есть идеи как организовать по другому.
  5. Володимир Антонашко

    Освобождение памяти. И перерисовка Tcolumn.

    Я тут подумал.. Что может я выбрал неправильный путь. Может лучше вообще не загружать все через imagelist? Может в drawcolumncell прописать загрузку напрямую из файла. Но тут проблема что интернете нету толком инструкций как пойти напрямую. Может у кого-то завалялся подходящий кусок кода?
  6. Володимир Антонашко

    Освобождение памяти. И перерисовка Tcolumn.

    Здраствуйте. В программе я заполняю Tgrid изображениями из Imagelist по имени фото который есть в ячейке . Код : if column.index = 8 then //Загрузка картинок. if not value.IsEmpty then begin column.BeginUpdate; i:=StrToInt(maingr.Cells[column.Index,row]); imageindex:=main_form.ImageList1.Source.IndexOf(IntToStr(i)); column.Canvas.Clear(RowColor.Color); main_form.ImageList1.draw(column.Canvas,bounds,imageindex,100); column.EndUpdate; end; Если я уберу очистку канвы то изображения накладуються. А так как есть следующий раз при вызове DrawColumnCell изображение остается только в последней записи. Но такой код в процедуре SelectCell нормально отображает изображение. На каждый вызов. Даже если изображение в ячейке нету. if acol = 8 then begin i:=maingr.Cells[Acol,Arow]; imageindex:=main_form.ImageList1.Source.IndexOf(i); imageviewer1.Bitmap.Clear(TAlphaColors.Null); imageviewer1.Bitmap:=main_form.ImageList1.Bitmap(size,imageindex); end; И по поводу памяти. Как я понял, после того как я присвою изображение ячейке, оно загружается в память. Также когда отображается в ImageViewer. Но после удаления строки с изображениям, память остается занята для уже использованных изображений. То есть при повторном показе память больше не занимается и используется изображение которое было ранее загружено. Думаю это нормальное поведение. Так увеличивается скорость работы программы. Но я собираюсь показывать до 50 фотографий одновременно (средний размер 1мб) из 5-10 тисяч. И мне нужно чтоб после использования изображений память очищалась, иначе программа будет кушать под 10гб оперативной памяти.
  7. Володимир Антонашко

    Не работает поток на других ПК

    Извините все утро на это потратил и забыл проверить очевидное. Нужно больше спать. Когда создавал tempbase поставил почему то direct=false, и забыл. Спасибо всем за помощь.
  8. Володимир Антонашко

    Не работает поток на других ПК

    Могу добавить что пробовал на windows xp и windows 7. Результат аналогичен. Связка unidac+sqlite в директ режиме. Local.connected точно true. Работа с базой ведеться в основном потоке нормально.
  9. Володимир Антонашко

    Не работает поток на других ПК

    Визуально только опредилить работу могу. Memo не очищаеться. И в tempbase ничего не пишеться. procedure localbackup.memcount; begin count:=main.main_form.sqlmemo.Lines.Count; end; procedure localbackup.updatememo; var i:integer; begin setlength(mem,0); setlength(mem,main.main_form.sqlmemo.Lines.Count); tempbase.SQL.Clear; tempbase.SQL.Append('SELECT * FROM queries'); tempbase.Active:=True; for I := 0 to main.main_form.sqlmemo.Lines.Count-1 do begin tempbase.Insert; tempbase.FieldByName('sql_rec').AsString:=main.main_form.sqlmemo.Lines[i]; tempbase.Post; {tempbase.SQL.Append(main.main_form.sqlmemo.Lines[i]);} end; tempbase.Active:=false; main.main_form.sqlmemo.Lines.Clear; end; procedure localbackup.Execute; begin { Place thread code here } tempdbcreate; base:=Tuniquery.Create(nil); base.Connection:=main.main_form.local; while True do begin sleep(5000); if main.main_form.local.Connected then begin synchronize(memcount); if (count)>0 then begin Synchronize(updatememo); writeinbase; writeinbackup; end; end else begin /// locstatus(1,'str'); sleep(15000); end; end; end;
  10. Здраствуйте, не знаю в чем проблема. Поток в програме работает на моей машине, в не зависимосте как запустил програму, в среде или нет. С vcl проблем небыло, а сейчас перевел на fmx. Поток должен мониторить визуальный компонент и если нада обращаться к бд. А на стороннем пк поток не запускаеться. Запускаю так. var th : SomeThread; begin th := SomeThread.Create; th.FreeOnTerminate := true; th.Resume; end;