Перейти к содержанию
  • Регистрация

Slym

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

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

  • Посещение

  • Победитель дней

    5

Slym стал победителем дня 5 февраля

Slym имел наиболее популярный контент!

Информация о Slym

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

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

  1. FDQuery1.Lookup? или RTTI c:=FindComponent(FDQuery1.Fields[1].AsString) if assigned(c) SetProp(c,FDQuery1.Fields[2].AsString,TValue.From(FDQuery1.Fields[3].AsString))
  2. Под андроид идет опция AUTOREFCOUNT - все объекты имеют счетчик ссылок... любое присваивание - это +/- ссылки, даже Free не честное: procedure TObject.Free; begin // under ARC, this method isn't actually called since the compiler translates // the call to be a mere nil assignment to the instance variable, which then calls _InstClear {$IFNDEF AUTOREFCOUNT} if Self <> nil then Destroy; {$ENDIF} end; т.е. Free ничего не делает!!! - экземпляр остается в зомбирежиме (ты его убил а оно ходит) пока счетчик до 0 не до тикает. TObject(TreeItem); - пытается найти методы подсчета ссылок (Это же объект!) и не находит т.к. это не объект вовсе. TTreeItem = record меняем на TTreeItem = class, честно создаем и не забываем убить, хотя под AUTOREFCOUNT - оно само должно помереть если циклической ссылочности нет.
  3. аяяй! Совсем разленились try юзать, все на RefCounting надеетесь... ну-ну... а под вендой мемлики плодятся (если файла нет - Surf куда?) не-не... переделать! а то студенты накопипастят... procedure TBitmapAsyncLoader.LoadImageAsync(const AFilePath:string; Callback: TProc); begin TTask.Run( procedure var ABitmapSurface : TBitmapSurface; begin ABitmapSurface:=TBitmapSurface.Create; try if TBitmapCodecManager.LoadFromFile(AFilePath, ABitmapSurface, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) and assigned(Callback) then TThread.Synchronize(nil, Callback); finally ABitmapSurface.Free; end; end); end;
  4. ну в общем воркеры имеются... например TTask и запускаются в пуле... и можно запускать много тасков и они из общего пула не вылезут и делать к примеру так: данный код не бест и может ломать пикчу, и поэтому вопрошаю кто как... пользую TBitmap а не Surface что тоже не оптимально, но обратно совместимо с vcl (в дефайн обернуть?) procedure LoadImageAsync(const Name:string; Callback: TProc<TBitmap>); begin TTask.Run( procedure var Bitmap:TBitmap; begin Bitmap:=TBitmap.Create; try Bitmap.LoadFromFile(ImagePath+Name); TThread.Synchronize(nil, procedure begin Callback(Bitmap); end); finally Bitmap.Free; end; end); end; procedure TmainForm.FormShow(Sender: TObject); begin LoadImageAsync('logo1.png', procedure(Bitmap:TBitmap) begin Image1.Bitmap.Assign(Bitmap); Image1.Invalidate; end); LoadImageAsync('logo2.png', procedure(Bitmap:TBitmap) begin Image2.Bitmap.Assign(Bitmap); Image2.Invalidate; end); LoadImageAsync('logo3.png', procedure(Bitmap:TBitmap) begin Image3.Bitmap.Assign(Bitmap); Image3.Invalidate; end); end;
  5. Доп вопрос в тему: Как вы с fs загружаете картинки? по тутору андрюши любой доступ к fs желательно поточить, а тут еще и декод... а декод можно параллелить на кучи ядер смартфона но все поголовно не заморачиваются и тупо LoadFromFile в главном потоке. как правильно? на косяки TBitmap в потоке тоже нарывался прозрачность портит/чернит 1. допустим есть форма и TImage на ней, и в него надо положить logo.png 2. тоже самое но 10-20 images (параллельный декод)
  6. У меня IPhone6 вдулся от постоянного висения на шнурке... Теперь правило вечером отключить... но нет! нет отладки - нет зарядки и садится в ноль! Теперь правило в понедельник всегда на зарядку...
  7. а so бинари под правельный cpu? so - это нативная либа собранная под конкретный cpu, а не байткод докомпилируемый на месте
  8. А руками uses FireDAC.Phys.Oracle; TFDPhysOracleDriverLink.Create(form); не? все мышкой привыкли...
  9. Не делайте слепое приведение типов... var JObj:TJSONObject; begin JObj:=TJSONObject(TJSONObject.ParseJSONValue('0')); try try if assigned(JObj) then JObj.AddPair('Access','violation'); except ShowMessage('Surprise MF!: '+JObj.ClassName); end; finally JObj.Free; end; end; ParseJSONValue возвращает TJSONValue, и необходима или проверка типа или использование только в рамках TJSONValue чего в большинстве случаев вполне достаточно.
  10. procedure TForm2.Button1Click(Sender: TObject); var Iters:integer; begin Iters:=100000000; TThread.CreateAnonymousThread( procedure var i:integer; a:real; begin for i := 0 to Iters do begin a:=i/3; if i mod 1000000 = 0 then begin TThread.Queue(nil, procedure begin ProgressBar1.Value:=ProgressBar1.Value+1; end); end; end; end).Start; end; и не надо никаких доп классов... еще есть TTask... тоже полезно
  11. PerspEffect1.TopLeft := PerspEffect1.TopLeft+ TPointF.Create(5,0);
  12. Procedure TServerConnectionTH.RecieveData(); // сюда приходя данные со сканера //Data - это данные в виже TBytes //str - строка со считанным штрихкодом var Intent: JIntent; str:String; begin str:=TEncoding.UTF8.GetString(Data); Form1.DisplayR.Lines.Add(Str); Form1.DisplayR.GoToTextEnd; Intent := TJIntent.Create; Intent.setAction(StringToJString('com.google.android.c2dm.intent.RECEIVE')); Intent.putExtra(StringToJString('text'),StringToJString('1')); Intent.putExtra(StringToJString('title'),StringToJString('1C')); Intent.putExtra(StringToJString('data'),StringToJString(str)); TAndroidHelper.Context.sendBroadcast(Intent); end;
×
×
  • Создать...