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

Вниз

Использование 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.014 c
15-1195985196
Kostafey
2007-11-25 13:06
2007.12.23
С днем рождения ! 25 ноября


2-1196332087
{ент
2007-11-29 13:28
2007.12.23
Два простых вопроса


3-1187180933
Lite
2007-08-15 16:28
2007.12.23
Ошибка выполнения SQL запроса


2-1195914602
savyhinst
2007-11-24 17:30
2007.12.23
GIF


15-1195705163
Alex___
2007-11-22 07:19
2007.12.23
Opera 9.24