![]() |
![]() ![]() ![]() ![]() |
|
Получить количество ссылок AnsiStringDelphi , Синтаксис , Текст и СтрокиПолучить количество ссылок AnsiString
Оформил: DeeCo
function GetAnsistringRefcount(const S: string): Cardinal;
asm
or eax, eax
jz @done
sub eax, 8
mov eax, dword ptr [eax]
@done:
end;
procedure TForm1.Button1Click(Sender: TObject);
var
S1, S2: string;
begin
memo1.lines.Add(Format('Refcount at start: %d',
[GetAnsistringRefcount(S1)]));
S1 := StringOfChar('A', 10);
memo1.lines.Add(Format('Refcount after assignment: %d',
[GetAnsistringRefcount(S1)]));
S2 := S1;
memo1.lines.Add(Format('Refcount after S2:=S1: %d',
[GetAnsistringRefcount(S1)]));
S2 := S1 + S2;
memo1.lines.Add(Format('Refcount after S2:=S1+S2: %d',
[GetAnsistringRefcount(S1)]));
end;
Это фрагмент кода на языке Delphi, демонстрирующий, как получить счетчик ссылок для объекта Вот подробное описание того, что код делает:
Это показывает, что счетчик ссылок initially равен 0, затем увеличивается до 1 при присваивании строки значения. Когда другая переменная присваивается тому же значению, счетчик ссылок не изменяется. Однако когда строка конкатенируется с самой собой, счетчик ссылок остается на уровне 1. * Обратите внимание, что этот код является специфичным для Delphi и использует встроенную ассемблерную программировку, которая может не быть совместима с другими компиляторами или платформами. В статье описывается функция GetAnsistringRefcount, которая возвращает количество ссылок на строку типа AnsiString, и ее использование в примере на Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||