Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.014 c
14-96428
Lu
2003-09-10 14:05
2003.09.29
Еще одна головоломка


14-96413
Mr@MsGuns
2003-09-10 13:42
2003.09.29
Россия - Швейцария: ваши прогнозы, господа товарищи?


14-96432
jack128
2003-09-10 13:09
2003.09.29
Именинники 10 сентября


1-96184
Шишкин Илья
2003-09-18 10:32
2003.09.29
Нужна помощь


3-96067
Nestor
2003-09-10 10:48
2003.09.29
Как добавить в runtime в Dataset поле




   Наверх