Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.037 c