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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с INI файлами 
:(
    Опции темы
Lonley
Дата 23.6.2004, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

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



Здравствуйте smile.gif

Код

 Ini   : TIniFile;
.....

  INI.ReadSections(....);

в частности интересует как работает процедура ReadSection или ReadSections
для чего они нужны sad.gif если можно то с примером
---------------------

и существует ли возможность считать НАЗВАНИЕ ключей, узнать количество незная ИХ

Это сообщение отредактировал(а) Lonley - 23.6.2004, 23:06


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
NiJazz
Дата 23.6.2004, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Lonley
Кажется, встроенную справку в Delphi еще никто не отменял. smile.gif

procedure ReadSection (const Section: String; Strings: TStrings); override;
Считывает названия ключей из определенной секции INI-файла в список строк Strings.

procedure ReadSections(Strings: TStrings); override;
Считывает названия ключей из всех секций INI-файла в список строк Strings.

Вот пример из справки:
Код
uses IniFiles;
procedure TForm1.FormActivate(Sender: TObject);

var
 AppIni: TIniFile;
begin
 AppIni := TIniFile.Create('WIN.INI');
 AppIni.ReadSections(ListBox1.Items);
 AppIni.ReadSection('Ports',Listbox2.Items);
 AppIni.ReadSectionValues('Ports',ListBox3.Items);
 AppIni.Free;
end;



PM MAIL   Вверх
Lonley
Дата 24.6.2004, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

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



NiJazz СПАСИБО
впредь буду смотреть smile.gif
--------------------------------------
Неполучается использовать переменную класса TStrings
у нее должны быть свойства Names и Values как раз для работы с ИНИШКАМИ
, но не получается что ли ее инициализировать
Код

Var
  SKP  : TSes_Key_Par;
  SPar : TStrings;
begin
{}
  Ini  := TIniFile.Create('c:\wert.ini');
  SPar := TStrings.Create;
  SPar.Capacity := 20;
  Ini.ReadSection('w1',SPar);  

выдает ошибку ABstract ERRROR sad.gif что еще нужно не пойму

Это сообщение отредактировал(а) Lonley - 24.6.2004, 00:50


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
stab
Дата 24.6.2004, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Lonley, используй TStringList.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Lonley
Дата 24.6.2004, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

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



СПАСИБО ВСЕМ Я УЖЕ пронял только почему в книгах не пишут что этот класс не для работы


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
Albinos_x
Дата 24.6.2004, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



cully был прав

Это сообщение отредактировал(а) Albinos_x - 24.6.2004, 01:50


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Medved
Дата 24.6.2004, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Прежде чем работать с экземпляром объекта TStrings, надо устанавливить его размер с помощью функии SetLength.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Lonley
Дата 24.6.2004, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

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



Цитата(Pegas @ 24.6.2004, 05:36)
Прежде чем работать с экземпляром объекта TStrings, надо устанавливить его размер с помощью функии SetLength.

это получается установка размера массива точно также как в динамических массивах
Я прав thumbs-up.gif


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
Lonley
Дата 24.6.2004, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

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



Pegas

У меня куча книг, но там сказано только про динамические массивы а установка функцией
SetLength переменной класса TStrings не удается из-за несовместимости типов
Код

Var
  //SKP  : TSes_Key_Par;
  SPar  : TStringList;
  gg    : Integer;
----------------------------
  SPr2  : TStrings;
----------------------------
begin
{}
 SetLength (SPr2,....) - выдает ошибку

пожалуйста подскажите как сделать правильно


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
stab
Дата 24.6.2004, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



через TStringList...

Код

uses IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
var
 ini: TIniFile;
 strs: TStringList;
 i: Integer;
begin
 ini := TIniFile.Create('c:\test.ini');
 strs := TStringList.Create;
 ini.ReadSection('section name', strs);
 for i := 0 to strs.Count - 1 do
   ShowMessage(strs[i]);
 strs.Free;
 ini.Free;
end;



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Lonley
Дата 24.6.2004, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

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



Цитата(cully @ 24.6.2004, 16:07)
через TStringList...

Код

uses IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
var
 ini: TIniFile;
 strs: TStringList;
 i: Integer;
begin
 ini := TIniFile.Create('c:\test.ini');
 strs := TStringList.Create;
 ini.ReadSection('section name', strs);
 for i := 0 to strs.Count - 1 do
   ShowMessage(strs[i]);
 strs.Free;
 ini.Free;
end;


Гм.... но это я сделал как только мне сказали про StringList, но Pegas cазал
Цитата

Прежде чем работать с экземпляром объекта TStrings, надо устанавливить его размер с помощью функии SetLength.

так сначит всетаки можно butbut.gif

Это сообщение отредактировал(а) Lonley - 24.6.2004, 21:59


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
StayAtHome
Дата 25.6.2004, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


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

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



Цитата
так сначит всетаки можно

НЕТ! IMHO, Pegas ошибся. TStrings -- абстрактный класс, который невозможно напрямую создавать. Исользуй только TStringList. Хотя, можно попробовать так:
Код

var
 Strings: TStrings;
.....
Strings:=TStringList.Create;



Такой финт может потребоваться для обратной совместимости с родительскими свойствами, но обычно -- не требуется.

Если я в чем-то не прав, -- пишите.
PM MAIL WWW ICQ YIM   Вверх
Lonley
Дата 25.6.2004, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

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



Всем спасибо.... thumbs-up.gif


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
Medved
Дата 25.6.2004, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата(StayAtHome @ 25.6.2004, 03:38)
Цитата
так сначит всетаки можно

НЕТ! IMHO, Pegas ошибся. TStrings -- абстрактный класс, который невозможно напрямую создавать. Исользуй только TStringList.

Если я не ошибаюсь, с ним можно работать (по крайней мере в 5-ке я с ним работал) Только прежде необходимо задать его размерность. Если честно, то я забыл, как я это делал.

А вообще, согласен, необходимо использовать TStringList.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
_hunter
Дата 25.6.2004, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



может после 5-й компонент поменялся, но это дейсвительно абстрактный класс


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
RA
Дата 26.6.2004, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

Репутация: 14
Всего: 115



Вообще есть очень хороший компонент для работы с ini, замена стандартному IniFiles (Работать с ним также);




Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  FD.rar
PM   Вверх
StayAtHome
Дата 27.6.2004, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


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

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



RAdmin
А стоит ли для такой небольшой задачи, как работа с ини файлами юзать еще один сторонний компонент? ИМХО, возможностей TIniFile, а лучше TMemIniFile должно хватать в большинстве случаев. А не хватает -- дык наследование еще никто не отменял wink.gif
PM MAIL WWW ICQ YIM   Вверх
RA
Дата 27.6.2004, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

Репутация: 14
Всего: 115



Цитата(StayAtHome @ 26.6.2004, 22:51)
RAdmin
А стоит ли для такой небольшой задачи, как работа с ини файлами юзать еще один сторонний компонент? ИМХО, возможностей TIniFile, а лучше TMemIniFile должно хватать в большинстве случаев. А не хватает -- дык наследование еще никто не отменял wink.gif

Ну незнаю , помойму этот компонент очень сильно упрощает жизнь.
сам компонент, ничё супер сложного, но зато время экономит

Вот это новые процедуры:
Код


- function ReadData(): Integer;
- function ReadStream(): Integer;
- function ReadDouble(): Double;
- function ReadDateTime(): TDateTime;
- procedure ReadStrings(Section, Ident: string; List: TStrings);
- procedure ReadFont(Section, Ident: string; Font: TFont);
- function WriteData(): Integer;
- function WriteStream(): Integer;
- procedure WriteDouble();
- procedure WriteDateTime();
- procedure WriteStrings();
- procedure WriteFont();



Все данные записанные в INI шифруются (Если порыться в сорсах компонента то можно это отменить)

Размер ини файла неограничен стандартом в 64kb.
PM   Вверх
StayAtHome
Дата 27.6.2004, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Домосед
**


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

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



biggrin.gif
Код
TCustomIniFile = class(TObject)
.......
   function ReadString(const Section, Ident, Default: string): string; virtual; abstract;
   procedure WriteString(const Section, Ident, Value: String); virtual; abstract;
   function ReadInteger(const Section, Ident: string; Default: Longint): Longint; virtual;
   procedure WriteInteger(const Section, Ident: string; Value: Longint); virtual;
   function ReadBool(const Section, Ident: string; Default: Boolean): Boolean; virtual;
   procedure WriteBool(const Section, Ident: string; Value: Boolean); virtual;
   function ReadBinaryStream(const Section, Name: string; Value: TStream): Integer; virtual;
   function ReadDate(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
   function ReadDateTime(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
   function ReadFloat(const Section, Name: string; Default: Double): Double; virtual;
   function ReadTime(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
   procedure WriteBinaryStream(const Section, Name: string; Value: TStream); virtual;
   procedure WriteDate(const Section, Name: string; Value: TDateTime); virtual;
   procedure WriteDateTime(const Section, Name: string; Value: TDateTime); virtual;
   procedure WriteFloat(const Section, Name: string; Value: Double); virtual;
   procedure WriteTime(const Section, Name: string; Value: TDateTime); virtual;
.............
 end;

Это из IniFiles.pas идущего с Delphi wink.gif
Данные не шифруются, но нужно ли это? Хочешь скрыть свои настройки -- пиши в типизированный файл.
TMemIniFile (потомок TCustomIniFile) не имеет ограничения в 64 KB :-)
И ничего стороннего ставить не надо. wink.gif
PM MAIL WWW ICQ YIM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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