Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.05.2013, 23:41
Аватар для Сникерс
Сникерс Сникерс вне форума
Прохожий
 
Регистрация: 23.05.2013
Сообщения: 2
Версия Delphi: rad studio
Репутация: 10
По умолчанию Record Array Of Variant

Здравствуйте уважаемые форумчане. Есть задание переписать процедуру, осуществляющую БПФ из С++ в Делфи.
Но возникла проблема при реализации процедуры union
Исходный код С++
Код:
union { double af[2048*2]; complex ac[2048]; } a;
Аналог написанный в Делфи
Код:
procedure FFT(var nn:integer);
   Type
 b=Record
 case byte of
 0: (a1: record af: Array[0..2048*2] Of double; end);
 1: (a2: record ac: Array[0..2048] Of Variant; end);
  end;
на попытку компиляции выдает такую ошибку, ругаясь на строку
Код:
1: (a2: record ac: Array[0..2048] Of Variant; end);
Ошибка
Цитата:
[DCC Error] курсач.pas(89): E2154 Type 'Variant' needs finalization - not allowed in variant record
При замене Variant на double ошибка исчезает, однко для моего случая такое изменение неприемлемо
Массив Array[0..2048] Of Variant нужен чтобы потом объявить массив комплексных чисел.
Исходная процедура на С++:
FFT_R2.rar
Полный листнг моей попытки перевода:
Делфи.rar
P.S.
Подскажите люди сведущие, как в Делфи записать вот этот Сишный код?
Код:
aw/=nn

Последний раз редактировалось Сникерс, 24.05.2013 в 00:40.
Ответить с цитированием
  #2  
Старый 24.05.2013, 00:11
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от Сникерс
Подскажите люди сведущие, как в Делфи записать вот этот Сишный код?
Код:
aw/=nn
Код:
aw := aw / nn;
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение:
Сникерс (24.05.2013)
  #3  
Старый 24.05.2013, 00:16
Аватар для Сникерс
Сникерс Сникерс вне форума
Прохожий
 
Регистрация: 23.05.2013
Сообщения: 2
Версия Delphi: rad studio
Репутация: 10
По умолчанию

Эм... а как тогда преобразовать вот такой код?
Код:
aw/=nn/2;
Это должно выглядеть так?
Код:
aw:=nn/2;
Ответить с цитированием
  #4  
Старый 24.05.2013, 00:18
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код:
aw:=aw/nn/2
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
Сникерс (24.05.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter