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

Вниз

Является ли string динамическим массивом   Найти похожие ветки 

 
Danilka ©   (2003-04-11 15:47) [40]

Mystic © (11.04.03 15:42)
да, но почему тогда:

var
s1:string[5];
s2:string[10];
s3:string[20];

sizeOf(s1) = 6 байт
sizeOf(s1) = 11 байт
sizeOf(s1) = 21 байт


 
Anatoly Podgoretsky ©   (2003-04-11 15:47) [41]

А что такое +
А взглятуть в хелпе, там хорошо рассмотрено, или на крайний слчай в книге если читать не умеешь.


 
anbezr   (2003-04-11 15:49) [42]

Danilka © (11.04.03 15:28)
>а вот-это уже непонятки:
>var
> s:string[15];
>sizeOf(s) = 16 байт...
все правильно 15 байт на каждый символ + 1 на длину.


 
Anatoly Podgoretsky ©   (2003-04-11 15:49) [43]

Danilka © (11.04.03 15:47)
С чего ты взял, что паскаль тебе будет рассказывать про выравнивание, это не кго работа. Максимум ты можешь попросить на какую границцу выравнивать, но размер то ни на грам от этого не изменится, так что Паскаль тебя не обманывает, просто ты ему не доверяешь и напрсно.


 
Danilka ©   (2003-04-11 15:50) [44]

мне уже можно не отвечать...


 
anbezr   (2003-04-11 15:54) [45]

Anatoly Podgoretsky © (11.04.03 15:47) к чему (кому) относится.
если ко мне, то я ничего не понял


 
Anatoly Podgoretsky ©   (2003-04-11 15:56) [46]

К тебе, а понять поосто, взгляни хоть раз в хелп


 
anbezr   (2003-04-11 16:04) [47]

опять ничего не понял. это относится к сабжу?


 
vuk ©   (2003-04-11 16:19) [48]

Ещё не забывайте, что если объявляются строковые переменные в процедуре, то String живет в куче, а ShortString - в стэке.


 
Mystic ©   (2003-04-11 16:43) [49]

> а что такое счетчик ссылок.

При присваивании строк (AnsiString) никакого копирования не происходит, а увеличивается счетчик ссылок.

Например, после выполнения команд

S1 := "12345" + "67890";
S2 := S1;

И S1 и S2 будут указывать на одну и ту же строку в памяти, "1234567890" и счетчик ссылок будет равен 2. При присваивании

S2 := "12345"

счетчик ссылок строки "1234567890" уменьшится до 1, а строка S2 будет указывать на "12345", счетчик ссылок будет равен -1 ($FFFFFFFF), так как это константная строка, которая хранится в образе EXE-Файла.

Если теперь выполнить

S1 := ""

то у строка "1234567890" счетчик ссылок станет равным 0, и она удалится из памяти. Но мы этого делать не быдет, а выполним, к примеру

S2 := S1;
FillChar(S2[1], 3, "A");

В результате и строка (1), и строка (2) станут равны "AAA34567890". Для того, чтобы изменилась только строка S2, надо выполнить вставить перед FillChar

UniqueString(S2);

после чего S2 будет указывать на уникальную строку "1234567890" (счетчик ссылок равен 1), а S1 будет указывать на другую строку "1234567890" (счетчик ссылок также равен нулю).


> Danilka © (11.04.03 15:47)

Я имел в виду тип AnsiString, обычно обозначаемый просто через string.


 
anbezr   (2003-04-11 16:56) [50]

!!! класс !!!
Спасибо!



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

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

Наверх




Память: 0.55 MB
Время: 0.023 c
3-91141
paxer
2003-04-04 17:54
2003.04.28
Получить одним запросом данные из нескольких таблиц


1-91269
Vin_Ghost
2003-04-16 20:38
2003.04.28
Работа с нетипизированными файлами


3-91208
gram
2003-04-10 13:06
2003.04.28
Отображение данных из разных таблиц в DBGride


1-91351
Andr_Volk
2003-04-16 05:43
2003.04.28
удалить из файла


3-91192
AleksandrKu
2003-04-09 17:06
2003.04.28
Query дублирует записи как от этого избавиться