Форум Кургана и Курганской области и наших друзей

Зима. Форум Кургана и Курганской области и наших друзей
15 Октябрь 2019, 13:43:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение колчества записей в ini файле  (Прочитано 1616 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ZeroLine
Титулярный советник
*****

Карма: 64
Offline Offline

Пол: Мужской
Сообщений: 566

You Must Use Power


Награды
« : 06 Сентябрь 2009, 01:16:00 »

Делаю следующим образом:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  IniFile: TIniFile;
  I: integer;
  Flag: boolean;
  S: string;
begin
  IniFile:=TIniFile.Create('Путь');
  Memo1.Lines.Add('Файл USDownloader.lst подключен');
  i:=0;
  flag:=false;
  while flag=false do
  begin
    S:=IniFile.ReadString('Раздел', 'item'+IntToStr(i),'');
    if S<>'' then
    begin
      Memo1.Lines.Add(S);
      i:=i+1;
    end else
    begin
      flag:=true;
    end;
  end;
  IniFile.Free;
end;
В итоге "I-1" количество записей в ini-файле

Пришлось использовать if then else, т.к. оказалось что чтение из ini-файла несуществующего параметра не вызывает ошибки(. Можно ли оптимизировать процесс?
Записан

Everyone under the sun, Freedom is number one, Sing my song, Somewhere beyond, Better place will soon come
sharpey
BSD'ун
Титулярный советник
*****

Карма: 126
Offline Offline

Пол: Мужской
Сообщений: 686



Награды
« Ответ #1 : 06 Сентябрь 2009, 02:03:07 »

Чем не угодила стандартная процедура ReadLn? Тогда код вполне может быть таким:

procedure TForm1.Button1Click(Sender: TObject);
var
  IniFile: Text;
  I: integer;
  S: string;
begin
  IniFile:= Assign(IniFile, 'USDownloader.lst');
  Memo1.Lines.Add('Файл USDownloader.lst подключен');
  I:=0;
  while not EOF(IniFile) do
  begin
    ReadLn(IniFile, S);
    if S<>'' then
    begin
      Memo1.Lines.Add(S);
      Inc(I);
    end;
  end;
end;
Записан
AGhost
Забанен
Тайный советник
*********

Карма: 600
Offline Offline

у пользователя уже 2 предупреждения
Сообщений: 6890


90027_veteran.gif


Награды
« Ответ #2 : 06 Сентябрь 2009, 02:33:32 »

function GetIniCount(IniFileName, IniSection: string): integer;
var
  IniFile: TIniFile;
  SL: TStringList;
begin
  IniFile:=TIniFile.Create(IniFileName);
  SL:=TStringList.Create;
  try
    IniFile.ReadSection(IniSection,SL);
    Result:=SL.Count;
  finally
    SL.Free;
    IniFile.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  N: integer;
begin
  N:=GetIniCount('Путь','Раздел');
  . . . . . . .
end;
Записан

Прощайте!
ZeroLine
Титулярный советник
*****

Карма: 64
Offline Offline

Пол: Мужской
Сообщений: 566

You Must Use Power


Награды
« Ответ #3 : 06 Сентябрь 2009, 23:22:01 »

Оба варианта хороши, но второй заинтересовал больше. Мне в процессе анализа ini-файла необходимо скпировать все данные из него, а записи имеют формат:

item0
item0_бла
item0_блабла
...
item1
item1_бла
item1_блабла
...и т.д.

Так что я думаю легче использовать тип данных record?
Записан

Everyone under the sun, Freedom is number one, Sing my song, Somewhere beyond, Better place will soon come
AGhost
Забанен
Тайный советник
*********

Карма: 600
Offline Offline

у пользователя уже 2 предупреждения
Сообщений: 6890


90027_veteran.gif


Награды
« Ответ #4 : 07 Сентябрь 2009, 01:35:07 »

Я бы создал класс от TObject, и хранил бы в TObjectList. Или TCollection/TCollectionItem.
Записан

Прощайте!
ZeroLine
Титулярный советник
*****

Карма: 64
Offline Offline

Пол: Мужской
Сообщений: 566

You Must Use Power


Награды
« Ответ #5 : 07 Сентябрь 2009, 15:56:31 »

Я бы создал класс от TObject, и хранил бы в TObjectList. Или TCollection/TCollectionItem.
Почитал в нете, какие-то мутные вещи это все
Записан

Everyone under the sun, Freedom is number one, Sing my song, Somewhere beyond, Better place will soon come
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC
rss | wap
Valid XHTML 1.0! Valid CSS!