ini파일의 사용법에 대해서 좀 알고 싶습니다.
제가 할 것은여..
음.. 제 프로그램은 로그인 하는 프로그램인데요.
아이디와 비밀번호를 저장하고 다음에 다시 이 값들을 불러오는 거에요.(비밀번호 저장체크박스가 하나 있어요.)
또 자동접속을 체크하면.. 이 값이 저장되어있어서 다음에 프로그램을 실행시킬때 자동으로 로그인 되구여..
아! 한가지 더.. 윈도우 부팅시에 자동으로 프로그램이 실행될 수 있도록 레지스트리에 값을 저장하는 것은 어케 하는거지요?
ini파일을 어떻게 만들어야 하는지.. 그리고 ini파일을 읽고 쓸수 있게끔 어케 하는지좀 알려주세요.. 부탁드립니다. 꾸벅!!
전 델파이 초보거든여.. 최대한 좀 알기 쉽게 가르쳐 주세요~~
참고자료라도 있으면 좀 주시고여~~ 부탁부탁~~
비밀번호 체크박스 하나, 접속 버튼 하나가 있겠네요.
아이디, 비번, 비번저장여부는 접속 버튼 눌렀을때 저장이 되어야겠지요.
(버튼눌렀을때 이벤트)
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파일을 읽고 쓸수 있게끔 어케 하는지좀 알려주세요.. 부탁드립니다. 꾸벅!!
>
> 전 델파이 초보거든여.. 최대한 좀 알기 쉽게 가르쳐 주세요~~
> 참고자료라도 있으면 좀 주시고여~~ 부탁부탁~~