안녕 하세요.
DLL의 라이브러리와 연동하여 프로그램을 작성 하는데 다음과 같은 문제가
발생하여 여러분의 도움을 기다리고 있습니다.
해당 함수의 프로토 타입은 다음과 같습니다.
function get_data(name:String;
var data_name:Variant;
var data_size:LongInt;
var data:Pointer):Integer;
이 함수를 name이라는 변수에 데이터를 가져올 키값을 넣어 호출 하면,
data_name에 해당 데이터의 이름, data_size에 데이터 크기, data에 현재 데이터가
들어가 있는 메모리의 시작 주소의 값이 셋팅 됩니다.
이 함수를 호출 한 다음에 다음과 같이 데이터를 저장 하려고 하는데, 문제가 발생하여
진행을 못하고 있습니다.
rv := get_data(name, dataName, dataSize, Data);
AssignFile (dataFile, savedName);
Rewrite (dataFile);
!! BlockWrite (dataFile, Data^, dataSize, BytesWritten);
CloseFile (imageFile);
!! 부분의 BlockWrite 에서 오류가 발생하는데 아무래도 Pointer 타입의
변수인 Data 때문에 발생 하는 것 같습니다.
오류 메시지는 다음과 같습니다.
"ElnOutError with message I/O error 1784"
여기서 1784의 의미는 무엇일까요? 이 에러 코드를 어디서 찾아볼수 있는지도 궁금 합니다.
해결의 실마리를 찾을 수 있도록 고수님들의 많은 도움 기다립니다.
좋은 하루 되세요~
에러 메세지는 아래와 같구요...
1784 The supplied user buffer is not valid for the requested operation. ERROR_INVALID_USER_BUFFER
입출력 버퍼가 작아서 그런겁니다... dataSize가 입출력버퍼에 비해서 크니까 BlockWrite할때 여러개로 나누어서 파일에 쓰세요...
TFileStream을 쓰시는 것도 좋은 방법이구요...
^^ 항상 즐코하세요...