Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.53 MB
Время: 0.014 c
3-91190
denary
2003-04-10 02:18
2003.04.28
как программно создать пустой файл Excel?


14-91478
kostya2000
2003-03-18 18:56
2003.04.28
---|Ветка была без названия|---


14-91517
mp3
2003-04-09 18:04
2003.04.28
Free mp3


8-91416
Stager
2003-01-25 00:00
2003.04.28
Быстрая отрисовка 2D


8-91410
pavel_ak
2003-01-24 20:46
2003.04.28
Что-нибудь типа кнопок в DelphiX




   Наверх