Лучший способ преобразовать код Delphi в C++?

Вам нужно знать, как фильтровать строки по «символу».

  1. Добавить предложение WHERE для фильтрации.
WHERE sec.symbol = NEW.symbol
  1. И затем вы регистрируете триггер.
CREATE TRIGGER day_insert
    AFTER INSERT ON day
    FOR EACH ROW
    EXECUTE PROCEDURE update_sma8();
  1. Убедитесь, что столбец «sma8» будет обновляться при вставке строки.

Вот полный код.


DROP FUNCTION public.update_sma8();

CREATE FUNCTION public.update_sma8()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE NOT LEAKPROOF 
AS $BODY$
 BEGIN

 UPDATE day d SET sma8 = s.simple_mov_avg 
 FROM
 (
  SELECT  sec.date,AVG(sec.close)  
    OVER(ORDER BY sec.date ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS 
     simple_mov_avg FROM day sec WHERE symbol = NEW.symbol
 )s where s.date = NEW.date  --The newly inserted date
      AND d.date = s.date ;   
 RETURN NULL;

 END $BODY$;

ALTER FUNCTION public.update_sma8()
    OWNER TO postgres;
8
задан Dana Holt 13 March 2009 в 01:27
поделиться

7 ответов

Почему не только используют компилятор Delphi OS X? Свободный Паскаль утверждает, что поддерживал Delphi на OS X (не будучи кодером Паскаля, я не попробовал его).

11
ответ дан 5 December 2019 в 06:10
поделиться

Простой ответ: Вы просто не можете портировать нетривиальный код Delphi на C++ без полного, переписывают. Объектная модель C++ очень отличается от Delphi. Это не имеет базового класса как TObject, из которого получены все другие объекты, и этому недостает, поддержка большого количества RTTI наполняют тот код Delphi, часто считает само собой разумеющимся. И нет никакого простого способа повторно реализовать Delphi RTTI в C++, начиная со многое из, его сделан на уровне компилятора и большом количестве, он основан на том, что все классы Delphi убывают от TObject.

C++ также испытывает недостаток в поддержке понятия разделов инициализации и завершения единицы, которые так распространены в Delphi, и что это имеет, вместо этого плохо повреждается. (Ищите "статическое фиаско инициализации порядка" для всех окровавленных деталей.)

Обработка исключений Delphi также намного более совершенствуется, чем C++. Часть этого является объектной моделью и частью, он - волшебство компилятора. Плюс, C++ не имеет никакой поддержки попытки, наконец создают.

Если Вы хотите портировать проект Delphi на Mac, Свободный Паскаль является Вашим лучшим решением. Это не на 100% совместимо с Delphi, но это достаточно хорошо для большого количества вещей, и Вы конкретно упомянули, что не должны портировать Delphi материал GUI. AFAIK областью GUI является источник большинства слабых мест совместимости FPC, поэтому если это не необходимо, FPC, вероятно, достаточно близок к идеалу для Ваших потребностей, по крайней мере, пока CodeGear не выводит компилятор OSX. (О котором официально не объявили, но на основе различных вещей, которые были сказаны, весьма разумно предположить, что каждый будет доступен когда-то в следующем году.)

12
ответ дан 5 December 2019 в 06:10
поделиться

Для преобразования Вашего кода от Delphi до Cpp взгляните на

http://ivan.vecerina.com/code/delphi2cpp/.

Я использовал это для преобразования некоторых классов и функций в SysUtils, DateUtils и StrUtils с помощью wxWidgets функции. Если Вы планируете использовать wxWidgets для C++, взглянули на http://twinforms.com/products/wxwidgets/wxvcl.php, который имеет весь преобразованный источник.

Если Вы хотите, непосредственно разрабатывают приложения MAC OSX, использующие, затем взглянули на wxForms для Delphi - http://twinforms.com/products/wxformsdelphi/index.php

4
ответ дан 5 December 2019 в 06:10
поделиться

Если Ваш код компилирует в Delphi 2007 в блоки.NET, у Вас может быть намного более легкая опция, чем попытка портировать от Object Pascal Delphi до C++.

Вы могли потенциально скомпилировать свою логику в блоки.NET (и возможно даже части UI) и использовать Моно для выполнения его на Mac. Вы могли записать пользовательский GUI вокруг Моно, или даже потенциально подать единственную, независимую от платформы заявку.

0
ответ дан 5 December 2019 в 06:10
поделиться

Я думаю, что это было бы трудно сделать механически, таким образом, Вы, вероятно, смотрите на полное, переписывают. Одна вещь принять во внимание состоит в том, что обычно Delphi использует попытку... наконец структуры для управления ресурсами, тогда как C++ использует технику, известную как RAII (приобретение ресурса является инициализацией). Необходимо читать на этом и других идиомах C++ перед попыткой преобразования.

3
ответ дан 5 December 2019 в 06:10
поделиться

Можно использовать также Призму Delphi. Это для.NET, но это - последнее выражение в спецификации языка Delphi. Это поддерживает также MAC OSX (см. ссылку). Также парни от CodeGear/EMBT находятся в работах для нового компилятора, а также для новой версии Delphi, который, как ожидают, войдет в бета-версии в апреле и сократит разрыв между студией RAD и Призмой. Посмотрите их страницу 'Beta Programs'.

-1
ответ дан 5 December 2019 в 06:10
поделиться

"Корректный" способ сделать это должно переписать его в Objective C. Я нахожу Objective C немного странным, но существует много общих черт с Delphi в пути подключение объектов и делегат.

Вы можете использовать Свободного Паскаля, чтобы сделать это более быстро, но необходимо серьезно рассмотреть переписывание.

Я любил бы Причал, если они могли бы выпустить версию Mac OS X Delphi, который не сделал, Вы знаете, сосете как Kylix, сделал. Можно мечтать.

Править: Существует большое преимущество для пребывания в Delphi и наличия отдельной версии для Mac в Objective C. Во-первых, это означает, что Вы не должны переписывать версию в Windows, проигрывая (по-видимому), годы инвестиций в код Delphi. Во-вторых, программное обеспечение Mac работает по-другому, чем Windows с точки зрения UI. Простой порт продукта является несоответствующим, и создает помехи разработчику от использования больших собственных функций Windows и Mac. См.: более старые версии MS Word для Mac или iTunes для Windows. Они смотрят и чувствуют себя неправыми.

-2
ответ дан 5 December 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: