Форум программистов, компьютерный форум, киберфорум
C++ Builder: FireMonkey
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147

Анонимная процедура в TTask.Run (Delphi -> Builder)

12.04.2017, 07:37. Показов 5594. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, перевести с паскаля:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TFormMain.RegisterDevice;
begin
  TTask.Run(
    procedure
    var
      aHTTP: THTTPClient;
    begin
      aHTTP := THTTPClient.Create;
      try
        aHTTP.Get('http://rzaripov.kz/pushTest/api.php?method=saveToken&deviceID=' + FDeviceID + '&deviceToken=' +
          FDeviceToken + '&platform='{$IFDEF ANDROID} + 'ANDROID' {$ELSEIF defined(IOS)} + 'IOS' {$ENDIF});
      finally
        FreeAndNil(aHTTP);
      end;
    end);
end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2017, 07:37
Ответы с готовыми решениями:

процедура из Delphi в функцию C++ Builder
ребят ни как не могу переделать процедуру из делфи в функцию в билдере помогите пожалуйста!?!??!?! вот процедура написаная в Делфи ...

Процедура Exec: this program can not be run in DOS mode
Работаю в TurboPascal (Borland 7.0) через DosBox. Проблема такая: использую процедуру Exec, запускаю Файл формата BAT через cmd.exe, ошибок...

Перевод кода из Delphi в C++ Builder / C++ Builder
Кто нибудь сможет помочь перевести проект с делфи на билдер? Выкладываю исходники на делфи. procedure TForm1.SpeedButton1Click(Sender:...

27
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
13.04.2017, 18:10  [ТС]
Студворк — интернет-сервис помощи студентам
Большое спасибо! Счастье наступило!!!
0
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
15.04.2017, 09:22  [ТС]
В образовательных целях пробую такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall  TForm1::RegisterDevice()
{
    TTask::Run([]()
     {
      String link = Format(_D("http://rzaripov.kz/pushTest/api.php?method=saveToken&deviceID=%s&deviceToken=%s&platform=%s"),
                                ARRAYOFCONST(( FDeviceID, FDeviceToken, sPlatform )));
      std::unique_ptr<THTTPClient> aHTTP(THTTPClient::Create());
      aHTTP->Get(link);
     }
    );
}
[bccaarm Error] myfile.cpp(132): 'this' cannot be implicitly captured in this context
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33456 / 21556 / 8248
Регистрация: 22.10.2011
Сообщений: 37,009
Записей в блоге: 12
15.04.2017, 09:39
Ну так добавь [this] (или [&]) вместо просто []
1
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
15.04.2017, 14:32  [ТС]
Спасибо, откомпилировалось.

Добавлено через 4 часа 47 минут
Эти литералы и макросы совсем запутали...
В чем разница между _D и L?

Есть разница между этим?
C++
1
2
3
4
5
6
7
#if defined(_PLAT_IOS)
   String sPlatform = L"IOS";
#elif defined(__ANDROID__)
   String sPlatform = L"ANDROID";
#else
   String sPlatform = L"";
#endif
и этим?
C++
1
2
3
4
5
6
7
8
9
String sPlatform =
#ifdef __ANDROID__
  _D("ANDROID")
#elseif defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))
  _D("IOS")
#else
  _D("")
#endif
  ;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33456 / 21556 / 8248
Регистрация: 22.10.2011
Сообщений: 37,009
Записей в блоге: 12
15.04.2017, 14:57
Цитата Сообщение от silvalena Посмотреть сообщение
В чем разница между _D и L?
Вот тут написано.

Цитата Сообщение от silvalena Посмотреть сообщение
Есть разница между этим и этим?
Если не учитывать, что проверяются разные макроопределения - то нет, хоть всю строку полностью пиши для каждой ОС, хоть только ее содержимое - в результате в код попадет одно и то же.
1
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
15.04.2017, 15:09  [ТС]
Ничего из этого не поняла, а поняла так -> для мобильных платформ _D для windows L.
Я не понимаю зачем вся эта кухня, когда у меня в мобильных проектах для андроид прекрасно работает литерал L. Все работает зачем еще и этот литерал _D? Зачем мне _D если все работает с L везде?

Если не учитывать, что проверяются разные макроопределения - то нет, хоть всю строку полностью пиши для каждой ОС, хоть только ее содержимое - в результате в код попадет одно и то же.
Т.е. разности нет между приведенными вариантами?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33456 / 21556 / 8248
Регистрация: 22.10.2011
Сообщений: 37,009
Записей в блоге: 12
15.04.2017, 16:27
Цитата Сообщение от silvalena Посмотреть сообщение
когда у меня в мобильных проектах для андроид прекрасно работает литерал L
Вот начнешь работать с UTF32 - поймешь зачем. При использовании L на мобильных системах строковый литерал будет конвертироваться в UTF16, а при использовании u или _D - останется в UTF32.

Цитата Сообщение от silvalena Посмотреть сообщение
Т.е. разности нет между приведенными вариантами?
Я могу и еще раз повторить: я не знаю. Потому что у меня нет средств для мобильной разработки, и мне совершенно неизвестно, аналогичны ли условия

C++
1
#if defined(_PLAT_IOS)
и
C++
1
#if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))
, и какое из них корректнее определяет наличие iOS. Вот эти два - аналогичны друг другу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
String sPlatform =
#if defined(_PLAT_IOS)
   L"IOS";
#elif defined(__ANDROID__)
   L"ANDROID";
#else
   L""
#endif
  ;
 
// и
 
#if defined(_PLAT_IOS)
   String sPlatform = L"IOS";
#elif defined(__ANDROID__)
   String sPlatform = L"ANDROID";
#else
   String sPlatform = L"";
#endif
Эти два - тоже:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
String sPlatform =
#ifdef __ANDROID__
  _D("ANDROID")
#elseif defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))
  _D("IOS")
#else
  _D("")
#endif
  ;
 
// и
 
#ifdef __ANDROID__
  String sPlatform = _D("ANDROID");
#elseif defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))
  String sPlatform = _D("IOS");
#else
  String sPlatform = _D("");
#endif
, а между собой - без понятия.
0
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
15.04.2017, 17:59  [ТС]
Вот начнешь работать с UTF32 - поймешь зачем.
Нет не пойму и не вижу проблему. Все мои проекты в андроид прекрасно работают с L.

Это рекомендует Remy Lebeau
#if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))
короче не понятно, а что же лучше в конечном итоге в этом случае?

Или идем дальше что лучше лямбда или TCppInterfacedObject?
Это какой-то мрак в выборе...

Хотелось бы иметь самое быстрое и правильное решение. Каков Ваш окончательный вариант выбора? Каков окончательный код у Вас будет? Его и использую.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.04.2017, 17:59

Algorithm Builder. Процедура Pause
Добрый день! Помогите, пожалуйста, откорректировать процедуру Pause. Необходимо увеличить паузу до 100 000 мкс.

TCriticalSection в библиотеке PPL(TTask)
Добрый день уважаемые форумчане. Возник вопрос. Имеется глобальная переменная var global_var: String; Так же имеется...

Выравнивание по ширине или паскалевская процедура в c++ builder
Возник такой вопрос...Есть процедура которая работает с RxRichEdit и осуществляет выравнивание по ширине! unit rxWidthAlign; ...

Delphi 2010 + ZEOS + MySQL (Commands out of sync; you can't run this command now)
Здравствуйте! Создана база данных на MySQL с хранимыми процедурами. Из Delphi с помощью компонента ZQuery(ZEOS) выполняю код в следующей...

Ошибка fatal error C1083: Не удается открыть файл Ttask.h
в чем причина?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru