J'ai une procédure qui accepte 2 paramètres de chaîne, l'un d'entre eux a une valeur par défaut. Dans la procédure, je veux concaténer l'un et l'autre et certains littéraux pour former une plus grande chaîne. D'une certaine manière, je reçois un AV ... des idées?Quelle est la cause de cette violation d'accès lors de la concaténation de chaînes dans D2007?
Codeest quelque chose comme ça
{$WRITEABLECONST ON}
constructor MyClass.Create(s1: string; s2: string = GlobalConstant);
var s3: string;
begin
....
if (s2 = '') then s2 := GlobalConstant + ' (' + s1 + ')'; // AV here
....
end;
Si je cède GlobalConstant + ' (' + s1 + ')
-s3
, puis attribuez-lui s3
-s2
l'AV disparaît. Pourquoi? Quel est le problème avec l'écriture directe sur le paramètre de chaîne?
en utilisant le code que vous avez fourni, je ne peux pas reproduire avec d2007. – glob
Il n'y a rien de mal avec ce code. Difficile d'imaginer pourquoi il serait là-bas. Comment "GlobalConstant" a-t-il été déclaré? –
@Nick Hodges. Je sais que c'est bien parce que le code fonctionne dans une autre itération. Hier, il a échoué à la sixième itération, aujourd'hui il a échoué le troisième ... et j'ai eu des AV dans d'autres endroits aussi, alors je me penche vers la réponse de Paul-Jan. Quelque chose d'autre est un manque. Merci quand même Nick, je l'apprécie. – Sam