Таблица лидеров


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

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

  1. 2 балла
    Tumaso

    Разочирование

    Код также пишешь, как пишешь на русском языке?
  2. 1 балл
    FREEFAR

    Сортировка FDTable

    Наличие индекса не обязательно - работает и так. А вот пробел между именем поля и "направлением" сортировки действительно надо без проблема. Ссори - не указал это
  3. 1 балл
    rareMax

    Как узнать, что Android приложение свернуто?

    Прочитайте эту статью: http://delphifmandroid.blogspot.com/2016/09/delphi-android.html
  4. 1 балл
    Вот простой пример накидал. Главная форма, поток, две очереди (очередь запросов и очередь ответов). Вы в главной форме вбивате два числа, и нажимаете кнопку по своему усмотрению (прибавить, умножить, разделить). Числа отправляются в Очередь запросов, поток получает задачу, выполняет и отправляет ответ в очередь ответов. Главная форма, в Application.OnIdle ждет получения результатов проверяя Очередь ответов, при получении добавляет их в Memo. Все. Проект прилагаю в архиве, вот листинг: unit UnitFormMain; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Generics.Collections, FMX.StdCtrls, FMX.Edit, FMX.EditBox, FMX.NumberBox, FMX.Layouts, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo; type TThreadOperation = (Sum, Mult, Divinity); TThreadDataRequest = record A : Double; B : Double; Operation : TThreadOperation; end; TThreadDataAnswer = record Operation : TThreadOperation; A : Double; B : Double; X : Double; ErrorMessage : String; end; TQueueRequest = TThreadedQueue<TThreadDataRequest>; TQueueAnswer = TThreadedQueue<TThreadDataAnswer>; TExcampleThread = class(TThread) protected FQueueRequest: TQueueRequest; FQueueAnswer: TQueueAnswer; procedure Execute; override; public constructor Create(AQueueRequest : TQueueRequest; AQueueAnswer : TQueueAnswer); reintroduce; end; TFormMain = class(TForm) Memo: TMemo; Layout1: TLayout; Label1: TLabel; Label2: TLabel; ButtonSum: TButton; ButtonMult: TButton; ButtonDiv: TButton; EditA: TEdit; EditB: TEdit; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ButtonClick(Sender: TObject); private { Private declarations } FQueueRequest: TQueueRequest; // Очередь запросов FQueueAnswer : TQueueAnswer; // Очередь ответов FExcampleThread : TExcampleThread; procedure OnApplicationIdle(Sender : TObject; var Done: Boolean); public { Public declarations } end; var FormMain: TFormMain; implementation {$R *.fmx} procedure TFormMain.FormCreate(Sender: TObject); begin FQueueRequest:=TQueueRequest.Create(10, 1000, 10); FQueueAnswer:=TQueueAnswer.Create(10, 1000, 10); Application.OnIdle:=OnApplicationIdle; FExcampleThread:=TExcampleThread.Create(FQueueRequest, FQueueAnswer); end; procedure TFormMain.FormDestroy(Sender: TObject); begin if Assigned(FExcampleThread) then begin FExcampleThread.Terminate; FExcampleThread.WaitFor; FExcampleThread.Free; end; if Assigned(FQueueRequest) then FQueueRequest.Free; if Assigned(FQueueAnswer) then FQueueAnswer.Free; end; procedure TFormMain.OnApplicationIdle(Sender : TObject; var Done: Boolean); Var AThreadDataAnswer : TThreadDataAnswer; S : String; begin if FQueueAnswer.PopItem(AThreadDataAnswer) = TWaitResult.wrSignaled then begin case AThreadDataAnswer.Operation of TThreadOperation.Sum : S:=' + '; TThreadOperation.Mult : S:=' * '; TThreadOperation.Divinity : S:=' / '; end; S:=AThreadDataAnswer.A.ToString + S + AThreadDataAnswer.B.ToString + ' = '; if Not AThreadDataAnswer.ErrorMessage.IsEmpty then S:=S + AThreadDataAnswer.ErrorMessage else S:=S + AThreadDataAnswer.X.ToString; Memo.Lines.Add(S); end; end; constructor TExcampleThread.Create(AQueueRequest : TQueueRequest; AQueueAnswer : TQueueAnswer); begin FQueueRequest:=AQueueRequest; FQueueAnswer:=AQueueAnswer; Inherited Create(False); end; procedure TExcampleThread.Execute; Var AThreadDataRequest : TThreadDataRequest; AThreadDataAnswer : TThreadDataAnswer; begin while Not Terminated do begin if FQueueRequest.PopItem(AThreadDataRequest) = TWaitResult.wrSignaled then begin AThreadDataAnswer.Operation:=AThreadDataRequest.Operation; AThreadDataAnswer.ErrorMessage:=''; AThreadDataAnswer.A:=AThreadDataRequest.A; AThreadDataAnswer.B:=AThreadDataRequest.A; AThreadDataAnswer.X:=0; try case AThreadDataRequest.Operation of TThreadOperation.Sum : AThreadDataAnswer.X:=AThreadDataRequest.A + AThreadDataRequest.B; TThreadOperation.Mult : AThreadDataAnswer.X:=AThreadDataRequest.A * AThreadDataRequest.B; TThreadOperation.Divinity : AThreadDataAnswer.X:=AThreadDataRequest.A / AThreadDataRequest.B; end; except on E : Exception do AThreadDataAnswer.ErrorMessage:=E.Message; end; FQueueAnswer.PushItem(AThreadDataAnswer); end; TThread.Sleep(10); end; end; procedure TFormMain.ButtonClick(Sender: TObject); Var AThreadDataRequest : TThreadDataRequest; begin AThreadDataRequest.A:=EditA.Text.ToDouble; AThreadDataRequest.B:=EditB.Text.ToDouble; Case TButton(Sender).Tag of 1 : AThreadDataRequest.Operation:=TThreadOperation.Sum; 2 : AThreadDataRequest.Operation:=TThreadOperation.Mult; 3 : AThreadDataRequest.Operation:=TThreadOperation.Divinity; End; FQueueRequest.PushItem(AThreadDataRequest); end; end. test116 TThreadedQueue.zip
  5. 1 балл
    wamaco

    Сортировка FDTable

    Индекс надо создать по этому полю видимо
  6. 1 балл
    FREEFAR

    Сортировка FDTable

    дополню немного FDTable.IndexFieldNames := 'имя поля :A'; ASC FDTable.IndexFieldNames := 'имя поля :D'; DESC
  7. 1 балл
    Akad

    Что невозможно сделать на Delphi для Android?

    Вопрос не в том, что можно или не можно принципиально сделать, а в том на сколько это потом будет работать у пользователя. Так вот например в текущей версии (10.2.2) можно добиться, что установленное с помощью шнура и adb приложение будет работать стабильно. Но потом берём удаляем это приложение через диспетчер, ставим этот же apk и получаем крэш на старте в дебрях fmx. Очищаем данные с помощью кнопки в диспетчере приложений, и прога (о чудо!) работает без сбоев. Вот подобные проблемы сводят на нет все старания. Когда у вас на отладочных телефонах всё работает нормально, а в плей марките вам единицы ставят да ещё и в отзывах ругают.
  8. 1 балл
    wamaco

    Сортировка FDTable

    FDTable.IndexFieldNames := 'имя поля';
  9. 1 балл
    x11

    TeeGrid для всех платформ

    Бесплатная сетка для некомерческого использования. Я так понял, что без исходников. For Embarcadero RAD Studio 2009 and up to Tokyo 10.2 update 2, Delphi and C++, VCL and Firemonkey frameworks (all platforms: Windows 32 and 64 bit, Mac OSX, Android and iOS), and Lazarus FreePascal (Windows, Linux, etc) https://github.com/Steema/TeeGrid
  10. 1 балл
    rareMax

    Предупреждение MessageDlg

    FMX.Dialogs procedure ShowMsgYesNo; begin { Show a multiple-button alert that triggers different code blocks according to your input } TDialogService.MessageDialog('Choose a button:', System.UITypes.TMsgDlgType.mtInformation, [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], System.UITypes.TMsgDlgBtn.mbYes, 0, // Use an anonymous method to make sure the acknowledgment appears as expected. procedure(const AResult: TModalResult) begin case AResult of { Detect which button was pushed and show a different message } mrYES: ShowMessage('You chose Yes'); mrNo: ShowMessage('You chose No'); end; end); end;
  11. 1 балл
    rareMax

    Предупреждение MessageDlg

    Вот пример: procedure ShowMessage(const TheMessage:String); begin TDialogService.MessageDialog(TheMessage, TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOk], TMsgDlgBtn.mbOk, 0, nil); end;
  12. 1 балл
    fsdb

    MQTT под Ubuntu Server

    вот сделал, кое как. вот так я и хотел
  13. 1 балл
    Barbanel

    Cannot Connect to the Mac

    Разобрались, день был тяжелым и довольно насыщенным) Причина была в том, что не были сгенерированы provision profiles. А мы в свою очередь не имели понятия что они нужны и как их сгенерировать. После генерации оных на developer.apple.com, обновления их же в xcode, загрузки их через paserver с помощью такой-то матери, наконец-то оно заработало! Всем спасибо за моральную поддержку!
  14. 1 балл
    Официальный сайт: http://sphere-live.com/ Обзорные статьи: HabraHabr, delphi2010.ru Ссылки на приложения: Windows, OSX, Android
  15. 1 балл
    rareMax

    Рабочий стол среды

  16. 1 балл
    После переделки с TThread.Synchronize на TThreadedQueue приложение отработало 12 часов без проблем. Ни ошибок, ни утечек. Так что думаю проблема не в моем коде, а именно в TMonitor. Правда на тестовом приложении, с 7 потоками и синхронизацией TThread.Synchronize воспроизвести проблему не удалось, так что черт его знает на каком этапе начинает глючить.
  17. 1 балл
    kami

    Кто хорошо знает внутреннюю структуру FMX?

    Есть дикое ощущение, что могли поломать синхронизацию через TMonitor.Wait. В Телеграме обсуждали подобный глюк, по stacktrace было похоже на это.
  18. 1 балл
    Проект закрыт (уже около года как), ввиду ряда экономических и юридических вопросов.
  19. 1 балл
  20. 1 балл
    kami

    Асинхронный NetHTTPClient

    Пруфов про потоки в асинхронных вызовах не будет, если я правильно понял... Я тоже могу повторить, что завершение всех инициированных собой операций - это проблема создателя этих операций, которую он обязан решить. Если прервать никак - значит дождаться завершения. Более того, возможно (но пока не могу утверждать), что с уничтожением экземпляра THTTPClient его асинхронная операция должна уйти в небытие. А вот здесь ткните меня носом, пожалуйста. Что за HTTPServer - в справке в классах System,Net я такого не нашел. И в исходниках (правда, у меня Берлин) тоже. Возможно - плохо искал. THTTPClient. Причем - без необходимости таскания с собой всяких OpenSSL Library в разных ипостасях. Обратите внимание - я говорил именно за отказ от Indy в http(s) обмене. А не про "полный отказ".
  21. 1 балл
    x11

    Toast для Android Service

    Это не вопрос. Просто подумал, что кому-нибудь может пригодится. https://forums.embarcadero.com/thread.jspa?threadID=118465 Используем 2 файла: Androidapi.JNI.ToastForService.pas + FlyUtils.Android.PostRunnableAndTimer.pas. Пример вызова: Androidapi.JNI.ToastForService.PostToast('текст сообщения', LongToast); Проверил - работает. Есть ещё третий параметр "UseLastToastObj", но я так и не понял, для чего он. Документации нет.
  22. 1 балл
    Равиль Зарипов (ZuBy)

    Memo и клавиатура

    Использовать стандартное поведение, а не городить велики. стандартное поведение это нажатие кнопки Назад
  23. 1 балл
    S_007

    Контур TRectangle

    Alex безразмерное Спасибо!
  24. 1 балл
    Alex7wrt

    Контур TRectangle

    Если нужно убрать контур полностью, то Rec_1.Stroke.Kind:=TBrushKind.None; Если нужно отобразить не все стороны, то Rec_1.Sides := [TSide.Top, TSide.Left, TSide.Right];
  25. 1 балл
    fsdb

    MQTT под Ubuntu Server

    ну ничего. шишки набивать надо. ото так вас послушать так если ничего не выходит то надо все бросить))) жалко ответа по существу не дали. ну ок
  26. 1 балл
    Akad

    Invalid pointer operation

    Именно то, что написано. И ничего более. А присина причины - уже надо выяснять под отладчиком или по логам.
  27. 1 балл
    Pulsarius

    Мусор при развёртывании приложений

    Сейчас внимательно всё проверил и заметил, что компилятор C++ Builder не такой уж и глупый. Если посмотреть каким-нибудь PE Explorer'ом, то исполняемый файл не содержит ссылок на неиспользуемые bpl, если компилить с динамическими рантаймами, и не содержит их внутри, если компилить со статическими рантаймами. Это Deployment Manager и Project Information делают выводы об используемых bpl, видимо, исходя из cbproj файла, а не из анализа скомпилированного исполняемого файла, что, по-моему, несовсем корректно. Ещё заметил такую неприятную вещь, исходя из опыта работы с другими IDE. У Embarcadero замечательные графические и неграфические библиотеки, которые очень ускоряют разработку софта и, как мне кажется, ни одна другая библиотека других фирм, не сравнятся с RAD Studio, плюс ещё и кроссплатформенность появилась. Но почему редактор кода-то такой отсталый? Напоминает нулевые года и вот почему: 1. Не высвечивает подсказки корректно, например, я пишу "TStringBuilder *builder = new ..." и разумеется логично в первой позиции подсказки предложить "new TStringBuilder()", но нет же, высвечивается всё, что угодно, но только не то, что по логике нужно. 2. Я считаю, что посказки должны показываться автоматом по первым символам, как в других IDE, а не по ручному нажатию "Ctrl + Space". 3. Поля и методы шаблонов и контейнеров STL вообще не подсвечивает, а это основа! 4. При требовании подсказки редактор может вообще задуматься на несколько секунд. Что там можно искать у класса из 3-х полей и 3-х методов, который объявлен в рядом лежащем файле?! 5. Почему, когда в хидере объявляешь метод, он автоматом не создаётся в сорс файле, а всё приходиться печатать вручную, как-будто кодишь в обычном текстовом редакторе? 6. При желании перейти от объявления метода к реализации или наоборот может перекинуть куда-нибудь не туда, либо вообще не отреагировать. В худшем случае "упасть". 7. Не предлогает переименовать все ссылки, если переименовывешь переменную или класс. 8. Зачем мне показывать хидер, где объявлен метод, когда я навожу мышкой на него, а не его сигнатуру, что тоже логичнее? 9. Бывает вообще никаких подсказок не выдаёт. Это когда что-то не дописал, решил вернуться чуть-чучть назад кое-что подправить, и всё, фиг с маслом. Для чего эта блокировка подсказок при якобы одной хотя бы ошибки? Или не высвечивает в таком случае "dynamicArray[dyn...]", а хочеться написать "dynamicArray[dynamicArray.Length - 1]". Всё, что я привёл здесь в пример, в других IDE это давным давно уже это не новость и всё давно подсвечивается и подставляется. Это в Visual Studio, Qt Creator, CLion и других, даже в не сишных (IntelliJ IDEA, PyCharm, NetBeans и т.п.) и небольших IDE. Интересно, редактор кода RAD Studio дорастёт когда-нибудь тоже до такого?
  28. 1 балл
    Кривяков Виталий

    Асинхронный NetHTTPClient

    Добрый день! Все проще, гораздо. Net := THTTPClient.Create; Net.BeginPost( procedure (const Value : IAsyncResult) begin AsyncResult(Value); // Вот тут можно вызвать любую процедуру, или просто обработать результат. end, URL, InputStream, OutputStream, Headers); В анонимной процедуре просто вызываете нужную процедуру, для интерактивной одну, для периодических запросов другую.
  29. 1 балл
    x11

    Delphi не видит мой телефон

    В первую очередь нужно проверить, видит ли утилита adb.exe ваше устройство. в консоли CMD нужно зайти в папку "C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows\platform-tools" И выполнить adb devices, появится строка: List of devices attached и под ней все подключенные смартфоны (устройства). Если там ничего не будет, то не установлены USB-драйверы, либо на устройстве не включен режим разработчика. Когда установите драйверы и перезапустите ПК, то adb может всё равно не увидеть устройство, тогда поможет создание файла adb_usb.ini и нужно будет прописать в нём ID устройства: http://digphone.ru/esli-android-adb-ne-vidit-smartfon/ После этого перезапустить ПК. Снова запустить в CMD: adb.exe devices после этого может появиться строка, говорящая о том, что устройство подключено, но не авторизовано, т.е. код устройства и unauthorized: Переподключите смартфон к компьютеру и на экране смартфона должно появиться окно авторизации, где нужно нажать ОК и, возможно, перед этим сперва поставить галочку "Всегда разрешать подключение с этого ПК". Снова выполните adb.exe devices и увидите, что вместо unauthorized, будет слово device. Вместо перезапуска ПК, можно перезапускать службу adb adb kill-server adb start-server
  30. 1 балл
    Fedor K

    TNotificationCenter. Можно ли изменить иконку?

    Иконка изменится внутри приложения в рамах текущего контекста до ее завершения. С других приложений и в системе ничего не поменяется (см. прикрепление). Чтобы не влиять на другой функционал, достаточно сделать следующее: //запоминаем ид по умолчанию lDefaultId := TAndroidHelper.Context.getApplicationInfo.icon; //устанавливаем нашу кастомную иконку TAndroidHelper.Context.getApplicationInfo.icon := lId; //создаем локальное уведомление NotificationCenter.PresentNotification(lNotification); //возвращаем обратно TAndroidHelper.Context.getApplicationInfo.icon := lDefaultId; п.с. Если такой вариант не устраивает, всегда можно написать class helper for TBaseNotificationCenter и использовать классы JNotificationCompat_Builder, JNotificationManager, JNotification. Справка из developer.android.com.
  31. 1 балл
    Самый простой вариант использования эффекта прокручивания основывается на использовании компонента TTabControl, который реализует переключение табов (вкладок) с анимацией. Для этого достаточно: Поместить TTabControl на форму и растянуть его на всю область TTabControl.Align = alClient. Создать вкладки. Одну вкладку на один логический экран (слайд, представление и тд). На каждую вкладку помещаете любой контент. В вашем случае TListBox. Вызвать в нужный момент метод переключения вкладок с анимацией: TTabControl.SetActiveTabWithTransition(const ATab: TTabItem; ATransition: TTabTransition; const ADirection: TTabTransitionDirection = TTabTransitionDirection.tdNormal) Где, ATab: TTabItem - Вкладка, которую нужно отобразить ATransition: TTabTransition - Отобразить вкладку мгновенно или с эффектом сдвига (В вашем случае нужно второе TTabTransition.ttSlide) ADirection: TTabTransitionDirection - направление эффекта сдвига: Слева на право (TTabTransitionDirection.tdNormal) или с права налево (TTabTransitionDirection.tdReversed). Второй способ Аналогично создаем Таб контрол с вкладками, но для переключения вкладок используем стандартное действие TChangeTabAction, которое выполняет те же действия, что и SetActiveTabWithTransition. Действия доступны в редакторе TActionList "New Standart Action..."
Эта таблица лидеров рассчитана в Москва/GMT+03:00