Items.Lines[0] - Access element 0 (first string) of Lines array -- for Kylix
Items.Strings[0] - Access element 0 (first string) of Strings array -- for VCL/FMX
AV генерирует, когда вы пытаетесь получить доступ к памяти, которая недоступна, поэтому, другими словами, delphi не имеет проверки типов для доступа к памяти программ (двоичные данные), и это приводит к Широкий диапазон необработанных ошибок, таких как ошибка неправильного типа и исключение NullPointer, которое, однако, может быть обработано без изменения подпрограмм памяти (запись других определений типов для обеспечения проверки), указатель может быть проверен путем сравнения с nil в реализации Pascal или с помощью CMP fun c в Ассемблере.
Подробнее об этом:
Каждая переменная, константа и, конечно, метод хранятся в памяти компьютера (RAM) в процессе выполнения, в своем собственном поле, которое предоставляется процессор (ЦП) для программирования и ограничен встроенной в материнскую плату логи c, поэтому он не может записывать в память других программ.
Большинство типов данных имеет собственное байтовое выравнивание (специфицируется c сохранения 0 и 1, но, когда тип больше, чем просто один байт, он расширяется, чтобы содержать информацию о типе) t o знать, что в нем есть правильные двоичные данные, такие как Strings, Objects и Records.
String хранит свою собственную длину и кодировку в байтовом представлении своего содержимого, когда класс сохраняет фактическое имя типа, которое используется для управления вызовами функций и процедур.
Но, похоже, delphi Pascal обращается к памяти сразу после указания адреса данных, без какой-либо проверки его содержимого, поэтому в случае доступа он возвращает случайные значения неопределенные типы - типы, которые не имеют расширенной информации о типах (например, различные целочисленные типы) и AV в случае обращения к указанным типам.
Просто не забудьте проверить все типы указателей (как обычно, они начинаются с буквы P, например, как PAnsiChar) для содержания чего-либо в нем:
Пути:
// Assigned function
if Assigned(pvar) then
DoSomething();
// = nil comparision / equation
if pvar <> nil then
DoSomething()
Else
Exit;