Ошибка при преобразовании целого числа в строку

#delphi #type-conversion #delphi-7

#delphi #тип-преобразование #delphi-7

Вопрос:

Я программирую на Delphi 7 в Windows XP. Эта часть программы определяет заголовок для opendialog и у меня действительно странная проблема.

Код с ошибкой выглядит следующим образом

 od_cap := 'Select data set '   intToStr(n_data_sets);
  

где od_cap — строка, а n_data_sets — целое число. Возникающая ошибка EAccessViolation at address 0040459a … Я сузил проблему до того, что она вызвана inttostr преобразованием, потому что она по-прежнему выходит из строя, когда у меня есть od_cap := inttostr(2) . Более странным является то, что при первом вычислении этой строки она работает, но затем каждый раз происходит сбой во 2-м раунде.

Я не могу придумать ни одной причины, почему это может быть, и я недостаточно опытен, чтобы знать какие-либо ошибки, которые могут вызвать это. Я думаю, что это вся информация, которая вам должна понадобиться, но не стесняйтесь спрашивать больше.

Комментарии:

1. Появляется ли ошибка также при назначении od_cap := ‘2’? Является ли это назначение первым назначением в методе или ваших классах?

2. Как вы создаете TOpenDialog? Вы добавляете его в форму как компонент или создаете его в коде?

3. Проголосовали за закрытие. Спрашивающий думает, что вопрос связан с преобразованием целого числа в строку, но это явно не так. Похоже, что пользователь удалил свою учетную запись, поэтому нет никаких шансов получить дополнительную информацию для уточнения вопроса.

Ответ №1:

IntToStr() не вызывает AV во время преобразования. Более вероятно, что od_cap переменная не является допустимой String переменной, например, если она является членом объекта, который был освобожден, поэтому при его назначении возникает AV.