나는 (유니 코드 - 2009 델파이) 매우 큰 파일을 구문 분석하고, 그리고는 유래 질문에 설명 된대로 그렇게 사용 PChar는 변수를 수행하기위한 매우 효율적인 루틴이 : 나는 파일로 실행까지 What is the fastest way to Parse a line in Delphi?PChar를 가져와 델파이에서 파일 끝까지 지난 16 진수 00으로 이동하려면 어떻게해야합니까?
모든 큰 일했습니다 그 안에 16 진수 : 00 문자가 일부 포함되어 있습니다. 이 문자는 PChar 문자열의 끝을 알리고 내 파싱은 그 시점에서 멈 춥니 다. 당신이로 파일을로드 할 때
그러나 :
FileStream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyWrite);
Size := FileStream.Size;
는 해당 파일의 크기가 훨씬 더 큰 것을 찾을 수 있습니다. 메모장을 사용하여 파일을 열면 PChar가 수행하는 것처럼 처음 16 진수 : 00에 멈추지 않고 파일의 끝에로드됩니다.
내 읽기/구문 분석 속도를 늦추지 않고 PChar 구문 분석을 사용하면서 파일 끝까지 읽을 수있는 방법은 무엇입니까?
PChars를 사용하는 실제 코드를 보지 않고도 대답하는 것은 어렵습니다. 그것은 당신이 그들을 다루는 방법에 달려 있습니다 - 문자열 함수는 정의에 의해 문자열의 끝이므로 항상 첫 번째 0 바이트에서 멈 춥니 다. 반면에, 이들은 메모리에 대한 포인터 만 입력합니다. 그것들을 일반 포인터로 처리 할 수 있으며 처음 0 바이트에서 멈추지 않고 길이를 다른 곳에 저장하십시오. – Chris
@Chris - 코드는 위에서 언급 한 다른 Stackoverflow 질문에서 허용되는 대답과 매우 유사합니다. 특히, 나는 다음과 같은 줄을 가지고있다 : while (cp ^> # 0) and (cp^<= # 32) do – lkessler