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

Вниз

А что есть AnsiString ?   Найти похожие ветки 

 
CHES ©   (2005-08-11 13:50) [0]

У Тейксейры и Пачеко написано, что AnsiString представляет собой структуру в памяти в которой хранится: размер памяти выделенный строке, количество ссылок на нее, длина, собственно данные строки и завершающий 0.

Когда я объявляю s: string; то что есть s?
У меня 2 варианта
1. s - указатель на структуру в памяти
2. s - адрес по которому лежит указатель на структуру в памяти

Пока пытался понять наваял следующее:


 s1,s2: string;
 p: Pointer;
begin
 s1:="Stroka 1";
 s2:="Stroka 2";
 p:=pointer(@s1);
 s2:= string(p^);
 ShowMessage(s2);


Показывает "Stroka 1", выходит верен  2-й вариант ?


 
DiamondShark ©   (2005-08-11 13:54) [1]


> Когда я объявляю s: string; то что есть s?
> У меня 2 варианта
> 1. s - указатель на структуру в памяти
> 2. s - адрес по которому лежит указатель на структуру в
> памяти

Ни первое, ни второе.

s -- это указатель на данные в строке, а служебные поля лежат перед данными.
т.е. s -- это указатель внутрь структуры, описанной у ТиП.


 
Юрий Зотов ©   (2005-08-11 13:54) [2]

Указатель на структуру в памяти. Он же указывает на тело строки (поскольку служебные данные хранятся по отрицательному смещению от этого адреса).


 
CHES ©   (2005-08-11 14:08) [3]

Не зря спросил.
Спасибо за ответы.



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

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

Наверх




Память: 0.47 MB
Время: 0.028 c
2-1123267874
MAVr
2005-08-05 22:51
2005.09.04
Работа с папками…


1-1124015109
Ви талька 2005
2005-08-14 14:25
2005.09.04
Прозрачный фрейм


3-1121960535
Djek
2005-07-21 19:42
2005.09.04
Вывод неповторяющегося значения поля в ComboBox


4-1121366230
Dot
2005-07-14 22:37
2005.09.04
Обработать закрытие приожения


3-1122011535
Ирина
2005-07-22 09:52
2005.09.04
Перемещение в таблице