Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> По чтению текстовых файлов.... 
:(
    Опции темы
Unregistered
Дата 4.3.2004, 09:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Sniper
Используй типизированные файлы
  Вверх
SlaUr
Дата 4.3.2004, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Вот мое решение : скачать юнит для работы со строками Unit MyStr

(ошибки в процедурах не обработаны)

Код

uses mystr;
type TConfig = record
       wireframe: Boolean;
       snd_freq: Integer;
     vid_bpp: Integer;
     vid_mode_x: Integer;
     vid_mode_y: Integer;
     end;
var Myconf:TConfig;F1:Text;

Procedure ReadMyconf;
var st1:string;
begin
With MyConf do
begin

    wireframe:=False;{инициилизировать и другие переменные в типе TConfig}

Assign(F1,'myconf.cfg');Reset(F1);
  While not eof(f1) do  
    begin
       ReadLn(F1,St1);
       if NFi(1,st1)='wireframe' then
            if Nfi(2,St1)='Yes' then  wireframe:=True;
       if NFi(1,st1)='snd_freq' then snd_freq:=StrToInt(Nfi(2,St1))
       if NFi(1,st1)='vid_bpp' then vid_bpp:=StrToInt(Nfi(2,St1))
       if NFi(1,st1)='vid_mode_x' then vid_mode_x:=StrToInt(Nfi(2,St1))
       if NFi(1,st1)='vid_mode_y' then vid_mode_y:=StrToInt(Nfi(2,St1))
 
    end;
Close(F1);
end;
end;




Procedure WriteMyconf;
var St1:string;
begin
With MyConf do
begin
  Assign(F1,'myconf.cfg');Rewrite(F1);
  if wireframe then  WriteLn(F1,'wireframe Yes') else WriteLn(F1,'wireframe No');
  WriteLn(F1,'snd_freq   '+IntToStr(snd_freq));
  WriteLn(F1,'vid_bpp   '+IntToStr(vid_bpp));
  WriteLn(F1,'vid_mode_x   '+IntToStr(vid_mode_x));
  WriteLn(F1,'vid_mode_y   '+IntToStr(vid_mode_y));
  Close(F1);
end;
end;


Пояснение: Function NFi(index:integer;StrInp:string):String;
Возращает слово под номером index из строки StrInp ( независимо от количества пробелов между словами)

Если надо считывать например путь к файлу(он может содержать пробелы ,то вместо NFi(2,'mypath') нужно считывать функцией
NFe(2,'mypath')

IMHO самый простой способ для работы с INI файлами ,без использования юнита IniFiles.

p.s Возможны ошибки-компилировать не пробовал

Это сообщение отредактировал(а) SlaUr - 4.3.2004, 12:25
PM MAIL   Вверх
z-END
Дата 4.3.2004, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Так нужно-то что, прочесть / изминить уже имеющийся конфиг?
если так, и ктомуже известны все возможные ключи=значения конфига, то можно через константы делать


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Pakshin A. S.
Дата 4.3.2004, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



А повыпендриваться с нетипизированными файлами никто не хочет, вещь прикольная biggrin.gif
PM   Вверх
remax
Дата 4.3.2004, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: 1
Всего: 5



Цитата(Pakshin @ 4.3.2004, 17:29)
А повыпендриваться с нетипизированными файлами никто не хочет, вещь прикольная biggrin.gif

А что прикольного - ну чуть быстрее операции чтения/запись, так на таких маленьких файлах разницы не почувствовать- доли секунды все-таки. tounge.gif tounge.gif
Проблем чуть поболее, но ничего особенного - работаем только не с набором строк, а с массивом байт (или char). Соответственно, при обработке используем не строковые функции, а операции с массивами.

P.S. С помощью нетипизированного типа файлов вполне можно общаться и с обычными текстовыми, не забывая что #13#10 обозначают перевод строки. biggrin.gif biggrin.gif

Это сообщение отредактировал(а) remax - 4.3.2004, 20:45


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
Fantasist
Дата 4.3.2004, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Что-то выпендрежа не догоняю. Такие задачи решаются либо IniFile'aми, либо (что считается более продвинутым) работой с реестром (TRegistry). В некоторых случаях TStream (TFileStream, в частности) - запись и считывание в бинарном виде. Но хранить настройки в бинарном виде вряд ли хороший подход.

[offtopic]
remax, от твоей собачки я просто балдею smile.gif.
[/offtopic]


--------------------
Волны гасят ветер...
PM MAIL   Вверх
remax
Дата 4.3.2004, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: 1
Всего: 5



Цитата(Sniper @ 3.3.2004, 19:27)
У всех игрушек конфиги сделаны по такому принципу
Quake III
CS
DOOM III
S.T.A.L.K.E.R.

В течении 5 минут было проведено экспресс исследование имеющихся в офисе игр:

Используют INI файлы:
LOTR The Return of the King
Heroes of Might and Magic™ IV
Rig&Roll

Использует CFG файлы:
Call of Duty

Использует свой формат файла конфигурации:
Broodwar
Cossacs

Использует INI и типа CFG файлы:
The Sims

Вероятно, все они в той или иной мере используют реестр. По крайней мере Windows игрушки типа Сапера именно в реестр пихают всю информацию.

Так что это спорный вопрос, какой формат для хранения настроек использует "большинство".

P.S. Результаты поиска по расширению на отдельно взятом компе (два виндовс, делфи, офис, игрушки):

INI: 310 файлов
CFG:140 файлов
CNF:18 файлов









--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
SlaUr
Дата 5.3.2004, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Если не хотите чтобы рядовые пользователи изменяли параметры настройки в ручную (а только из программы) - использовать cfg -файлы ,иначе - ini (Дополнильная возможность тонкой настройки программы) .

PM MAIL   Вверх
remax
Дата 5.3.2004, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: 1
Всего: 5



Вручную можно править все!

INI и CFG одинаково легко, и намного легче чем бинарные файлы!





--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
SlaUr
Дата 5.3.2004, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



remaxcfg я имел ввиду типизированные файлы и как его править без hex-редактора ?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.