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

Вниз

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

 
Ega23 ©   (2004-12-28 10:43) [0]

Как переменную типа Variant привести к varEmpty? Причём не к varNull, а именно к varEmpty?


 
Sandman25 ©   (2004-12-28 10:49) [1]

v := unassigned;


 
Ega23 ©   (2004-12-28 10:51) [2]

oops... А так разве можно?


 
Sandman25 ©   (2004-12-28 10:54) [3]

unassigned + F1 :)


 
Суслик ©   (2004-12-28 11:07) [4]

если у тебя их очень много (массив, например) и нужно быстро, то можно через

fillchar(..., ..., 0);

т.е. нулями заполнить.


 
Sandman25 ©   (2004-12-28 11:08) [5]

[4] Суслик ©   (28.12.04 11:07)

Лучше через ZeroMemory. Правда, не уверен, что это хорошая идея, если в вариантах хранились интерфейсы.


 
Суслик ©   (2004-12-28 11:09) [6]


>  [5] Sandman25 ©   (28.12.04 11:08)

fillchar вроде как быстрей.

Я говорю про случаи, когда нужно понимать, что делаешь. :))


 
Sandman25 ©   (2004-12-28 11:14) [7]

[6] Суслик ©   (28.12.04 11:09)

Но на всякий случай лучше сразу написать, чтобы потом вопросов не было :)


 
Суслик ©   (2004-12-28 11:18) [8]


>  [7] Sandman25 ©   (28.12.04 11:14)

Иногда даже fillchar просто необходим.

Делал когда-то свой recordset. Идейно он был сделан на линейном массиве variant: сначала первая строка, потом вторая и т.д. Соответсвенно требовалось много операций - вставка строки/столбца, удаление строки/столбца, стандартные sql операции и т.д. Частно приходилось двигать move"ом куски на новое место. Что делать со старым местом? Очевидно, что присать v[i] := unassigned нельзя, т.к. при этом для будет очистка памяти и все такое. Приходится fillchar"ом.


 
Sandman25 ©   (2004-12-28 11:21) [9]

[8] Суслик ©   (28.12.04 11:18)

Понятно. Перед mov"ом новое место очищалось с помощью unassigned?


 
Суслик ©   (2004-12-28 11:24) [10]


>  [9] Sandman25 ©   (28.12.04 11:21)


> Понятно. Перед mov"ом новое место очищалось с помощью unassigned?

Нет, ты не так понял.

Есть v типа строка. Естественно это ссылка.
Если ты сделаешь move(v...), то будет нарушен подстчет ссылок.

Если потом написать v := unassigned, то компилятор полезер очишать строку. Для того, чтобы этоо не было надо для v писать fillchar.


 
Sandman25 ©   (2004-12-28 11:27) [11]

[10] Суслик ©   (28.12.04 11:24)

var
 VA: array [0..1] of Variant;
VA[1] := Unassigned; // clear
move(VA[0], VA[1], SizeOf(VA[0]));
ZeroMemory(@VA[0], SizeOf(VA[0]));

?


 
Суслик ©   (2004-12-28 11:30) [12]


>  [11] Sandman25 ©   (28.12.04 11:27)

Хватит про это :)
Сейчас старики набегут и начнут про грязный хак :))

Все, что нужно я сказал :)))

ЗЫ. Примерно так, чтолько строка //clear не нужна - move"у по фигу, куда писать.


 
DiamondShark ©   (2004-12-28 11:33) [13]

Фу. Грязный хак!


 
Sandman25 ©   (2004-12-28 11:36) [14]

[12] Суслик ©   (28.12.04 11:30)

А если до этого в VA[1] было, например, "1"?

[13] DiamondShark ©   (28.12.04 11:33)

:)


 
Суслик ©   (2004-12-28 11:40) [15]


>  [14] Sandman25 ©   (28.12.04 11:36)

об этом ты не говорил :))

И вообще см [6] ^))


 
Sandman25 ©   (2004-12-28 11:41) [16]

[15] Суслик ©   (28.12.04 11:40)

Понял. Замолкаю.


 
Ega23 ©   (2004-12-28 14:44) [17]

Во вы даёте! Нафлудили-то! На самом деле хватило [1], мой пост [2] был сродни рванья волос на голове, мол что-же я такой тупой, что очевидные вещи не вижу... :о)

Всем большое спасибо.


 
Суслик ©   (2004-12-28 14:53) [18]


> [17] Ega23 ©   (28.12.04 14:44)

Почему сразу нафлудили, не интересно, не читай.

Все по делу: грязный, но все же прием работы с variant.


 
Sandman25 ©   (2004-12-29 10:16) [19]

[17] Ega23 ©   (28.12.04 14:44)

Вах, зачем обижаешь, дорогой?
Ни слова offtop-а, всё про варианты.


 
Ega23 ©   (2004-12-29 10:20) [20]

Да всё по теме, кто-ж спорит! :о)
Только уже между собой... :о)


 
Sandman25 ©   (2004-12-29 10:27) [21]

[20] Ega23 ©   (29.12.04 10:20)

Ты нас ругаешь за то, что ты ушел? :)

PS. Шучу, можно не отвечать.


 
Ega23 ©   (2004-12-29 10:32) [22]

Ты нас ругаешь за то, что ты ушел? :)

У нас прокси-сервер вчера грохнулся, твой ответ прочитать успел, а написать - фиг. Включился только вечером...  :о)


 
Sandman25 ©   (2004-12-29 10:36) [23]

[22] Ega23 ©   (29.12.04 10:32)

Сочувствую.
Welcome back :)



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

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

Наверх




Память: 0.51 MB
Время: 0.11 c
14-1104087205
Hypercube
2004-12-26 21:53
2005.01.16
Самогон


9-1081178851
Тимур
2004-04-05 19:27
2005.01.16
Flash игры


1-1104212175
Mate_ru
2004-12-28 08:36
2005.01.16
параметры


4-1100444311
Doc-N
2004-11-14 17:58
2005.01.16
Изменение таблици импорта


1-1104325019
Aleksandr.
2004-12-29 15:56
2005.01.16
Люди, какая версия для Define у Делфи 2005?