Я прочитал большинство сообщений здесь о недопустимых операциях с указателями в Delphi, и они, кажется, не применимы к этому случаю... Метод проб и ошибок привел меня к строке с проблемой, но для меня это не имеет никакого смысла. В этом примере динамический массив записей заполняется содержимым текстового файла по мере его анализа. Все работает отлично, за исключением случаев, когда память, выделенная для динамического массива, освобождается - в этом случае я получаю «Недопустимая операция указателя». Когда я меняю рассматриваемую строку с оператора ifthen на классический if-then, это работает.
Мой вопрос прост: почему первый из них не позволяет освободить память, а второй - успешно?
Первый пример:
TempFTDB[ci].FTText := ifthen(TempHolder = '', '', TempHolder + #13#10) + lr;
Второй пример:
if tempholder = '' then
TempFTDB[ci].FTText := lr
else
TempFTDB[ci].FTText := tempholder + #13#10 + lr;
Строка, которая освобождает память:
TempFTDB := nil;
Дальнейшее уточнение: TempFTDB — это локальная переменная, и нет других строк, освобождающих ее память. Именно в строке «TempFTDB := nil» возникает ошибка.
TempFTDB
? А если ошибка возникает на строкеTempFTDB := nil
, то при чем тут настройкаFTText
? - person NGLN   schedule 07.05.2012