자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 델파이 TMemoryStream.Create 에러
2017.11.17 20:20
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
안녕하세요....
Tokyo 10.2.1 을 사용하고 있습니다.
HTTP를 통해 화일을 다운받는 모듈을 작성중에 있습니다.
procedure TForm1.DownloadPhoto;
var
IdHTTP: TIdHTTP;
mStream: TMemoryStream;
iFilename, mFilename: String;
i: Integer;
begin
mStream:=TMemoryStream.Create;
IdHTTP := TIdHTTP.Create(nil);
try
iFilename := TPath.Combine(WebSite + '/Safety', 'DBInitPhoto.txt');
mFilename := TPath.Combine(Path, 'DBInitPhoto.txt');
IdHTTP.Get(iFilename, mStream);
mm_Internet.Lines.LoadFromFile(mFilename);
finally
end;
try
for i := 0 to mm_Internet.Lines.Count-1 do begin
mStream.Clear;
mFilename := TPath.Combine(PathSf, mm_Internet.Lines[i]);
iFilename := TPath.Combine(WebSite + '/Safety', mm_Internet.Lines[i]);
IdHTTP.Get(iFilename, mStream);
mStream.SaveToFile(mFilename);
end;
finally
FreeAndNil(mStream);
FreeAndNil(IdHTTP);
end;
------------
프로그램은 잘 실행됩니다.
왼쪽 [Structure] 창에서 다음과 같은 Errors가 생깁니다.
'TMemoryStream' does not contain a member named 'Create' at line 2889
Help [F1] 키로 살펴보니
TMemoryStream의 Create Member는 C++ 코드만 정의되어 있고 delphi 코드는 없습니다.
이번 Tokyo 버전에 빠져있는 건가요?
Delphi 델파이 TMemoryStream.Create 에러
2017.11.17 20:20
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
안녕하세요....
Tokyo 10.2.1 을 사용하고 있습니다.
HTTP를 통해 화일을 다운받는 모듈을 작성중에 있습니다.
procedure TForm1.DownloadPhoto;
var
IdHTTP: TIdHTTP;
mStream: TMemoryStream;
iFilename, mFilename: String;
i: Integer;
begin
mStream:=TMemoryStream.Create;
IdHTTP := TIdHTTP.Create(nil);
try
iFilename := TPath.Combine(WebSite + '/Safety', 'DBInitPhoto.txt');
mFilename := TPath.Combine(Path, 'DBInitPhoto.txt');
IdHTTP.Get(iFilename, mStream);
mm_Internet.Lines.LoadFromFile(mFilename);
finally
end;
try
for i := 0 to mm_Internet.Lines.Count-1 do begin
mStream.Clear;
mFilename := TPath.Combine(PathSf, mm_Internet.Lines[i]);
iFilename := TPath.Combine(WebSite + '/Safety', mm_Internet.Lines[i]);
IdHTTP.Get(iFilename, mStream);
mStream.SaveToFile(mFilename);
end;
finally
FreeAndNil(mStream);
FreeAndNil(IdHTTP);
end;
위 코드는 전혀 문제되는 부분이 없습니다.
의심할 부분은
TMemoryStream 클래스는 System.Classes.pas에 선언 및 구현되어 있습니다.
만약, 다른 유닛에도 TMemoryStream 클래스가 선언되어 있고, 해당 클래스를 참조하는 경우 위와 같은 문제가 발생할 수도 있습니다.
증상을 확인하기 위해서 아래와 같이 조치해보시기 바랍니다.
1) 델파이 코드 에디터에서 TMemoryStream에 마우스를 대고 컨트롤 키 누른상태에서 클릭하세요.
(TMemoryStream 클래스 선언된 부분을 찾아갑니다.)
2) 만약, System.Classes.pas가 아닌 다른 유닛을 가르킨다면,
명시적으로 Classes.TMemoryStream으로 지정하시기 바랍니다.
또는, 유즈절(uses)에서 Classes 항목을 유닛 제일 뒤로 이동하시기 바랍니다.(제일 뒤부터 유즈절의 유닛을 선참조합니다.)
혹시 다른 이슈가 있으시면 확인 내용과 함께 다시 질문주시기 바랍니다.