Главная страница
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.043 c
1-1104470265
r.o.o.t
2004-12-31 08:17
2005.01.16
Как ускорить загрузку приложений


10-1080826752
serg128
2004-04-01 17:39
2005.01.16
Как в ClientDataSet заблокировать запись?


1-1104833284
Новичек
2005-01-04 13:08
2005.01.16
Посылка сообщения.


3-1102329250
Yurij-7
2004-12-06 13:34
2005.01.16
Коректировка структуры DBF файла


4-1101554372
maddognt
2004-11-27 14:19
2005.01.16
Печать на матричном принтере из Delphi