Ускоренная обработка данных типа Variant в Delphi
От: Maksim Gumerov Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 30.10.04 08:32
Оценка: 265 (6) -1
Статья:
Ускоренная обработка данных типа Variant в Delphi
Автор(ы): Maksim Gumerov
Дата: 18.03.2005
На примере ускорения обработки данных типа Variant в Delphi автор рассматривает более широкую проблему ускорения динамической диспетчеризации вызовов в статически типизированных языках.


Авторы:
Maksim Gumerov

Аннотация:
На примере ускорения обработки данных типа Variant в Delphi автор рассматривает более широкую проблему ускорения динамической диспетчеризации вызовов в статически типизированных языках.
Специалист — это варвар, невежество которого не всесторонне :)
Re: Ускоренная обработка данных типа Variant в Delphi
От: Аноним  
Дата: 22.03.05 04:06
Оценка: +1
MG>Статья:
MG>Ускоренная обработка данных типа Variant в Delphi
Автор(ы): Maksim Gumerov
Дата: 18.03.2005
На примере ускорения обработки данных типа Variant в Delphi автор рассматривает более широкую проблему ускорения динамической диспетчеризации вызовов в статически типизированных языках.


MG>Аннотация:

MG>На примере ускорения обработки данных типа Variant в Delphi автор рассматривает более широкую проблему ускорения динамической диспетчеризации вызовов в статически типизированных языках.

В чем смысл усложнения простого решения проблемы ?
Если автор статьи предполагает некую информированность о постоянстве типов обрабатываемых Variant'ов, то какой смысл подменять вызовы операций для обработки ? Не проще ли перенести данные в локальные переменные (возможно, сгруппированные в цельный логически обоснованный объект) и пользоваться ими, а потом вернуть их обратно в варианты ? Опять же предлагаемый метод иллюстрации подмены операции сложения удачен был бы для языка с возможностью перегрузки операций (C++), в статье же выглядит крайне неуклюже. Проще было бы ввести наподобие :

TVarBoost....
IntPtr: Pointer;
function GetAsInt:Integer;
procedure SetAsInt(v:Integer);
public
property IntVal:Integer read GetAsInt write SetAsInt;
...
end;

function TForm1.GetAsInt():Integer;
begin
Result:=Integer(IntPtr^);
end;

procedure TForm1.SetAsInt(p:Integer);
begin
Integer(IntPtr^):=p;
end;

Да и вообще новизны в статье, увы, немного. Графоманство какое-то
Re: Ускоренная обработка данных типа Variant в Delphi
От: Аноним  
Дата: 22.03.05 07:43
Оценка:
Здравствуйте, Maksim Gumerov, Вы писали:

MG>Статья:

MG>Ускоренная обработка данных типа Variant в Delphi
Автор(ы): Maksim Gumerov
Дата: 18.03.2005
На примере ускорения обработки данных типа Variant в Delphi автор рассматривает более широкую проблему ускорения динамической диспетчеризации вызовов в статически типизированных языках.


MG>Авторы:

MG> Maksim Gumerov

MG>Аннотация:

MG>На примере ускорения обработки данных типа Variant в Delphi автор рассматривает более широкую проблему ускорения динамической диспетчеризации вызовов в статически типизированных языках.

Максим, статья мне понравилась.
Вы в ней упомянули об одной интересной проблеме: передача параметров через IDispatch*

Вы можете мне помочь:
Как сформировать параметр Params для передачи
в void Funct(IDispatch* Params) для С++ ????
причём в этом параметре содержится массив....????
Типа делаем массив, реализуем для него IDispatch??
Может кто сталкивался с такой задачей?

для Java это выглядит так:
var arr=new Array();
arr[0] = 1;
arr[1] = 4;
arr[2] = 5;
Funct(arr);

email: mikhailov@progmaster.ru
Re[2]: Ускоренная обработка данных типа Variant в Delphi
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 04.05.05 06:28
Оценка:
Прошу прощения за задержку с ответом. Вы бы лучше задали этот вопрос на форуме, к примеру, COM. Мне пока не приходилось сталкиваться с передачей массивов как IDispath. В статье-то я обмолвился о другом: об использовании Variant в Delphi для хранения указателя на IDispatch, с упрощенным (по сравнению с "голой" работой с IDispatch::Invoke) синтаксисом вызова методов через этот IDispatch.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.