안뇽하신가여 고수님& 중수님들..^^
지가여 ini파일을 다르는법을 배우고 싶포서여 ^^
그러니까여.. ini파일를 db대신 사용해볼라구여...용량이 작은 파일이라서리..
txt파일루 맹글라구 했는디.. ini파일을 사용하는게 더 효율(?)적인것 같아서여..
지금 지가 입력은 간단하게
ini:=Tinifile.Create(Extractfilepath(Application.ExeName)+'sample.ini');
try
ini.WriteString('ini','예제',edit1.Text);
finally
ini.free;
end;
(저장)
try
ini.readstring('ini','예제',''
finally
ini.Free;
end;
(불러오기)
이런식으로해봤는디여 근디 문젠
저장을 할라구 하는 부분에서 문제 임당.. 지가 저장할려구하는 값들은
a,b,c,d 이렇게 값들이 있는디..
위의 소스대로 돌리면 a,b,c,d 이렇게 차례대로 입력하고 나면
맨마지막 d만 입력이 되어 있더군여 ㅠㅠ
왜 그런지여... 전 계속 값들이 입력 될거라 생각했는디..
그리고여 불러올때여 여러개의 값들을 리스트박스에 어떻게 넣어야 하나여 아시는 고수님들은 주저하쥐 마시고 울트라 초보 사발에게 답글을 주심 감솨 하겠슴당..
구럼 이만 ^^ 존답변기댕김당...^^
※추가 질문임당...
만약 a,b,c,d 이렇게 값들을 저장했다면 요기서 b를 삭제하고플땐 어떻게 하죠 ^^
그리고 또한가지여...헐.. 질문이 넘많당..^^
한번입력한 값을 또 입력하쥐 못하게 하고픈디 그건또 어떻게 해야하는쥐??? 헐...
.
.
.
SysComm := TiniFile.Create(SysDllFile);
If Not SysComm.SectionExists(SoftClassName) Then
begin
SysComm.Free;
Exit;
end;
If SysComm.SectionExists('aaaa') AND SysComm.SectionExists('bbbb') Then
begin
GList := TStringList.Create;
SysComm.ReadSection('GroupID',GList);
varaaaa := GList[0];
GList.Clear;
SysComm.ReadSection('UserID',GList);
varbbbb := GList[0];
GList.Free;
end;
lsFileName := SysComm.ReadString(SoftClassName,SoftClassName,'');
comm := TiniFile.Create(lsFileName);
SList:= TStringList.Create;
comm.ReadSection(SoftClassName,SList);
If SList[SList.Count-1] > '00000000' Then
.
.
.
.
.
Cnt := Cnt + comm.ReadInteger('TotCount','Cnt',0);
comm.WriteInteger('TotCount','Cnt',Cnt);
comm.DeleteKey(SoftClassName,SList[0]);
comm.WriteString(SoftClassName,DateStr,'1');
ini 에는 항상 다음과 같은 형식으로 저장됩니다
test.ini
[sectionName1]
aaaa=1
bbbb=2
[sectionName2]
cccc=0
dddd=5
여기에서 섹션명1에 해당하는 스트링값을 읽어오시고 싶을때는
TStringList형 변수를 선언해 주시고
readsection으로 읽어오시면 TStringList에 순서대로 기억됩니다(도움말에 예제있슴)
예문)
var
SList : TStringList;
.
.
readsection('sectionName1',SList)
하시면
SList[0] 에는 aaaa 가
SList[1] 에는 bbbb 가 들어가게 됩니다
aaaa에 해당하는 값을 알고 싶으면
readstring('sectionName1',SList[0],'') 와 같이 해주시면 됩니다
그리고 해당 섹션의 값의 수는 SList.count에 들어있으니깐
지우고자 하는 값은 바로 이 SList를 이용하시면 됩니다..
도움이 되었기를...