질문에 어패가 있는 듯 합니다.
파일명이라는 것은 파일시스템에 쓰여져야 생성되는 것 입니다. 같은 파일에 덮어쓰게 되면 사이즈가 변경되겠구요.
즉 단순히 파일명을 넘기기 위해서는 꼭 파일시스템에 쓰여져야 합니다.
만약 dll 의 함수를 수정할 수 있다면 인자를 IStream 으로 받고 델파이의 TMemoryStream 으로 파일을 메모리에서 작업후 TStreamAdapter 으로 COM object(IStream )로 생성하여 스트림을 넘길 수 있을 것 같습니다.
물론 프로그래밍적인 해결 방법은 아닐 수 있지만 질문자께서 언급한 물리 메모리를 디스크 같이 사용하는 램디스크도 있습니다.
김동수 님이 쓰신 글 :
: 안녕하십니까?
:
: 델파이 초보입니다.
:
: DLL의 어떤 함수에 파일 이름을 전달해주게 되어 있는데, 그 전에 처리를 하고 싶습니다.
: 예컨데 DLL의 함수는 abcfun(PChar(file.name), ....); 이런 식으로 파일 이름을 넘겨 주게 되어 있습니다.
:
: 저는 형편상 이 파일에 사전에 일정 작업을 한 후 넘겨 주고 싶은데,
: 그러자니 저 파일을 먼저 읽고, 조작하고, 다시 새로운 파일로 이름을 바꾸어 저장한 후 그 이름을 넘겨주어야 합니다.
:
: 이 방법을 써도 되지만 그렇게 되면 디스크에 그 흔적이 남을 테고,
: 너무 거친 방법이 아니겠는가 싶습니다.
: 어쨌건 프로그램 내에서 흔적 없이 처리하고 싶습니다.
: 특정 일부 내용이 아니라 파일 이름을 DLL에 넘겨주어야 하는데 고민이 있는 것입니다.
:
: 가상으로 메모리를 디스크인 양 할당 처리한다든가,
: 또는 다른 스마트한 방법이 있을까 싶어 이곳에 여쭙습니다.
:
: 고맙습니다.
:
|