C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5176] Re:메모리맵에 대한 질문입니다. ^^
홍용혁 [] 3135 읽음    2001-02-05 11:55
FileMapObj 는 HWND가 아니라 HANDLE 입니다.
그리고 파일연동안할때는 NULL 이 아니라 0xFFFFFFFF 입니다.
그리고 전체적으로 소스를 수정했는데 다음과 같습니다.

앗... 그리고 타입이 integer 이기때문에
Edit 컴포넌트 쓰신것은 테스트상 좋지 않군요.
Edit에 영문등을 입력하면 에러가 납니다.
CSpinButton 같은걸 이용하시면 좋을텐데...
그래서 이예제에서 테스트할때는 Edit에 숫자만 입력하십시오.
다른거 넣으면 에러날지도 모릅니다.

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE FileMapObj;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
FileMapObj = CreateFileMapping(
                (HANDLE)0xFFFFFFFF,             // 파일 연동 안함.
                NULL,             // 보안문제 신경 안 씀.
                PAGE_READWRITE,   // 읽고 쓸 것임.
                0,                // 크기 상위 DWORD
                sizeof(int),      // 크기 하위 DWORD
                "WhatTheHeck"     // 메맵 파일의 이름
        );

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    CloseHandle(FileMapObj);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int *buf;
        buf = (int *)MapViewOfFile(FileMapObj, FILE_MAP_WRITE, 0, 0, 0);
        if(buf==NULL)
        {
            UnmapViewOfFile( (void*)buf );
            CloseHandle(FileMapObj);
            return;
        }
        *buf=Edit1->Text.ToInt();
        UnmapViewOfFile( (void*)buf );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        int *buf;
        buf = (int *)MapViewOfFile(FileMapObj, FILE_MAP_READ, 0, 0, 0);
        if(buf==NULL)
        {
            UnmapViewOfFile( (void*)buf );
            CloseHandle(FileMapObj);
            return;
        }
        ShowMessage(IntToStr(*buf));
        UnmapViewOfFile( (void*)buf );

}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
5173 메모리맵에 대한 질문입니다. ^^ Applekiss 3069 2001/02/05
5176     Re:메모리맵에 대한 질문입니다. ^^ 홍용혁 3135 2001/02/05
5179         Re:Re:메모리맵에 대한 질문입니다. ^^ AppleKiss 2884 2001/02/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.