Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
ВнизИспользование ini для загрузки настроек програмы Найти похожие ветки
← →
WebSQLNeederr (2007-11-24 12:52) [0]Есть задача хранить список адресов сайтов в каком то файле. Изначально неизвестно сколько в списке будет записей, может быть один а может и 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...
Или может для таких целей инифайлы вообще не предназначины? тогда что посоветуете?
← →
KilkennyCat © (2007-11-24 13:25) [1]не понял, что непонятного... как сделать такое:
ReadString("Saiti","name","");
ReadString("Saiti","url","");
...
ReadString("Saiti","NNN",""); ?
Или такое:
ReadString("Saiti","name","");
ReadString("Saiti","url","");
...
ReadString("Saiti","NNN","");
....
ReadString("Saiti1","name","");
ReadString("Saiti1","url","");
...
ReadString("SaitiN","NNN",""); ?
← →
Сергей М. © (2007-11-24 13:25) [2]Вот такая структура
[KNOWN_SITES]
SiteName1=URL1 param1, param2, ..paramN
SiteName2=URL2 param1, param2, ..paramN
..
SiteNameN=URLN param1, param2, ..paramN
подойдет ?
← →
DVM © (2007-11-24 13:59) [3]
> А как организовать что бы оно читало все?? Скажем у меня
> этих связок будет 100...
Ini.ReadSections(Sections); + цикл
← →
WebSQLNeederr (2007-11-24 14:05) [4]KilkennyCat, ну как вы себе это представляете? Что бы добавить один сайт в список нужно будет перекомпелировать программу, хе-хе.
Сергей М., не совсем так как вы написали. Вот мой вариант
[Imia_saita1]
URL = http://bla-bla-bla.com
param1=param1
paramN=paramN
[Imia_saita2]
URL = http://bla-bla-bla.com
param1=param1
paramN=paramN
[Imia_saitaN]
URL = http://bla-bla-bla.com
param1=param1
paramN=paramN
← →
WebSQLNeederr (2007-11-24 14:07) [5]Хм, а лучше наверное вот так:
[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
← →
Плохиш © (2007-11-24 14:13) [6]
> WebSQLNeederr (24.11.07 14:05) [4]
В хелпе по TIniFile всё прекрасно расписано. А в чём твоя проблема совершенно не понятно...
← →
KilkennyCat © (2007-11-24 14:20) [7]
> KilkennyCat, ну как вы себе это представляете? Что бы добавить
> один сайт в список нужно будет перекомпелировать программу,
> хе-хе.
не стоит сразу пихать в код то, что здесь пишут. я спрашивал о структуре. Что все-таки неясно? Как с циклами работать?
← →
vegarulez © (2007-11-24 14:44) [8]Не понял что тебе не понятно.... в твоём ответе WebSQLNeederr (24.11.07 14:07) [5] ты сам всё правильно делаешь...
Так перебирай в цикле эти параметры при считывании с ини файла пусть у тебя их хоть 1000 будет... и ничего не придётся перекомпиливать...
← →
Che Vingam (2007-11-24 18:11) [9]Если как в 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.
← →
nstur (2007-11-25 15:18) [10]Добавь еще секцию - кол-во URL и сделай по ним цикл.
← →
Goric © (2007-11-26 14:34) [11]Рассмотри как возможное хранение инфы в таком вот виде:
<?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>
← →
KSergey © (2007-11-26 16:04) [12]> Goric © (26.11.07 14:34) [11]
> Рассмотри как возможное хранение инфы в таком вот виде:
И что, при добавлении сайта программу перекомпилировать??!!
← →
KSergey © (2007-11-26 16:08) [13]> nstur (25.11.07 15:18) [10]
> Добавь еще секцию - кол-во URL и сделай по ним цикл.
Не, динамически - лучше.
Проще модифицировать файл данных. Тем более, что читать его все едино не сложно, примеры выше даны.
← →
Dennis I. Komarov © (2007-11-26 16:11) [14]> [12] KSergey © (26.11.07 16:04)
Код в [11] не имеет отношение к коду программы.
← →
Dennis I. Komarov © (2007-11-26 16:14) [15]> [10] nstur (25.11.07 15:18)
Глупость то какая
← →
Goric © (2007-11-26 16:52) [16]> И что, при добавлении сайта программу перекомпилировать?
> ?!!
Было предложено хранить данные в файлах *.xml, и парсить их динамически с пощью, скажем, класса TXMLDocument, но не как не компилировать с кодом.
← →
Dennis I. Komarov © (2007-11-26 17:07) [17]> [16] Goric © (26.11.07 16:52)
Для данной задачи ИМХО ini выгоднее, т.к. не требует Parsera XML.
← →
KSergey © (2007-11-26 17:48) [18]> 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:51) [19]> [18] KSergey © (26.11.07 17:48)
Мне :)
← →
Dennis I. Komarov © (2007-11-26 17:53) [20]> [18] KSergey © (26.11.07 17:48)
[4] иммеет место к [1] :)
← →
HF-Trade © (2007-11-27 04:42) [21]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-27 09:48) [22]> [21] HF-Trade © (27.11.07 04:42)
Использование типизироваттых файлов иногда затрудняет их редактирование. В данном случае исправить ini файл можно с помощью "любого" текстового редактора. Использование типизированного файла, предполагает наличие интерфейса для его редактирования, что не всегда удобно.
← →
Anatoly Podgoretsky © (2007-11-27 11:34) [23]> Dennis I. Komarov (27.11.2007 09:48:22) [22]
Что бы шаловливые ручки не лезли, куда не положено. Что всегда удобно, чем потом бороться с последствиями.
← →
Dennis I. Komarov © (2007-11-27 11:56) [24]> [23] Anatoly Podgoretsky © (27.11.07 11:34)
ИМХО исходя из задачи. Я не настаиваю на выборе определенного варианта. Это оставим автору.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.04 c