В чем причина нарушения прав доступа при объединении строк в D2007? - PullRequest
0 голосов
/ 16 февраля 2010

У меня есть процедура, которая принимает 2 строковых параметра, один из которых имеет значение по умолчанию. Внутри процедуры я хочу объединить один и другой и некоторые литералы в одну большую строку. Почему-то я получаю AV ... есть идеи?

код примерно такой

{$WRITEABLECONST ON}
constructor MyClass.Create(s1: string; s2: string = GlobalConstant);
var s3: string;
begin
    ....
    if (s2 = '') then s2 := GlobalConstant + ' (' + s1 + ')';      // AV here
    ....
end;

Если я назначу GlobalConstant + ' (' + s1 + ') на s3, то s3 на s2, AV исчезнет. Зачем? Что не так с прямой записью в строковый параметр?

1 Ответ

6 голосов
/ 16 февраля 2010

Что-то еще в вашем коде неверно, что косвенно приводит к нарушению прав доступа в этом месте (повреждение). Используйте FastMM с FullDebugMode , чтобы выяснить, что это такое и как его решить.

...