이 소스는 [델파이의 모든것] - 인포북 -에서 메모리파일맵핑 예제입니다.
이 예제에서 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.
작업환경은 윈95이구요..
그래서 ms personal web이라는 걸 구해다가 웹서버를 설치해 줬습니다.
그리고 델파이에서 웹 어플리케이션을 만들어서 실행킨후 생성된
dll화일을 webshare라는 디렉토리의 scrip디렉토리에 복사했지요.
그리고 넷스케이프를 열어서 제가 만든 dll파일을 열려고 하니
파일이 깨어져서 하나도 알아 볼 수 가 없군요.
이럴때 어떻게 해야 하지요?
표컴맹이 눈가리고 더듬더듬 프로그래밍 하고 있는 중입니다...
여기저기 쑤셔 보니.. 예제는 많은데
하나같이 NT를 기준으로 설명되어 있군요..
그래서 슬퍼요..
누가 제게 친절히.. 그리고 상세히..
제가 만든 dll파일을 넷스케이프로 띄울 수 있는 방법! 가르쳐 주시지
않겠어요?
참.. 저번에.. 엑셀파일 내보내는거랑.. blob파일에 관한 답변 감사했습니다.
인사가 너무 늦었군요.. ^^;