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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2012, 20:08   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
Смех Чтение типизированного строкового файла

Доброго времени суток!

Имеется строковой файл:
Код:
#Путь к файлу
#Название
#Описание
<Разделитель, пустая строка>
#Путь к файлу
#Название
#Описание
<Разделитель, пустая строка>
#Путь к файлу
#Название
#Описание
<Разделитель, пустая строка>
#Путь к файлу
#Название
#Описание
<Разделитель, пустая строка>
Как его прочитать?
Тип record не предлагать, там низя строки больше 255 знаков читать.
Хотя может есть что-то чего я не знаю.



Пробовал так:
Код:

type
  TYtFileRec = record
    FilePath: string[255];
    Title: string[255];
    Desc: string[255];
    Empty: string[4];
  end;

.....

LoadFromFile(aFile: string);
var
  fFile:File of TYtFileRec;
  Rec: TYtFileRec;
begin
  if not FileExists(aFile) then
    Exit;
  AssignFile(fFile, aFile);
  try
    Reset(fFile);
    while not Eof(fFile) do
    begin
      ZeroMemory(@Rec, SizeOf(Rec));
      BlockRead(fFile, Rec, SizeOf(Rec));
      AddRec(Rec);
    end;
  finally
    CloseFile(fFile);
  end;
end;
Как решить проблему без гемороя?
Человек_Борща вне форума Ответить с цитированием
Старый 03.09.2012, 20:15   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

TStringList.LoadFromFile
eval вне форума Ответить с цитированием
Старый 03.09.2012, 20:19   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А любым из способов, читающим текстовые строки разве геморойно? К типизированным файлам отношения не имеет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.09.2012, 20:19   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

руками его читать, чтож еще то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.09.2012, 20:19   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Меня посещала такая мысль. Может есть выход проще?
По сути файл явл. типизированым.
Если какая-то строка отсутствует то она будет пустой но структура будет не нарушена:
Код:
#Путь к файлу
#Название
#Описание
<Разделитель, пустая строка>
#Путь к файлу
#Название
#<пустая строка>
<Разделитель, пустая строка>
#Путь к файлу
#<пустая строка>
#Описание
<Разделитель, пустая строка>
#Путь к файлу
#<пустая строка>
#<пустая строка>
<Разделитель, пустая строка>
Если StringList'ом то как?
чтение по блокам, ровно по четыре строки нужно. Или по три строки не учитывая разделитель.

так?
Код:
var ts:TStringList;

  ts:=TstringList.Create;
  for i:=0 to ts.Count -1 do
  begin
   If i+4 < ts.Count -1 then
   begin
    aRec.File:=ts.strings[i];
    aRec.Title:=ts.strings[i+1];
    aRec.Dest:=ts.strings[i+2];
    aRec.Empty:=ts.strings[i+3];
   end;
  end;

Последний раз редактировалось Человек_Борща; 03.09.2012 в 20:27.
Человек_Борща вне форума Ответить с цитированием
Старый 03.09.2012, 20:24   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

StringList
основной цикл от 1 до Count div 4
внутренний цикл от 1 до 4
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.09.2012, 20:29   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

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

Цитата:
Если StringList'ом то как?
пока не конец или не <Разделитель, пустая строка>
что-то делаем ...
eval вне форума Ответить с цитированием
Старый 03.09.2012, 21:25   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Аватар, нет, не понимаю. Можно на словах рассказать в чем идея-фикс вашей задумки?

eval, файл заказчика.
Переделать нельзя.
Человек_Борща вне форума Ответить с цитированием
Старый 03.09.2012, 21:29   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

типизированный файл не является, в Делфи типизированный файл это файл размер записей которого(в байтах) одинаков.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.09.2012, 21:53   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Можно на словах рассказать в чем идея-фикс вашей задумки?
Файл состоит из Count div 4 одинаково устроенных групп записей. Вот и основной цикл. Внутри него или 4 чтения, или чтение строки в цикле 4 раза. Выбирайте как удобней. Все. Да, Count - кол-во записей в файле
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка типизированного файла microlab Паскаль, Turbo Pascal, PascalABC.NET 3 20.05.2012 17:36
чтение из типизированного файла kyop Паскаль, Turbo Pascal, PascalABC.NET 9 13.07.2011 17:32
Чтение из типизированного файла с последней записи и до первой vmilyoshin Помощь студентам 7 28.04.2010 15:34
создание типизированного файла Siluet Общие вопросы Delphi 10 26.09.2009 12:47