#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.