Главная страница
    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.5 MB
Время: 0.044 c
1-1104085242
гость
2004-12-26 21:20
2005.01.16
реестр


1-1104246369
markers
2004-12-28 18:06
2005.01.16
QReport


9-1096483582
Jus
2004-09-29 22:46
2005.01.16
Как избежать ошибки <B>Canvas does not allow drawing </B>при свор


4-1101572582
MAINUSER
2004-11-27 19:23
2005.01.16
Изменения в файловой системе


1-1104237367
Programmix
2004-12-28 15:36
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский