Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2013, 11:09   #1
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
Вопрос Как правильно взять секцию

Есть файлы такого формата:
Код:
[FIXED_PRODUCE]
Krestian_Turki(TA) 3
Center_Turki(TA) 2 2 H
Sclad4(TA)       2 0 S
Rinok_Turki(TA)	 0 1 M

Center_Turki(TA) 3
Krestian_Turki(TA) 0 0 P
Pehota_turki(TA)   5 0 P
Tatarin(TA)	   6 0 M

Sclad4(TA) 1
GRUZ(TA)  0 0 O

[UPGRADE]
//akademia
AKA08TA A8 #POSITION 2 0 #LEVEL 1 AKA08AU #COST 1 WOOD 5500  #TIME 500
	EFFECT_WOOD 400

[UPGRADEPLACE]
Sclad4(TA) 1 AKA08TA

[UPGRADEENABLE]
AKA08TA

[ACCESSCONTROL]
GRUZ(TA) 2 Sclad4(TA) Rinok_Turki(TA)
Rinok_Turki(TA) 1 Sclad4(TA)    
Sclad4(TA)       1 Center_Turki(TA)
Попробовал считывать секции процедурой Ini.ReadSection
читает 0, но если добавить в секцию таких строк:
Цитата:
sitem3=D:\Music\01 - Burning With Life.mp3
sitem4=D:\Music\01 - Medieval.mp3
sitem5=D:\Music\01 Chi mai (prima).mp3
sitem58=D:\Mp3\11. Armageddon.mp3
то их читает.
А как вы считываете секции с нестандартными ключами?
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 27.08.2013, 11:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Парсить на предмет квадратных скобок в начале и конце строки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.08.2013, 12:56   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

Код:
r:=TStringList.Create;
r.LoadFromFile(...);
produ:=r.indexof('[FIXED_PRODUCE]');
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.08.2013, 13:06   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Где, такой откопали? Если-бы стоял знак "=", можно бы было воспользоваться TIniFile.
В данном случае, только то, что сказал Avatar. Не забудьте про пробелы (головнвя боль вех прогрмаммистов) в цикле while.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 31.08.2013, 18:06   #5
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
r:=TStringList.Create;
r.LoadFromFile(...);
produ:=r.indexof('[FIXED_PRODUCE]');
На первое время вполне может сгодится, но на следующем этапе нужно парсить и я даже не представляю с какой стороны начинать...

Формат примерно такой:
Код:
 AKA30PL A30 #POSITION 9 2 #LEVEL 1 AKA30AU #COST 3 GOLD 1150 WOOD 2300 STONE 58700 #TIME 500
	BUILD GRP 10 KUTTER(PL) KECH(PL) FregatNEW(PL) Victoria(PL) Lodka(PL) Yahta(PL) PERES_KOR(PL) Fregat(PL) Linkor(PL) GALERA(PL) -90%	
AKA31PL A31 #POSITION 10 0 #LEVEL 1 AKA31AU #COST 2 GOLD 350 IRON 2000 #TIME 500
	ATTPAUSE WEAPONKIND VISTREL GRP 10 Dragun19(PL) Gr_au(PL) Gv_Saper(PL) Evegr(PL) Gv_au(PL) Mushketer_polsha(PL) Mushketer(PL) Grenader(PL) Dragun(PL) Dragun_18(PL) -35%
AKA32PL A32 #POSITION 10 4 #LEVEL 1 AKA32AU #COST 2 GOLD 1550 COAL 3700 #TIME 500
	COST GRP 4 Gr_au(PL) Gv_Saper(PL) Gv_au(PL) Mushketer(PL) GRP 2 IRON -50% GOLD -50% 
AKA33PL A33 #POSITION 10 2 #LEVEL 1 AKA33AU #COST 2 GOLD 5501 COAL 21200 #TIME 500
	ATTPAUSE WEAPONKIND VISTREL GRP 10 Dragun19(PL) Gr_au(PL) Gv_Saper(PL) Evegr(PL) Gv_au(PL) Mushketer_polsha(PL) Mushketer(PL) Grenader(PL) Dragun(PL) Dragun_18(PL) -35%
подробно первая запись:
Код:
AKA30PL A30 
  #POSITION 9 2 
  #LEVEL 1 AKA30AU 
#COST 3 GOLD 1150 WOOD 2300 STONE 58700 
#TIME 500
	BUILD GRP 10
 KUTTER(PL) 
KECH(PL) 
FregatNEW(PL)
 Victoria(PL) 
Lodka(PL) 
Yahta(PL) 
PERES_KOR(PL)
 Fregat(PL)
 Linkor(PL) 
GALERA(PL) -90%
Число 10 обозначает к скольким типам объектов надо применить сие действие, если количество правильных записей <> числа то произойдет катастрофа

когда я еще не знал что тута все циферки и буковки так крепко связаны, пробовал дописывать объекты ручками а цыфру не исправлял тогда катастрофы происходили постоянно, вот я теперь решил по-хитрому делать: все объекты добавлять только через список как TMemo или TlistBox, список знает сколько в нем строк и число BUILD GRP 10всегда будет точно соответствовать числу строк.
Только беда в том что все записи неодинаковы:
Код:
AKA32PL A32 #POSITION 10 4 #LEVEL 1 AKA32AU #COST 2 GOLD 1550 COAL 3700 #TIME 500
	COST GRP 4 Gr_au(PL) Gv_Saper(PL) Gv_au(PL) Mushketer(PL) GRP 2 IRON -50% GOLD -50%
Код:
AKA05PL A5 #POSITION 1 1 #LEVEL 1 AKA05AU #COST 2 GOLD 2520 WOOD 12400 #TIME 500
	FISHING Lodka(PL) +100%
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пару вопросов про синхронизацию\критическую секцию bakanaev Общие вопросы Delphi 8 14.03.2013 12:19
Расширить секцию nls Win Api 1 31.07.2012 21:18
Программа вхождения и выхождения в критическую секцию.. hen Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.11.2011 22:38
удалить секцию в Ini файле Viten2 Общие вопросы Delphi 6 11.07.2011 18:13
Как прочесть секцию в ini Volkogriz Общие вопросы Delphi 8 04.02.2009 09:37