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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2010, 11:22   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Дописать строки в конец *.ini

Как можно дописать в конец *.ini файла несколько строк и только один раз, тоесть при следующих запусках программы поновой не делать допись?
Во вложении файл в который надо дописать
;================================== =================================== =========
; Hidden: Source Beta 4
[HL2.EXE_hidden]
AppId=220

GCF=base source engine 2.gcf
GCF=source models.gcf
GCF=source materials.gcf
GCF=source sounds.gcf
GCF=half-life 2 content.gcf
Вложения
Тип файла: rar steamemu.rar (1.1 Кб, 10 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 12.01.2010, 12:04   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

в конец или нет, это не имеет значение для ini-файлов
в чем затык? конечно можно... читайте секцию HL2.EXE_hidden и любой параметр, а то и все, и проверяйте наличие, если нет их или они неверные - то записываем заново... ini.writestring('HL2.EXE_hidden','G CF','base source engine 2.gcf') и т.д.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.01.2010, 13:28   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Что-то я не правильно делаю. В конечный файл попадает только одна строка из GCF
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
F: TINIFile;
begin
F:=TINIFile.Create(ExtractFilePath(ParamStr(0))+'steamemu.ini');
F.WriteString('HL2.EXE_VSCOOP16', 'AppId', '240');
F.WriteString('HL2.EXE_VSCOOP16', 'GCF', 'base source engine 2.gcf');
F.WriteString('HL2.EXE_VSCOOP16', 'GCF', 'source models.gcf');
F.WriteString('HL2.EXE_VSCOOP16', 'GCF', 'source materials.gcf');
F.WriteString('HL2.EXE_VSCOOP16', 'GCF', 'source sounds.gcf');
F.WriteString('HL2.EXE_VSCOOP16', 'GCF', 'counter-strike source shared.gcf');
F.WriteString('HL2.EXE_VSCOOP16', 'GCF', 'counter-strike source client.gcf');
F.Free;
end;
Как сделать отступ между
Код:
F.WriteString('HL2.EXE_VSCOOP16', 'AppId', '240');
и
Код:
F.WriteString('HL2.EXE_VSCOOP16', 'GCF', 'base source engine 2.gcf');
вот так чтобы было
AppId=240

GCF=base source engine 2.gcf
И не пойму как записать в ini такую строку и чтобы именно так она выглядела
;================================== =================================== =========
; VenShinra Co-Op 1.6
Shouldercannon вне форума Ответить с цитированием
Старый 12.01.2010, 13:49   #4
lexaltd
Форумчанин
 
Регистрация: 21.07.2008
Сообщений: 192
По умолчанию

Потому что имена Идентификаторов одинаковые 'GCF'

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Как сделать отступ между
Отступ в ини файле наверно не получится- работай как с текстовым файлом

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
И не пойму как записать в ini такую строку и чтобы именно так она выглядела
;================================== =================================== =========
; VenShinra Co-Op 1.6
Если такую строку "============================== ==== =================================== ========="
то можно так
Код:
F.WriteString('HL2.EXE_VSCOOP16', '=', '================================= =================================== =========');
Если как у тебя с ";" впереди - работай как с текстовым файлом

Последний раз редактировалось mihali4; 12.01.2010 в 14:16.
lexaltd вне форума Ответить с цитированием
Старый 12.01.2010, 13:51   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Как исправить?
Shouldercannon вне форума Ответить с цитированием
Старый 12.01.2010, 13:51   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

А можем вам через StringList сделать
SERG1980 вне форума Ответить с цитированием
Старый 12.01.2010, 13:54   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

все, звиняюсь ... сразу не заметил, вот что значит глаз замылился ... файл просто похож на ini... параметры в секциях то одинаковые... лучше тогда вручную записывать, например загрузив через assign или в stringlist:
Код:
var t: tstringlist;
    i: integer;
    p: boolean;
begin
 t:= tstringlist.create;
 t.loadfromfile('steamemu.ini');

 // ïðîâåðÿåì íàëè÷èå ñåêöèè
 p:= false;
 for i:=0 to t.Count-1 do
  if pos('[HL2.EXE_VSCOOP16]', t[i])>0 then p:= true;
 //
 if (p) then begin
  t.Add('[HL2.EXE_VSCOOP16]');
  t.Add('AppId=240');
  t.Add('');
  t.Add('GCF=base source engine 2.gcf');
  t.Add('GCF=source models.gcf');
  t.Add('GCF=source materials.gcf');
  t.Add('GCF=source sounds.gcf');
  t.Add('GCF=counter-strike source shared.gcf');
  t.Add('GCF=counter-strike source client.gcf')
 end;
 t.Free
 ...
upd
-------

ооо, уже наваяли тут сообщений
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 12.01.2010 в 14:02.
raxp вне форума Ответить с цитированием
Старый 12.01.2010, 14:11   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

наоборот всё получилось. Если нет [HL2.EXE_VSCOOP16], то ничего не записывается, если есть то записывается столько раз сколько была запущена программа.
Shouldercannon вне форума Ответить с цитированием
Старый 12.01.2010, 14:14   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

if (not p) then begin
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.01.2010, 14:17   #10
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

прямо здесь напишите содержимое файла который должен должен получится
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа считает пробел за конец строки AxenicX Общие вопросы C/C++ 3 12.11.2009 10:16
Дописать в конец столбца tae1980 Microsoft Office Excel 3 29.06.2009 12:03
как добавить строку в конец строки Damhurz PHP 4 16.04.2009 14:35
Дописать в конец файла Cdevelop Общие вопросы C/C++ 1 25.03.2009 21:39
Дописать в конец файла Cdevelop Общие вопросы C/C++ 5 15.03.2009 16:46