Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.041 c
15-1196121599
Германн
2007-11-27 02:59
2007.12.23
Опять offtop, но не могу сдержаться.


3-1187100144
Мистик
2007-08-14 18:02
2007.12.23
прямой доступ


2-1196440912
vegarulez
2007-11-30 19:41
2007.12.23
Вопрос (даже не знаю как правильно сформулировать) про группы.


15-1195586382
Германн
2007-11-20 22:19
2007.12.23
Автоматическое обновление WinXp SP1


2-1196081931
FOX
2007-11-26 15:58
2007.12.23
трехмерные изображения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский