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

Вниз

правильное хранение integer в TStrings.Objects   Найти похожие ветки 

 
alert_2003   (2003-03-14 11:59) [0]

часто приходится связывать строковые значения с целочисленными значениями. Я на практике использую Objects, при чем присваеваю значения не как ссылка на выделенный участок памяти, а как обычное значение
Objects[i]:=Pointer(100);

у меня соответственно вопрос к знатокам интерфейсов:
корректно ли обрабатывает деструктор IStringsAdapter
при освобождении памяти массива ссылок FObject?

Является ли приведенный метод хранения целых чисел грубым нарушением и не приведет ли это к случайному пересечению целого значения с реально существующим адресом выделенной памяти, что повлечет за собой сбой?

За ранее большое спасибо.


 
Anatoly Podgoretsky ©   (2003-03-14 12:09) [1]

Так хранить можно, хоть это и трюк, освобождать ничего не требуется.


 
y-soft ©   (2003-03-14 12:11) [2]

Кхм. Способ совершенно легальный, т.к. размер Integer и Pointer одинаков. TStrings.Objects это всего лишь произвольный указатель, если он указывает на реально выделенную память, то освобождение ее полностью лежит на том, кто выделял.
Если сомневаетесь, то перед вызовом деструктора устанавливайте в nil :)


 
Anatoly Podgoretsky ©   (2003-03-14 12:27) [3]

y-soft © (14.03.03 12:11)
Одинаковый в текущий момент времени, но это не относится ни к прошлому, ни к будущему, если будещее дело темное, то прошлое уже известно, раньше Integer был 16 бит, а Pointer 32, исптория может повториться. И это все не учитывает другие платформы, пока только про Дельфи, как язык программирования версий 2-6, 7 с некотрыми ограничениями.
Скажи чем 00000000 (nil) отличается от 100?
TStrings не отвечает за свойство Objects, эту ответственность несет программист, для него это простой указатель


 
y-soft ©   (2003-03-14 12:35) [4]

>Anatoly Podgoretsky © (14.03.03 12:27)
Не спорю, о совместимости и переносимости речь не шла. Конечно, это трюк, но трюк широко применяемый даже у классиков жанра:)



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

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

Наверх




Память: 0.47 MB
Время: 0.02 c
3-87806
Roki
2003-03-05 11:43
2003.03.27
Как добавить в системную таблицу isc4.gbd кирилицу?


14-88225
Supreme 2
2003-03-11 18:32
2003.03.27
Народ, я вернулся!!!


14-88234
IronHawk
2003-03-11 14:57
2003.03.27
Кто подскажет адресок ветки про СОСТОЯШУЮСЯ ТРЕТЬЮ ВСТРЕЧУ ...


1-88017
alert_2003
2003-03-14 11:59
2003.03.27
правильное хранение integer в TStrings.Objects


14-88157
eduard
2003-03-10 14:19
2003.03.27
internet