Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.008 c
3-96147
Agent_03
2003-09-08 11:59
2003.09.29
Как прописать в BDE Administrator путь к сетевой базе?


6-96323
Е-Моё имя
2003-07-29 13:20
2003.09.29
настройка показа картинок для TWebBrowser


1-96187
petro
2003-09-16 11:26
2003.09.29
richedit


1-96195
Кодер
2003-09-18 11:02
2003.09.29
Как вычислить период времени?


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский