2 개의 문자열 매개 변수를 허용하는 프로 시저가 있는데 그 중 하나에는 기본값이 있습니다. 프로 시저 내에서 하나의 문자열과 다른 하나의 문자열을 연결하여 하나의 큰 문자열을 형성하려고합니다. 어쨌든, 나는 AV를 얻고있다. 어떤 생각? 내가 GlobalConstant + ' (' + s1 + ')
s3
에, 다음 s3
는 AV가 사라 s2
에 할당 할당하는 경우D2007에서 문자열을 연결할 때이 액세스 위반의 원인은 무엇입니까?
코드는이
{$WRITEABLECONST ON}
constructor MyClass.Create(s1: string; s2: string = GlobalConstant);
var s3: string;
begin
....
if (s2 = '') then s2 := GlobalConstant + ' (' + s1 + ')'; // AV here
....
end;
같은 것입니다. 왜? 문자열 매개 변수에 직접 쓰는 것이 잘못된 이유는 무엇입니까?
제공하신 코드를 사용하여 d2007로 복제 할 수 없습니다. – glob
해당 코드에는 아무런 문제가 없습니다. AV가 왜 그렇게 될지 상상하기 어렵습니다. ia "GlobalConstant"가 어떻게 선언 되었습니까? –
@ 닉 호지스. 나는 코드가 다른 반복에서 작동하기 때문에 잘 선언 된 것을 안다. 어제는 6 번째 반복에서 실패했습니다. 오늘은 3 일에 실패했고 ... 다른 곳에서도 AV가 있었기 때문에 Paul-Jan의 답변에 기대고 있습니다. 뭔가 다른 것입니다. 어쨌든 Nick, 고맙습니다. – Sam