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

FireMonkey Q&A
[152] Re:[질문] 보관된 값이 초기화 되지 않게 하려면...
정성훈.해미 [sage5nor] 743 읽음    2016-04-15 10:22
안녕하십니까.
정성훈.해미입니다.

어플이 제거될 경우에는 관련 파일이 모두 없어지기때문에
유지하실려면 다른 꼼수가 필요하지만
그러면 사용자 휴대폰에 쓰레기 파일이 남게되서
추천하지 않습니다.

일반적으로 설정파일(INI파일 등)로 저장을 할 경우
어플이 제거되지 않는 한 그대로 유지 됩니다.
어플이 업데이트 되어도 유지되니 구현하시던 INI파일 형태로 하셔도 됩니다.
(추신: 어플 폴더 내에 생성한 유저 파일은 유지되는지 확인 못했네요)

설정값이 초기화 되는 문제는 여러거지 원인이 있을 수 있겠지만
프로젝트 옵션(배포 방법, 디버그/릴리즈)이 다를 경우에
설정 파일 위치가 달라져서 그럴수도 있습니다.

getSharedPreferences함수를 이용하면
해당 어플에 대한 사용자 환경 설정을 저장하고 불러올 수 있습니다.
어플이 제거되지 않는 한 유지됩니다.

제가 구현하여 사용하고 있는 코드를 살짝 바꿔서 공유해 드립니다.
도움이 되시길 바랍니다.

*추신: C++소스입니다.


//---------------------------------------------------------------------------
// 환경 설정 불러오기 함수
//---------------------------------------------------------------------------
void c_Cfg::Load()
{
#if defined(__ANDROID__) && defined(__arm__)
    _di_JSharedPreferences Prefs;
    Prefs = SharedActivity()->getSharedPreferences(StringToJString("MyApp"), TJActivity::JavaClass->MODE_PRIVATE);

    try {
        UserID = Prefs->getString(StringToJString("User ID"), StringToJString(""));
        UserPW = Prefs->getString(StringToJString("User PW"), StringToJString(""));
    } catch (...) {
        UserID = "";
        UserPW = "";
    }

#endif
}
//---------------------------------------------------------------------------
// 환경 설정 저장 함수
//---------------------------------------------------------------------------
void c_Cfg::Save()
{
#if defined(__ANDROID__) && defined(__arm__)
    _di_JSharedPreferences Prefs;
    _di_JSharedPreferences_Editor    Editor;

    Prefs = SharedActivity()->getSharedPreferences(StringToJString("MyApp"), TJActivity::JavaClass->MODE_PRIVATE);
    Editor = Prefs->edit();

    Editor->putString (StringToJString("User ID"), StringToJString(UserID));
    Editor->putString (StringToJString("User PW"), StringToJString(UserPW));

    Editor->apply();
#endif
}

// 사용법
FormCreate 이벤트에서 설정 불러오기 함수를 호출합니다.
FormCloseQuery 이벤트에서 설정 저장 함수를 호출합니다.




초보자 님이 쓰신 글 :
: USB 디버깅 상태로 프로그램을 테스트 중입니다.
:
: 프로그램에서는 <아이디><비번>을 입력받아 서버로 접속하여 인증처리를 하고 있습니다.
: 그러다 보니 프로그램을 구동할 때마다 매번 <아이디><비번>을 입력해야 하는 번거로움이 생겼습니다. 그래서 접속이 한 번이라도 이루어 진 후에는  계정을 묻지 않도록 ini파일로 계정을 보관했다가 재사용 하도록 조치했습니다.
:
: 문제는 프로그램을 수정한 뒤 실행(Deploy)하면 원래 보관했던 ini파일이 없어지는 겁니다.
:
: (1) 원래 그런 건지요?
: 원래 그런 거라면 계정 값을 어떤 특정위치에 보관했다가 재사용 한다든지 하는 방법이 있을까요?
: 즉, 프로그램이 제거되거나 변경되어도 임의의 위치에 보관된 값은 그대로 유지되게 한다든지 하는 꼼수라도 있는지요?
:
: (2) ini파일에 보관하는 방법이 아닌 다른 방법이 있는지요?
:
: 여기 저기 뒤져가면서 어떻게 해보려는데... 아는 것도 없거니와 참고할 만한 자료도 별로 없어서 진전이 없습니다.
: 알고 보면 별 거 아닐 거 같은데 말이죠...
:
: 미리 감사드립니다. (꾸벅)
:

+ -

관련 글 리스트
150 [질문] 보관된 값이 초기화 되지 않게 하려면... 초보자 708 2016/04/14
152     Re:[질문] 보관된 값이 초기화 되지 않게 하려면... 정성훈.해미 743 2016/04/15
153         Re:Re:[질문] 보관된 값이 초기화 되지 않게 하려면... 727 2016/04/15
155             [답변] 델파이 소스입니다 정성훈.해미 1023 2016/04/15
156                 Re:[답변] 델파이 소스입니다 초보자 795 2016/04/15
157                     Re:Re:[답변] 델파이 소스입니다 초보자 895 2016/04/16
151     Re:[질문] 보관된 값이 초기화 되지 않게 하려면... 험프리 687 2016/04/15
154         Re:Re:[질문] 보관된 값이 초기화 되지 않게 하려면... 초보자 743 2016/04/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.