오늘 나는 신비한 것을 발견했습니다. 이 코드 행 :문자열에 # 0 문자가 포함되어 있으면 ShowMessage에서 예기치 않은 결과가 나오는 이유는 무엇입니까?
showmessage(menuMain.player[2] + ' ready!');
(예를 들어 menuMain.player [2] = 플레이어)이 메시지를 생성합니다 :
플레이어
그러나 나는 경우 (이런 식으로 코드를 삽입하는 경우 exampleMain.player [2] = Player) :
showmessage('Test: ' + menuMain.player[2]);
이 메시지는 다음과 같이 표시됩니다.
테스트 :
'플레이어'# 0 # 0 # 0 # 0 # 0 # : 플레이어
디버거에 따르면, 문자열
(buffer := menuMain.player[2] + ' ready!')
의 정확한 값은 이것이다 0 # 0 # 0 '준비!'
솔직히 내가 코드의 다른 블록에서 정확한 같은 라인을 가지고 있기 때문에 이것은, 컴파일러 결함이라고 생각합니까, 그것은 완벽하게 작동합니다.
나를 위해 힘든 부분은, 내가 바보가되고있는 것입니까, 아니면 실제로 이것은 결함입니까?
'menuMain' 선언은 무엇입니까? – MartynA
이 문제를 재현하는 데 사용할 수있는 [mcve]를 제공해주십시오. –
@MartynA menuMain은 프로젝트의 주된 형식이며, 플레이어는 string의 배열 [1..2]입니다. –