Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.29;
Скачать: CL | DM;

Вниз

Файл конфигурации - переменное число параметров   Найти похожие ветки 

 
Zhouck ©   (2003-09-17 18:05) [0]

Как создать и обрабатывать файл конфигурации , если в нем будет переменное число параметров? В ini- будет постоянное число, в реестре в принципе можно, но некрасиво и ненадежно...


 
Zacho ©   (2003-09-17 18:12) [1]

Ну и кто мешает сделать в ini переменное число ?
Или придумать свой формат файла конфигурации ?


 
Skier ©   (2003-09-17 18:13) [2]


> ? В ini- будет постоянное число

Это почему ?
А параметр ParamCount нельзя записать/считать в/из ini ? :)


 
Zhouck ©   (2003-09-17 18:18) [3]

Хорошо
На xml можно так

<pre>
<users>
<user name="vasya">
<Privileges>All</Privileges>
</user>
<user name="misha">
<Privileges>Guest</Privileges>
</user>
</users>
</pre>

Как такое сделать с ини ? Чтобы можно было добавлять/удалять ?


 
clickmaker ©   (2003-09-17 18:20) [4]

[users]
users=vasya,misha,...
[vasya]
Privileges=All
[misha]
Priviliges=Guest
...


 
Sandman25 ©   (2003-09-17 18:20) [5]

[users]
vasya=All
misha=Guest

:)


 
Zacho ©   (2003-09-17 18:21) [6]


> Zhouck © (17.09.03 18:18) [3]

RTFM TIniFile.Write.. , TIniFile.DeleteKey, TIniFile.EraseSection


 
Zhouck ©   (2003-09-17 18:24) [7]

Ха-ха
А как я узнаю при старте проги весь список юзеров ?
А если всех юзеров через запятую, то это криво и примитивно


 
Vlad ©   (2003-09-17 18:28) [8]

>Zhouck © (17.09.03 18:24) [7]
Почему криво и примитивно ?
Храни через любой другой разделитель. Что разобрать строчку слабо ?


 
Skier ©   (2003-09-17 18:30) [9]

UserCount = N

[User1]
Param = Something
[User2]
Param = Something Else
//..................
[UserN]
Param = Something Else for N


 
Sandman25 ©   (2003-09-17 18:31) [10]

[7] Zhouck © (17.09.03 18:24)

В крайнем случае, можно и так:

users=2
1=vasya
2=misha


 
Zhouck ©   (2003-09-17 18:36) [11]

Строчки разбирать - не слабо. Разбирали и char* и String

UserCount = N

[User1]
Param = Something
[User2]
Param = Something Else
//..................
[UserN]
Param = Something Else for N

Это вариант. Но опять же, не так , как нужно


 
Skier ©   (2003-09-17 18:37) [12]


> Но опять же, не так , как нужно

Поясни...


 
Zhouck ©   (2003-09-17 18:43) [13]

Если кто-то поменяет блокнотом UserCount , мы не найдем всех или зациклимся


 
Skier ©   (2003-09-17 18:46) [14]

>Zhouck © (17.09.03 18:43)
Железно !
А если посносить всё в реестре ?! Windows это понравиться, как думаешь ?!


 
Sandman25 ©   (2003-09-17 18:48) [15]

[13] Zhouck © (17.09.03 18:43)

А еще кто-то может байты в экзешнике поменять... а потом будет жаловаться, что прога не работает.


 
clickmaker ©   (2003-09-17 18:55) [16]

> Zhouck © (17.09.03 18:43) [13]

Запретить юзерам пользоваться блокнотом! А вордом - не догадаются :)


 
Andy BitOff   (2003-09-17 19:14) [17]

А веть можно и так, или я чего-то не понимаю
F := TIniFile.Create.....
....
if f.SectionExists("users") then f.ReadSectionValues("users",TStrings);
.....
и уже StringList разбирать


 
Zhouck ©   (2003-09-17 19:19) [18]

Да что вы все про ини-файлы ? Нет ли других вариантов (в смысле , никто ли не применял)? C XML например


 
Fredericco ©   (2003-09-17 20:05) [19]

Есть супер формат *.dat
Тело файла:

2
Vasya
Misha
---
All
Guest


var
sl:TStringList;
i,iEx:integer;
RCount,RBegin:integer;
begin
sl:=TStringList.Create;
sl.LoadFromFile("name.dat");
if sl.Count<=0 then ShowMessage("ERR 1") else begin
try
ShowMessage("Count users ==> "+IntToStr(StrToInt(sl[0])));
except
ShowMessage("ERR 2");
sl.Free;
Halt; // :-)
end;
RBegin:=0;
RCount:=0;
iEx:=1;
for i:= 1 to Min(StrToInt(sl[0]),sl.Count-1) do begin
if sl[i]="@@@" then begin
iEx:=i-1;
Break;
end else begin
Inc(RCount);
iEx:=i;
ShowMessage("You have user " +sl[i]);
end;
end;
if iEx=1 then begin
ShowMessage("ERR 3");
sl.Free;
Halt; // ;-)
end;
for i:=iEx+2 to iEx+2+RCount do begin
Inc(RBegin);
if RBegin>RCount then Break;
if (sl.Count-1)>=i then begin
if sl[i]="" then sl[i]:="Guest";
ShowMessage("User "+sl[rBegin]+" have "+sl[i]+" Privileges");
end else ShowMessage("User "+sl[rBegin]+" have Guest Privileges");
end;
end;
sl.Free;


 
Fredericco ©   (2003-09-17 20:18) [20]

Сорри там разделители не "---", а "@@@"!



Страницы: 1 вся ветка

Текущий архив: 2003.09.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
14-96383
Vlad Oshin
2003-09-11 17:47
2003.09.29
---|Ветка была без названия|---


14-96449
pasha_golub
2003-09-08 18:49
2003.09.29
Ищу компонент...


14-96440
Vint
2003-09-10 11:19
2003.09.29
Любителям головоломок


1-96224
Zhouck
2003-09-17 18:05
2003.09.29
Файл конфигурации - переменное число параметров


14-96452
KSergey
2003-09-10 08:18
2003.09.29
Про мушкетеров