Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

VarArrayCreate   Найти похожие ветки 

 
Ega23 ©   (2005-01-24 13:39) [0]


The following example creates a one-dimensional variant array with five elements. Each of the elements are of type Variant, and can therefore contain values of varying types, as is illustrated by the example. Notice in particular how the value of the last element of the array is itself a variant array.

var

 A: Variant;
begin
 A := VarArrayCreate([0, 4], varVariant);
 A[0] := 1;
 A[1] := 1234.5678;
 A[2] := "Hello world";
 A[3] := True;
 A[4] := VarArrayOf([1, 10, 100, 1000]);
 WriteLn(A[2]); { Hello world }
 WriteLn(A[4][2]); { 100 }

end;


Исходные данные: есть строка с разделителями, нужно на выходе получить VarArray. Что-то типа:

function DelimitedStrToVarArray(const aStr:String):Variant;


Вопрос: если я создал внутри функции этот Vararray произвольной длинны, то надо ли мне потом ему Unassigned делать?


 
Ega23 ©   (2005-01-24 13:51) [1]

Вот, приблизительно так накатал:
function StrToVarArray(const aStr:String):Variant;
var
List:TStringList;
i:Integer;
begin
List:=TStringList.Create;
try
 DelimitedStrToList(aStr,List,[","]);
 Result:=VarArrayCreate([0,List.Count-1], varVariant);
 for i:=0 to List.Count-1 do
  Result[i]:=List.Strings[i];
finally
 List.Free;
end;
end;


вызов:

RQOpers.Locate(eKeys.Text, StrToVarArray(eValue1.Text), []);


Так надо как-то память освобождать, или само всё сделается???


 
Ega23 ©   (2005-01-25 10:10) [2]

Народ, ау!!!
Надо самому освобождать массив вариантов, или нет?


 
AlexG ©   (2005-01-25 10:17) [3]

Я не смогу сказать точно, т.к. нужно проверить свою память. Но вариант - это встроенный тип, который работает за счет COM технологии. Следовательно не нужно, само освободится.


 
Ega23 ©   (2005-01-25 10:21) [4]

2 AlexG ©   (25.01.05 10:17) [3]
Следовательно не нужно, само освободится.

Да я вот тоже думаю, что не нужно. Хотелось убедиться...


 
Digitman ©   (2005-01-25 11:44) [5]


> вариант - это встроенный тип, который работает за счет COM
> технологии


??!!


 
REA   (2005-01-25 12:52) [6]

Можно предположить, что память освободится, если переменная выйдет из области видимости. А можно кстати простой пример сваять и посмотреть вызовы в CPU Window (типа VarArrayFinlize или как оно там).


 
Ega23 ©   (2005-01-25 13:17) [7]

2 REA   (25.01.05 12:52) [6]
можно кстати простой пример сваять и посмотреть вызовы в CPU Window (типа VarArrayFinlize или как оно там).

Блин. Чё-то про это не подумал...
Посмотрел. Действительно, на выходе из области видимости переменной - call @FinalizeArray.

Вопрос снят.



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
14-1106201253
Антон
2005-01-20 09:07
2005.02.06
Как правельно напмсать процедуру по сохранению файлов


14-1105859833
YurikGL
2005-01-16 10:17
2005.02.06
Подскажите нормальный дизайнер БД


1-1106202265
En0.t
2005-01-20 09:24
2005.02.06
Глюки или ошибки Delphi


4-1103456415
ship
2004-12-19 14:40
2005.02.06
ошибки приёма в com порт


1-1106667069
serg128
2005-01-25 18:31
2005.02.06
Как получить прозрачную форму, но всё, что на ней - видимое?