Q&A

  • 메모리 파일 메핑시 ShareMem만 쓰면 에러가...
이 소스는 [델파이의 모든것] - 인포북 -에서 메모리파일맵핑 예제입니다.

이 예제에서 ShareMem 유닛선언을 실행시에는 에러가 안나는데...종료시..

런타임에러가 발생합니다. (Invilid Pointer에러) 어떤식으로 해결 가능한지..

알고 싶습니다. 그럼.



(*************** 소스 ***************)



unit U_Exam2;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShareMem;



type

TForm1 = class(TForm)

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

hFileMap: THandle;

MapError: Integer;

SharedPChar: PChar

end;



const

CharLen = 100;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.FormCreate(Sender: TObject);

begin

hFileMap := 0;

SharedPChar := nil;

try

hFileMap

:= CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, CharLen + 1,

'SampleMMF');

if hFileMap = 0 then

raise Exception.Create('메모리 맵 파일 생성에 실패했습니다 !')

else

MapError := GetLastError();

SharedPChar

:= PChar(MapViewOfFile(hFileMap, FILE_MAP_READ + FILE_MAP_WRITE, 0, 0, 0));

if MapError <> ERROR_ALREADY_EXISTS then

StrPLCopy(SharedPChar, '샘플입니다 !', CharLen);

Edit1.Text := SharedPChar;

except

on E: Exception do begin

if SharedPChar <> nil then

UnmapViewOfFile(SharedPChar);

if hFileMap <> 0 then

CloseHandle(hFileMap);

end;

end;

end;



procedure TForm1.FormDestroy(Sender: TObject);

begin

UnmapViewOfFile(SharedPChar);

CloseHandle(hFileMap);

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

Edit1.Text := SharedPChar;

end;



procedure TForm1.Button2Click(Sender: TObject);

begin

StrPLCopy(SharedPChar, Edit1.Text, CharLen);

end;



end.

