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
[27827] Range Check Error가 납니다
물소리 [jasonkrm] 1683 읽음    2003-11-10 21:59
현재..다국어(한국어, 중국어, 영어) 기능을 가지고 있습니다.
도움말을..디져서 씨빌더내의 Languages의 기능을 이용해서 다국어 기능을 처리했습니다.
그런데..문제는..윈도우 2000이상에서는 전혀 문제.없이 돌아 가는데. 윈도우 98에서는 Range Check Error
납니다.

프로그램 처음 시작시 리소스를 불러오는 중간에 발생하는 에러로 추정됩니다.
혹시 이런 경험.있으신..분이..계신가여? 도대체 이유를..알수가..없습니다.

아래의 소스는 C빌더 예제에 있는 소스중에서 ReInit.PAS를 그대로 링크 해서 사용하는데 표시한 부분에서
에러가 나더군여.

참고로..저는 C++Builder5.0 Ent버전으로 코딩중이면 윈도우는 2000Pro버전하에서 개발합니다.

function LoadNewResourceModule(Locale: LCID): LongInt;
var
  FileName: array [0..260] of char;
  P: PChar;
  LocaleName: array[0..4] of Char;
  NewInst: LongInt;

begin
  GetModuleFileName(HInstance, FileName, SizeOf(FileName));
  GetLocaleInfo(Locale, LOCALE_SABBREVLANGNAME, LocaleName, SizeOf(LocaleName));
  P := PChar(@FileName) + lstrlen(FileName);
  while (P^ <> '.') and (P <> @FileName) do Dec(P);
  NewInst := 0;
  Result := 0;
  if P <> @FileName then
  begin
    Inc(P);
    if LocaleName[0] <> #0 then
    begin
      // Then look for a potential language/country translation
      lstrcpy(P, LocaleName);
      NewInst := LoadLibraryEx(FileName, 0, LOAD_LIBRARY_AS_DATAFILE);
/*----- 바로 요넘 LoadLibraryEx()만 호출하면 에러가 납니다 -----------------
      if NewInst = 0 then
      begin
        // Finally look for a language only translation
        LocaleName[2] := #0;
        lstrcpy(P, LocaleName);
        NewInst := LoadLibraryEx(FileName, 0, LOAD_LIBRARY_AS_DATAFILE);
      end;
    end;
  end;
  if NewInst <> 0 then
    Result := SetResourceHInstance(NewInst)
end;

+ -

관련 글 리스트
27827 Range Check Error가 납니다 물소리 1683 2003/11/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.