Получить количество ссылок 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 прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |