이 방법이 간단 할 수 있지만 시간이 지남에 따라 유니 코드 문제가 너무 많은 고려 사항을 갖습니다.호환되지 않는 형식 StrAlloc가 StrAlloc과 함께 PWideChar를 반환하기 때문에 PAnsiChar 및 PWideChar
이 코드를 가지고 :
나는 그래서 내가StrAlloc- 호환되지 않는 유형의 PAnsiChar와 PWideChar로
에 대한 오류가 발생하는 경우에, 그래서 구성 요소는, 지금pcBuffer as PAnsiChar
원하는pcBuffer := StrAlloc(Stream.Size + 1) where pcBuffer is defined as PWideChar
StrAlloc가 PWideChar를 반환하기 때문에
어떻게 해결할 수 있습니까?
유니 코드 방식이나 GetMem을 통해
PAnsiChar or alloacate
에 캐스트를 입력 할 수 있습니까?
@Shanand 범위를 벗어나거나 "Finalize"등을 호출하여 문자열을 삭제합니다. 선택하는 기능은 무엇이든 사용하고, 사용하지 않으려는 경우 사용합니다. XE에서 컴파일되지 않는 코드 (태그가 추가 된 버전)를 언급하면 틀린 것으로 보이는 대답을 수락하는 것이 이상합니다. 당신은 XE를 사용하지 않고 있습니까? 귀하의 의견은 매우 혼란 스럽습니다. 응답에 노력을 기울이고 질문에 중대한 세부 사항이 잘못되었음을 알면 실망합니다. 레미가 대답 할 때 코드를 고쳐 쓸 것이라고 확신합니다. –
David : 사과 ... 잘못 대답을 잘못 쳤어.하지만 적어도 문제를 좁히기 위해 사용했습니다 - Remy가 제안한대로 AnsiStrings.AnsiStrAlloc (Stream.Size + 1); 그 때 당신에 의해 시정되었습니다. 당신이 레미의 견해를 언급 한 이래로 저는 그것에 매료되었습니다. 오히려 나는 나를 위해 일한 그의 의견에 대한 귀하의 회신에 행복했습니다. 제 질문은 U가 올바르게 대답 한 곳에서 꽤 분명하다고 생각합니다. 당신의 도움에 감사드립니다! 앞으로 귀하의 도움이 반드시 필요합니다. –
D2007에있는 기존 코드는 XE6에서 해당 라인을 다시 써야합니다 (질문이었습니다). 어쨌든 - 그 해결하고 다른 문제와 함께입니다. 데이빗 & 레미 감사합니다. –