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

Лидеры

  1. gateofdenied

    gateofdenied

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


    • Баллы

      2

    • Постов

      3


  2. krapotkin

    krapotkin

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


    • Баллы

      1

    • Постов

      2 179


  3. ENERGY

    ENERGY

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


    • Баллы

      1

    • Постов

      568


Популярный контент

Показан контент с высокой репутацией 19.07.2018 во всех областях

  1. В общем разобрался. Вдруг кому пригодится procedure TForm1.Button1Click(Sender: TObject); var buf: array[0..60] of Char; n: Integer; fmt: Word; H: THandle; P: PAnsiChar; S:UnicodeString; begin for n := 0 to Clipboard.FormatCount - 1 do begin fmt := Clipboard.Formats[n]; Clipboard.Open; if GetclipboardFormatName(fmt, buf, Pred(Sizeof(buf))) <> 0 then begin begin H := Clipboard.GetAsHandle(fmt); P := GlobalLock(H); S:=UnicodeString(P); Memo1.Lines.Add(P); GlobalUnlock(H); end; end; Clipboard.Close; end; end;
    2 балла
  2. Это для совсем простеньких случаев, когда классу потока не нужны поля, методы и все такое. TTask.Run ничем не отличается от этого А для более продуманных вещей потомки TThread по-прежнему рулят
    1 балл
  3. Лучше не наследоваться в отдельный класс от TThread, как это делалось раньше в Delphi. Это громоздкий и запутанный код. Лучше используйте анонимные потоки. Вот вам шаблон: http://blog.marcocantu.com/blog/2014_may_background_delphi_android_threads.html TThread.CreateAnonymousThread( procedure begin // выполняется в потоке TThread.Queue(nil, procedure begin /// выполняется в главном потоке, когда завершиться анонимный поток. end); end ).Start; procedure TForm5.Button3Click(Sender: TObject); begin TThread.CreateAnonymousThread(procedure () begin // выполняется в потоке TThread.Synchronize (TThread.CurrentThread, procedure () begin // выполняется в главном потоке, но при этом анонимный поток еще продолжит работать, но сейчас приостановлен end); end).Start; end; И помните что с элементами GUI нельзя работать из другого потока, только из главного ( TThread.Queue, TThread.Synchronize). Иначе будет Access Violation, который будет выскакивать случайным образом.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...