2  COMMENTS
  • Profile
    표경나 1998.11.19 05:34
    웹 어플리케이션을 만들고 있는 중입니다.

    작업환경은 윈95이구요..

    그래서 ms personal web이라는 걸 구해다가 웹서버를 설치해 줬습니다.

    그리고 델파이에서 웹 어플리케이션을 만들어서 실행킨후 생성된

    dll화일을 webshare라는 디렉토리의 scrip디렉토리에 복사했지요.

    그리고 넷스케이프를 열어서 제가 만든 dll파일을 열려고 하니

    파일이 깨어져서 하나도 알아 볼 수 가 없군요.

    이럴때 어떻게 해야 하지요?

    표컴맹이 눈가리고 더듬더듬 프로그래밍 하고 있는 중입니다...

    여기저기 쑤셔 보니.. 예제는 많은데

    하나같이 NT를 기준으로 설명되어 있군요..

    그래서 슬퍼요..

    누가 제게 친절히.. 그리고 상세히..

    제가 만든 dll파일을 넷스케이프로 띄울 수 있는 방법! 가르쳐 주시지

    않겠어요?



    참.. 저번에.. 엑셀파일 내보내는거랑.. blob파일에 관한 답변 감사했습니다.

    인사가 너무 늦었군요.. ^^;



  • Profile
    신인재 1998.11.19 07:52
    표경나 wrote:



    음냐~~~ 인잽니다....

    파일이 깨져서 하나도 알아 볼 수 가 없다는 뜻이 무었인지요....

    음냐....에러가 안나고 뭔가 보여 졌다면

    일단은 성공으로 보셔야 하겠습니다...

    넷스케이프를 쓰신다고 하셨는데...

    MS인터넷익스플로러를 써보시지요....



    그리고 이미 말씀하신대로 라면

    (웹서버 설치라든지)

    웹어플을 만들 환경설정은 거의 다 하신거 같은데..

    참고로 delphi Korea에서 웹 어플 강좌가 시행되고 있군요...

    http://blue.snu.ac.kr/delphikorea/



    > 웹 어플리케이션을 만들고 있는 중입니다.

    > 작업환경은 윈95이구요..

    > 그래서 ms personal web이라는 걸 구해다가 웹서버를 설치해 줬습니다.

    > 그리고 델파이에서 웹 어플리케이션을 만들어서 실행킨후 생성된

    > dll화일을 webshare라는 디렉토리의 scrip디렉토리에 복사했지요.

    > 그리고 넷스케이프를 열어서 제가 만든 dll파일을 열려고 하니

    > 파일이 깨어져서 하나도 알아 볼 수 가 없군요.

    > 이럴때 어떻게 해야 하지요?

    > 표컴맹이 눈가리고 더듬더듬 프로그래밍 하고 있는 중입니다...

    > 여기저기 쑤셔 보니.. 예제는 많은데

    > 하나같이 NT를 기준으로 설명되어 있군요..

    > 그래서 슬퍼요..

    > 누가 제게 친절히.. 그리고 상세히..

    > 제가 만든 dll파일을 넷스케이프로 띄울 수 있는 방법! 가르쳐 주시지

    > 않겠어요?

    >

    > 참.. 저번에.. 엑셀파일 내보내는거랑.. blob파일에 관한 답변 감사했습니다.

    > 인사가 너무 늦었군요.. ^^;

    >





    • Pascal
    • 1998.11.20 10:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.11.21 02:46
      음.. DLL을 사용하신 부분의 소스를 보여주시면 더 쉽게 설명이 가능할 텐데요... DLL을 사용하실때는 ...
    • 이호선
    • 1999.05.29 07:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.05.29 18:08
      이호선 께서 말씀하시기를... > 안녕하세요.. > Delphi에서 제공하는 인스톨 쉴드를 사용하여 Setup프로...
    • 이용성
    • 1998.11.19 08:07
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1998.11.20 20:25
      음냐 제가 프로그램을 짜서 갈켜 드리려구 했는데.. 델파이 코리아에 BatchMove컴포넌트를 이용한 팁이 있...
    • 신인재
      1998.11.21 05:35
      신인재 wrote: > 음냐 제가 프로그램을 짜서 갈켜 드리려구 했는데.. > 델파이 코리아에 BatchMove컴포넌...
    • 김도영
    • 1999.05.29 04:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 표경나
      1998.11.19 05:34
      웹 어플리케이션을 만들고 있는 중입니다. 작업환경은 윈95이구요.. 그래서 ms personal web이라는 걸 구...
    • 신인재
      1998.11.19 07:52
      표경나 wrote: 음냐~~~ 인잽니다.... 파일이 깨져서 하나도 알아 볼 수 가 없다는 뜻이 무었인지요.......
    • 표경나
    • 1998.11.19 05:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 북해
      1999.05.29 02:15
      안녕하세요. 이곳 자료실에서 인스톨쉴드5.5 트라이얼버전을 다운 받았는데요, 인스톨을 시켜보니까 패스워...
    • 신인재
      1998.11.19 07:52
      표경나 wrote: 음냐~~~ 인잽니다.... 파일이 깨져서 하나도 알아 볼 수 가 없다는 뜻이 무었인지요.......
    • kbs91
    • 1999.05.29 01:29
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 나 연숙
      1998.11.19 02:06
      안녕하세요.. 저는 델파이 3.0을 사용하고 있는데요 Ftp Component 를 사용해서 RemoteHost에 있는 Fil...
    • 안치봉
      1999.05.29 01:59
      kbs91 께서 말씀하시기를... > 안녕하세요. > 저는 김범술이라고 하는데요. > TPrinter를 이용하여 출력...
    • 김정배
    • 1998.11.18 06:47
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김재현
      1999.05.29 01:26
      각각의 개별적인 .EXE 실행파일에서 하나의 TDatabase 컴포넌트를 공유하는 법을 알고 싶습니다. 즉 메...
    • 이정욱
      1998.11.21 14:58
      델파이란, C++같은 프로그래밍 언어 입니다. 파스칼을 확장한 형태 입니다. 즉, 델파이는 프로그램을 만...
    • 이정욱
      1999.05.29 09:25
      제 생각으로는 직접적으로는 불가능하다고 생각이 드네요... 구조상... 서로 Table이름을 교환해서 (파라...
    • 김 완진
      1998.12.13 02:01
      델파이가 언어라고 하셨는데, 개발환경으로 보는 것이 맞지않나 생각합니다. 예를 들면 Visual C++은 C++...
    • 이현택
      1999.05.29 00:59
      Q_report 에서 출력화면을 shape compnent로 작성을 했습니다 출력시 3장이상 출력하고나면 4장째 PC 가 D...
    • 이정욱
      1998.11.16 10:34
      컴포넌트 중에 Packet에 관한 컴포넌트가 있습니다. 그것을 사용해 보세요. 이태호 wrote: > 또 질문 ...
    • 이태호
      1998.11.17 12:18
      이정욱 wrote: > 컴포넌트 중에 Packet에 관한 컴포넌트가 있습니다. > 그것을 사용해 보세요. > > 이...
    • 마성수
    • 1999.05.28 23:31
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 손현민
      1998.11.16 21:35
      시스템 환경은 NT4.0,SQL6.5,ODBC 입니다. Query를 사용해서 for문을 돌리는 도중 Insufficent memory for...
    • 박성훈
      1999.05.31 04:59
      마성수 께서 말씀하시기를... > Query해서 나온 자료를 DBGRID에 뿌린후 > Request Live 를 TRUE 로 하면...
    • 신인재
      1998.11.17 06:58
      손현민 wrote: > 시스템 환경은 NT4.0,SQL6.5,ODBC 입니다. > Query를 사용해서 for문을 돌리는 도중 Ins...
    • 박성훈
      1999.06.04 03:15
      박성훈 께서 말씀하시기를... > 마성수 께서 말씀하시기를... > > Query해서 나온 자료를 DBGRID에 뿌린...
    • 김계환
    • 1999.05.28 23:19
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 손현민
      1998.11.16 21:35
      시스템 환경은 NT4.0,SQL6.5,ODBC 입니다. Query를 사용해서 for문을 돌리는 도중 Insufficent memory for...
    • 유수
      1999.05.29 03:51
      안녕하세여.. 실행될 때 마다 다른 방식으로 로고를 보이기 위해선, 먼저 Randomize, Random 함...
    • 신인재
      1998.11.17 06:58
      손현민 wrote: > 시스템 환경은 NT4.0,SQL6.5,ODBC 입니다. > Query를 사용해서 for문을 돌리는 도중 Ins...
    • 이호선
      1999.05.28 22:56
      안녕하세요. 2가지 궁금한 사항이 있어서 질문합니다. MSACCESS를 델파이에서 연결해 쓰는 방법중에서 SQ...
    • 이정욱
      1998.11.16 10:34
      컴포넌트 중에 Packet에 관한 컴포넌트가 있습니다. 그것을 사용해 보세요. 이태호 wrote: > 또 질문 ...
    • 이정욱
      1999.05.28 23:23
      Diamond라는 컴포넌트가 있습니다. 이것을 사용하면 BDE가 없이 DAO를 가지고 직접 MSACCESS데이타에 접근...
    • 이태호
      1998.11.17 12:18
      이정욱 wrote: > 컴포넌트 중에 Packet에 관한 컴포넌트가 있습니다. > 그것을 사용해 보세요. > > 이...
    • 이태호
    • 1998.11.10 11:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김태균
      1999.05.28 19:21
      안녕하세요. DB에 있는 자료를 Query해서 MS-Word로 넘기려고 합니다. 표가 없을때 텍스트만 넘기는 것...
    • 이정욱
      1998.11.16 10:33
      음.. 마이크로 소프트웨어라는 잡지에 제가 글을 썼었는데, 몇월호 였는지는 기억이 잘 나지 않는군요... ...
    • 남윤혁
    • 1999.05.28 19:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.05.28 19:54
      남윤혁 께서 말씀하시기를... > TClientSocket과 TServerSocket을 이용해서 > > 문자열을 보내는 프로...
    • 손지연
    • 1998.11.11 20:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 종모
      1998.11.15 11:13
      안녕하세요? 초보라 답변이 될지 모르겠네요. > 주폼과 별폼의 연결이라... 1. 간단하게 주폼에서...
    • 신인재
      1998.11.12 08:32
      손지연 wrote: > 주폼과 별폼을 연결하려고 하는데 어떻게 해야 하나요? > 자세히 설명을 해 주시면 고맙...
    • 김동수
    • 1999.05.28 19:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 글쎄요.
      1999.05.28 22:47
      김동수 께서 말씀하시기를... > 밑에 방법으로 해봤는데... > 같은 결과만 떨어지네요... > 다른 방법은...
    • Heaven
    • 1999.05.28 18:26
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 표경나
      1998.11.14 09:34
      델파이에서 생성된 dbf파일을 엑셀로 보내려고 시도를 하니 SpredOCX.dcp가 없다는 에러가 생깁니다. OCX...
    • 신인재
      1999.05.29 21:57
      음냐... 코딩으로 처리 하세요....... 답변이 부실해서 죄송하고요........ 코딩으로 처리해 보신 후...
    • 신인재
      1998.11.14 21:51
      음냐...인잽니다..... 음 액셀파일로 컨버전 하실려구 하시는 군요.... 음 SpredOCX는 비베에서 쓰는 물...
    • 신인재
      1998.11.14 22:08
      에고 죄송해요...한가지 빠졌네요.... SAveFileDlg다음에 이걸 주가 시켜 줘야 해요.... 음냐..기억을 더...