Q&A

  • [급한질문]ini파일
ini파일의 사용법에 대해서 좀 알고 싶습니다.

제가 할 것은여..

음.. 제 프로그램은 로그인 하는 프로그램인데요.

아이디와 비밀번호를 저장하고 다음에 다시 이 값들을 불러오는 거에요.(비밀번호 저장체크박스가 하나 있어요.)



또 자동접속을 체크하면.. 이 값이 저장되어있어서 다음에 프로그램을 실행시킬때 자동으로 로그인 되구여..



아! 한가지 더.. 윈도우 부팅시에 자동으로 프로그램이 실행될 수 있도록 레지스트리에 값을 저장하는 것은 어케 하는거지요?



ini파일을 어떻게 만들어야 하는지.. 그리고 ini파일을 읽고 쓸수 있게끔 어케 하는지좀 알려주세요.. 부탁드립니다. 꾸벅!!



전 델파이 초보거든여.. 최대한 좀 알기 쉽게 가르쳐 주세요~~

참고자료라도 있으면 좀 주시고여~~ 부탁부탁~~

2  COMMENTS
  • Profile
    jwz27 2000.10.02 23:02
    일단 화면구성은 아이디, 비밀번호 에디트 박스 2개가 있겠고

    비밀번호 체크박스 하나, 접속 버튼 하나가 있겠네요.

    아이디, 비번, 비번저장여부는 접속 버튼 눌렀을때 저장이 되어야겠지요.



    (버튼눌렀을때 이벤트)

    var

    Myini : Tinifile; // uses 절에 inifiles 를 추가하세요.

    begin

    Myini := Tinifile.Create(ExtractFilePath(Application.ExeName) + 'USER.INI');

    Myini.WriteString('USER', 'USERNAME', Edit1.Text);

    Myini.WriteString('USER', 'PASSWORD', Edit2.Text);

    Myini.WriteBool('USER', 'PASSSAVE', CheckBox1.Checked);

    Myini.Free

    end;



    그리고 처음에 프로그램이 떴을때 이렇게 저장된 정보가 디폴트로 떠야겠구요.

    (로그인 창이 떴을때 이벤트, FormActivate)

    var

    Myini : Tinifile;

    begin

    Myini := Tinifile.Create(ExtractFilePath(Application.ExeName) + 'USER.INI');

    Edit1.Text := Myini.ReadString('USER', 'USERNAME', ''); // 디폴트값은 공백

    Edit2.Text := Myini.ReadString('USER', 'PASSWORD', '');

    CheckBox1.Checked := Myini.ReadBool('USER', 'PASSSAVE', false);

    Myini.Free;



    if CheckBox1.Checked then Button1Click(Sender);

    // 체크박스가 되어있으면 자동 접속..

    end;



    그리고 윈도우가 떴을때 자동으로 뜨는건..........

    레지스트리에 등록을 시켜야겠지요.......

    이부분은 셋업창 쪽이나 프로그램 종료시나 아무데나 넣으세요.

    var

    MyReg : TRegistry; // uses 에 Registry 추가

    begin

    MyReg := TRegistry.Create;

    MyReg.RootKey := HKEY_LOCAL_MACHINE;

    if MyReg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionrun', true) then

    MyReg.WriteString('내프로그램', Application.ExeName);

    MyReg.CloseKey; // 이부분은 해보지는 않아서....맞는건지... --;

    MyReg.Free;

    end;



    대충 써봤는데요.. 별로 어려운건 없습니다.

    아, 그리고 위프로그램들은 그냥 즉석으로 친거라 에러가 날지도 몰라영....

    그리고 ini 안에 유저명과 암호가 저장되는데 비번이 그대로 저장되기때문에

    문제가 될수도 있어요..보안상... 암호화를 시켜야 하는데...

    참고가 될만한 암호화 함수를 같이 보여드리지여...

    어디서 구한 함수인지 기억이 나지는 않아여...

    메일이 왔길래 출처가 여기일것같아서 와보니 맞더군요..여기다 쓰는게 나을듯해서..

    그럼..........





    const

    C1 = 52845; // 기준키1

    C2 = 22719; // 기준키2

    MY_KEY = 12345; // 사용자키



    function Encrypt(const S: String; Key: Word): String;

    var

    i: byte;

    sEncrypt, rEncrypt: String;

    rChar: Char;

    begin

    sEncrypt := ''; // 암호화된 이진 문자열

    if S = '' then begin

    Encrypt := '';

    System.Exit;

    end;



    for i := 1 to Length(S) do begin

    sEncrypt := sEncrypt + char(byte(S[i]) xor (Key shr 8));

    Key := (byte(sEncrypt[i]) + Key) * C1 + C2;

    end;



    rEncrypt := ''; // 암호화된 이진 문자열을 ASCII 숫자로 변경

    for i := 1 to Length(sEncrypt) do begin

    rChar := sEncrypt[i];

    rEncrypt := rEncrypt + format('%.3d', [Ord(rChar)]); // 한문자당 3자리씩

    end;

    Result := rEncrypt;

    end;



    function Decrypt(const S: String; Key: Word): String;

    var

    i: byte;

    sDecrypt, rDecrypt, temp: String;

    begin

    rDecrypt := '';

    if S = '' then begin

    Decrypt := '';

    System.Exit;

    end;



    i := 1;

    repeat

    temp := Copy(S, i, 3); // 한문자당 3자리 숫자로 저장되어 있다

    rDecrypt := rDecrypt + Chr(StrToIntDef(temp, 0)); // ASCII값을 구한다

    i := i + 3;

    until i > Length(S);



    sDecrypt := '';

    for i := 1 to Length(rDecrypt) do begin

    sDecrypt := sDecrypt + char(byte(rDecrypt[i]) xor (Key shr 8));

    Key := (byte(rDecrypt[i]) + Key) * C1 + C2;

    end;

    Result := sDecrypt;

    end;





    파이걸 wrote:

    > ini파일의 사용법에 대해서 좀 알고 싶습니다.

    > 제가 할 것은여..

    > 음.. 제 프로그램은 로그인 하는 프로그램인데요.

    > 아이디와 비밀번호를 저장하고 다음에 다시 이 값들을 불러오는 거에요.(비밀번호 저장체크박스가 하나 있어요.)

    >

    > 또 자동접속을 체크하면.. 이 값이 저장되어있어서 다음에 프로그램을 실행시킬때 자동으로 로그인 되구여..

    >

    > 아! 한가지 더.. 윈도우 부팅시에 자동으로 프로그램이 실행될 수 있도록 레지스트리에 값을 저장하는 것은 어케 하는거지요?

    >

    > ini파일을 어떻게 만들어야 하는지.. 그리고 ini파일을 읽고 쓸수 있게끔 어케 하는지좀 알려주세요.. 부탁드립니다. 꾸벅!!

    >

    > 전 델파이 초보거든여.. 최대한 좀 알기 쉽게 가르쳐 주세요~~

    > 참고자료라도 있으면 좀 주시고여~~ 부탁부탁~~

  • Profile
    바보감자 2000.10.02 22:46
    파이걸 wrote:

    > ini파일의 사용법에 대해서 좀 알고 싶습니다.

    > 제가 할 것은여..

    > 음.. 제 프로그램은 로그인 하는 프로그램인데요.

    > 아이디와 비밀번호를 저장하고 다음에 다시 이 값들을 불러오는 거에요.(비밀번호 저장체크박스가 하나 있어요.)

    >

    > 또 자동접속을 체크하면.. 이 값이 저장되어있어서 다음에 프로그램을 실행시킬때 자동으로 로그인 되구여..

    >

    > 아! 한가지 더.. 윈도우 부팅시에 자동으로 프로그램이 실행될 수 있도록 레지스트리에 값을 저장하는 것은 어케 하는거지요?

    >

    > ini파일을 어떻게 만들어야 하는지.. 그리고 ini파일을 읽고 쓸수 있게끔 어케 하는지좀 알려주세요.. 부탁드립니다. 꾸벅!!

    >

    > 전 델파이 초보거든여.. 최대한 좀 알기 쉽게 가르쳐 주세요~~

    > 참고자료라도 있으면 좀 주시고여~~ 부탁부탁~~



    안녕하세요 델초보 바보감자입니다.



    꼭 ini 파일이 아니어두 상관없지 않을까요..

    일단 보통 데이타 파일이나 txt 파일이나 암튼 샘파일 하나 만들어서 암호와

    비밀 번호는 거기에 저장시켜 노시구염.

    자동실행은 방법이 레지스트리 건들기와 윈도우에서 지원해주는

    시작 프로그램에 바로가기 항목 올려 놓는방법.

    두번째 방법은 제가 말안해도 쉽게 하실수있으리라 생각하네요..

    좋은 답변이 돼었나 몰르겠네요.

    언제나 즐코딩 하시구요

    힘내시기를 바랍니다.

    그럼 이만.. 저두 프로그램 짜는라 바뻐서. ^^;;



    언제나 비를 기다리는 바보감자 올림.