![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование ini для загрузки настроек програмы
WebSQLNeederr © (2007-11-24 12:52:00)Есть задача хранить список адресов сайтов в каком то файле. Изначально неизвестно сколько в списке будет записей, может быть один а может и 100. Список - это название сайта, его урл ну и еще пару параметров.
Вот, я пытаюсь его прочитать с помощью чтения ини файлов.
uses inifiles;
procedure Load(fname:string);
var inifile:TIniFile;
begin
inifile:=TIniFile.create;
with inifile do
begin
ReadString('Saiti','name','');
ReadString('Saiti','url','');
end;
inifile.destroy;
end;
В коде могут быть маленькие неточности так как пишу по памяти, я сейчас не в Делфи.
Вот собственно вопрос - этот код читает только одну связку имени файла и его урла. А как организовать что бы оно читало все?? Скажем у меня этих связок будет 100...
Или может для таких целей инифайлы вообще не предназначины? тогда что посоветуете?
Dennis I. Komarov (2007-11-27 11:56:00) [1]> [23] Anatoly Podgoretsky © (27.11.07 11:34)
ИМХО исходя из задачи. Я не настаиваю на выборе определенного варианта. Это оставим автору.
Anatoly Podgoretsky (2007-11-27 11:34:00) [2]> Dennis I. Komarov (27.11.2007 09:48:22) [22]
Что бы шаловливые ручки не лезли, куда не положено. Что всегда удобно, чем потом бороться с последствиями.
Dennis I. Komarov (2007-11-27 09:48:00) [3]> [21] HF-Trade © (27.11.07 04:42)
Использование типизироваттых файлов иногда затрудняет их редактирование. В данном случае исправить ini файл можно с помощью "любого" текстового редактора. Использование типизированного файла, предполагает наличие интерфейса для его редактирования, что не всегда удобно.
HF-Trade (2007-11-27 04:42:00) [4]TRecord?
Type
TMyUrls=Record
Name:String[255];
Param1:String[255];//или че там?
Param2:String[255];
end;
........
var
MyUrl:TMyUrls;
FMyUrl:File of TMyUrls;
.........
While Not EOF FMyUrl do
Begin
Read(FMyUrl,MyUrl);
......
или я не догнал че та....
Dennis I. Komarov (2007-11-26 17:53:00) [5]> [18] KSergey © (26.11.07 17:48)
[4] иммеет место к [1] :)
Dennis I. Komarov (2007-11-26 17:51:00) [6]> [18] KSergey © (26.11.07 17:48)
Мне :)
KSergey (2007-11-26 17:48:00) [7]> Dennis I. Komarov © (26.11.07 16:11) [14]
> Код в [11] не имеет отношение к коду программы.
как же, как же.
А вот тут написано иное. Кому верить?
> WebSQLNeederr (24.11.07 14:05) [4]
> KilkennyCat, ну как вы себе это представляете? Что бы добавить
> один сайт в список нужно будет перекомпелировать программу, хе-хе.
:)
Dennis I. Komarov (2007-11-26 17:07:00) [8]> [16] Goric © (26.11.07 16:52)
Для данной задачи ИМХО ini выгоднее, т.к. не требует Parsera XML.
Goric (2007-11-26 16:52:00) [9]> И что, при добавлении сайта программу перекомпилировать?
> ?!!
Было предложено хранить данные в файлах *.xml, и парсить их динамически с пощью, скажем, класса TXMLDocument, но не как не компилировать с кодом.
Dennis I. Komarov (2007-11-26 16:14:00) [10]> [10] nstur (25.11.07 15:18)
Глупость то какая
Dennis I. Komarov (2007-11-26 16:11:00) [11]> [12] KSergey © (26.11.07 16:04)
Код в [11] не имеет отношение к коду программы.
KSergey (2007-11-26 16:08:00) [12]> nstur (25.11.07 15:18) [10]
> Добавь еще секцию - кол-во URL и сделай по ним цикл.
Не, динамически - лучше.
Проще модифицировать файл данных. Тем более, что читать его все едино не сложно, примеры выше даны.
KSergey (2007-11-26 16:04:00) [13]> Goric © (26.11.07 14:34) [11]
> Рассмотри как возможное хранение инфы в таком вот виде:
И что, при добавлении сайта программу перекомпилировать??!!
Goric (2007-11-26 14:34:00) [14]Рассмотри как возможное хранение инфы в таком вот виде:
<?xml version="1.0" encoding="XXXXX"?>
<Sites>
<Site id="1">
<URL> http://bla-bla-bla.com</URL>
<Param1>ParamValue1</Param1>
<Param2>ParamValue2</Param2>
<Param3>ParamValue3</Param3>
<ParamN>ParamValueN</ParamN>
</Site>
<Site id="2">
<URL> http://bla-bla-bla.com</URL>
<Param1>ParamValue1</Param1>
<Param2>ParamValue2</Param2>
<Param3>ParamValue3</Param3>
<ParamN>ParamValueN</ParamN>
</Site>
</Sites>
nstur (2007-11-25 15:18:00) [15]Добавь еще секцию - кол-во URL и сделай по ним цикл.
Che Vingam (2007-11-24 18:11:00) [16]Если как в WebSQLNeederr (24.11.07 14:07) [5]
Sections : TStringList;
...
Ini.ReadSections(Sections);
for i:=0 to Sections.Count -1 do
begin
Name[i] := Ini.ReadString(Sections[i], 'Name', '?');
URL[i] := Ini.ReadString(Sections[i], 'URL', '?');
....
end;
или можно не в массиве перебирать, а ReadSection, ReadSectionValues.
vegarulez (2007-11-24 14:44:00) [17]Не понял что тебе не понятно.... в твоём ответе WebSQLNeederr (24.11.07 14:07) [5] ты сам всё правильно делаешь...
Так перебирай в цикле эти параметры при считывании с ини файла пусть у тебя их хоть 1000 будет... и ничего не придётся перекомпиливать...
KilkennyCat (2007-11-24 14:20:00) [18]
> KilkennyCat, ну как вы себе это представляете? Что бы добавить
> один сайт в список нужно будет перекомпелировать программу,
> хе-хе.
не стоит сразу пихать в код то, что здесь пишут. я спрашивал о структуре. Что все-таки неясно? Как с циклами работать?
Плохиш (2007-11-24 14:13:00) [19]
> WebSQLNeederr (24.11.07 14:05) [4]
В хелпе по TIniFile всё прекрасно расписано. А в чём твоя проблема совершенно не понятно...
WebSQLNeederr (2007-11-24 14:07:00) [20]Хм, а лучше наверное вот так:
[1]
Name=imia
URL = http://bla-bla-bla.com
param1=param1
paramN=paramN
[2]
Name=imia
URL = http://bla-bla-bla.com
param1=param1
paramN=paramN
[3]
Name=imia
URL = http://bla-bla-bla.com
param1=param1
paramN=paramN