Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.036 c
14-1103580715
Homa_Programer
2004-12-21 01:11
2005.01.16
COCOMO


1-1104085242
гость
2004-12-26 21:20
2005.01.16
реестр


1-1104142701
ceval
2004-12-27 13:18
2005.01.16
подскажите пожалуста почему не полностью удаляется dir


14-1104064273
Profi
2004-12-26 15:31
2005.01.16
Delphi 2005


1-1104623105
Тем
2005-01-02 02:45
2005.01.16
Как получить список всех ресурсов программы с их типами ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский