Перейти к содержанию
Fire Monkey от А до Я

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

Пользователи
  • Постов

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

  • Посещение

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

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

Достижения Володимир Антонашко

  1. Извиняюсь. Действительно все правильно работает. У меня ошибка была в другом месте. Но проблема с памятью осталась. Использование всего трех фотографий по 1мб заняли аж 10мб ОЗУ. Мне нужно найти способ освобождать память после удаление фотографий из stringgrid.
  2. У меня на версии berlin так работать не хочет. А точнее изображение выводиться. Но только с индексом 0.
  3. Представляю.. Я вчера попробовал. Клиенту нужен в таком случае ssd и мощное железо. Да.. Вариант плохой. Есть идеи как организовать по другому.
  4. Я тут подумал.. Что может я выбрал неправильный путь. Может лучше вообще не загружать все через imagelist? Может в drawcolumncell прописать загрузку напрямую из файла. Но тут проблема что интернете нету толком инструкций как пойти напрямую. Может у кого-то завалялся подходящий кусок кода?
  5. Здраствуйте. В программе я заполняю 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гб оперативной памяти.
  6. Извините все утро на это потратил и забыл проверить очевидное. Нужно больше спать. Когда создавал tempbase поставил почему то direct=false, и забыл. Спасибо всем за помощь.
  7. Могу добавить что пробовал на windows xp и windows 7. Результат аналогичен. Связка unidac+sqlite в директ режиме. Local.connected точно true. Работа с базой ведеться в основном потоке нормально.
  8. Визуально только опредилить работу могу. 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;
  9. Здраствуйте, не знаю в чем проблема. Поток в програме работает на моей машине, в не зависимосте как запустил програму, в среде или нет. С vcl проблем небыло, а сейчас перевел на fmx. Поток должен мониторить визуальный компонент и если нада обращаться к бд. А на стороннем пк поток не запускаеться. Запускаю так. var th : SomeThread; begin th := SomeThread.Create; th.FreeOnTerminate := true; th.Resume; end;
×
×
  • Создать...