Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2009, 13:24   #1
Oreol
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию Обращение к StreamIn и StreamOut у вариантов

Как воспользоваться методами StreamIn и StreamOut для вариантов (Variant) с комплексными числами?

Последний раз редактировалось Oreol; 24.03.2009 в 13:26.
Oreol вне форума Ответить с цитированием
Старый 24.03.2009, 13:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Всмысле? Что это за методы такие?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2009, 02:44   #3
Oreol
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию Для компилятора BDS 2006

Код:
uses Variants, VarCmplx;
...
procedure ComplexVariantToStream (ComplexData: Variant; 
				  Stream: TMemoryStream);
var
  VariantType: word;

  procedure WriteComplexData (V: variant);
  begin
    //Write Type
    VariantType := TVarData (V).VType and varTypeMask;   
    Stream.Write  (TVarData (V).VType, SizeOf (word));
    //Write V   
    if VariantType=VarComplex
    then
    begin
      Stream.Write(TComplexVarData(V).VComplex.Real, SizeOf(Extended));
      Stream.Write(TComplexVarData(V).VComplex.Imaginary, SizeOf(Extended));
    end
  end;
  
begin  
  if (VarIsNull (ComplexData)) or (VarIsEmpty (ComplexData)) then exit;   
  WriteComplexData (ComplexData);   
end;


function StreamToComplexVariant (Stream: TMemoryStream): variant;
var
  VariantType: word;   
  TempVariant: variant;

  function Read1(var Buffer; Count: Longint): Longint;   
  begin  
    Result := Stream.Read (Buffer, Count);   
  end;   
             
  procedure ReadComplexData (VariantType: word; out V: variant);   
  begin
    VarCast (V, V, VariantType);   
    if VariantType=VarComplex
    then
    begin
      Read1 (TComplexVarData(V).VComplex.Real, SizeOf (VarComplex));
      Read1 (TComplexVarData(V).VComplex.Imaginary, SizeOf (VarComplex));
    end;
  end;

begin  
  Stream.Seek (0, soFromBeginning);
  Read1 (VariantType, SizeOf (word));   
  ReadComplexData (VariantType and varTypeMask, TempVariant);   
  Result := TempVariant;   
end;
==========================Delphi Compiler Messages
[Pascal Error] YYY.pas(XXX): E2003 Undeclared identifier: 'TComplexVarData'
[Pascal Error] YYY.pas(та же XXX): E2035 Not enough actual parameters
Oreol вне форума Ответить с цитированием
Старый 25.03.2009, 10:14   #4
XuTpbIu
Злобстер
Форумчанин
 
Аватар для XuTpbIu
 
Регистрация: 19.03.2009
Сообщений: 134
По умолчанию

Такой функции нет в наборе стандартных модулей Делфи(Ну и как-то странно что название начинается с T). Может ещё какие-то модули надо подключить
От знаний ещё никто не умирал, но рисковать не стоит.
XuTpbIu вне форума Ответить с цитированием
Старый 25.03.2009, 13:26   #5
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

О TComplexVarData вот тут есть что-то : http://program.rin.ru/razdel/html/1075-2.html
И вот тут : http://www.realcoding.net/teach/delp...010/Index6.htm
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
плз помогите легко просто надо несколько вариантов решения sp.caster Помощь студентам 8 29.01.2009 18:40
Перебор вариантов... или что-то такое elsin Общие вопросы Delphi 3 15.01.2009 22:13
обработка вариантов ответа из матрицы Alar Общие вопросы Delphi 0 29.10.2006 11:06