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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2009, 09:47   #1
Flame_of_Death
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 22
По умолчанию Delphi 7. Работа с файлами

Вот такая задача:
Есть исходный файл формата:
текст
текст
текст
6920000;-1.06;0.00;0.00;0.00;0.00;-1.06;-227.06;0.00
6920000;-1.06;0.00;0.00;0.00;0.00;-1.06;-227.06;0.00
6920000;-1.06;0.00;0.00;0.00;0.00;-1.06;-227.06;0.00
6920000;-1.06;0.00;0.00;0.00;0.00;-1.06;-227.06;0.00
Нужно из этого файла сформировать текстовый файл с разделителями ; формата:
#текст SUMM
#текст
#текст TYPE
6920000;какой то текст,6920000;6920000;227.06;
-------------
Из первого файла из всех строк нужно начать разбор с 3-ей строки, т.е. пропустить текст, взять число из первого столбца (6920000), и из 8-го (-227.06). Из 8-го сделать из отрицательного положительное (если положительное, то сделать отрицательное). В выходной файл нужно вывести первой строкой:
#любой текст SUMM (SUMM - сумма из 8-го столбца с измененными значениями (+/-) )
Вторую строку сформировать как просто
#текст
Третью строку сделать следующим образом, чтобы выводилось:
#текст TYPE (TYPE - значение, выбираемое из ComboBox)
Ниже первым столбиком проставить значения из первого столбца исходного файла(6920000), во второй столбец записать какой то текст, и значение из первого столбца(текст, 6920000). В третий столбец поставить значения из первого столбца исходного файла(6920000), в 4-ый столбец поставить перевернутое число из 8-го столбца исходного файла (-227.06).

Вот как реализовать данный вид программы?
Flame_of_Death вне форума Ответить с цитированием
Старый 09.07.2009, 10:01   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Можно загнать файл в какой-нибудь список - TStringList, TMemo, TStrings, TRichEdit - и там уже выбирать и издеваться над понравившимися строками.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 09.07.2009, 11:07   #3
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

readln ам в помощь! Считываете строку в переменную, а потом делаете с ними чего хотите... Или можно создать вообще массив строк таким образом и работать с индексами:

Код:
if opendialog1.Execute then
begin
assignfile(f,opendialog1.filename);
reset(f);
while not eof(f) do
begin
readln(f,x[i]);
i++;
end;
closefile(f);
end;
аааа, совсем забыл! var f:textfile;

Последний раз редактировалось Stilet; 09.07.2009 в 11:30.
danekne вне форума Ответить с цитированием
Старый 09.07.2009, 12:09   #4
Flame_of_Death
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 22
По умолчанию

А как проверить, что исходный файл имеет именно такой формат:
текст
текст
текст
6920000;-1.06;0.00;0.00;0.00;0.00;-1.06;-227.06;0.00
т.е. первые три строки именно текстовые, а четвертая имеет формат, представленный выше..
Flame_of_Death вне форума Ответить с цитированием
Старый 09.07.2009, 12:18   #5
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

А что вы понимаете под текст? А на счет цифр - if not (x[i] in ['0'..'9','-', char(vk_back)]) then
danekne вне форума Ответить с цитированием
Старый 09.07.2009, 12:42   #6
Flame_of_Death
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 22
По умолчанию

Цитата:
Сообщение от danekne Посмотреть сообщение
if not (x[i] in ['0'..'9','-', char(vk_back)]) then
Вы учитываете разделители между цифрами?

------

Под текстом я имею заголовок текстового файла, представленный в виде трех строк, например, построчно:
1. Файл: file.txt
2. Файл отправлен Васей
3. Файл получен Ваней
4. 6920000;-1.06;0.00;0.00;0.00;0.00;-1.06;-227.06;0.00
......
и т.д. все строки после 4-ой имеют аналогичный формат 4-ой строки.
Flame_of_Death вне форума Ответить с цитированием
Старый 09.07.2009, 14:07   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Возможно в первых 3-х строках не встречаются символы последующих? Скажем ;? Тогда достаточно данный символ там не найти. Способ не точный, но учитывая имеющуюся информацию вполне сойдет.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 09.07.2009, 14:23   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если начиная с четвертой строки идет определенный формат строк
то самое лучшее прочесть эту строку и выделить с нее данные(каждый элемент), если все элементы строки заполненны(например в каждой строке 8 элементов) и строка исходная после извлечения не имеет лишних символов(просто смотря как парсить), то строка наша/верная
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.07.2009, 12:25   #9
Flame_of_Death
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 22
По умолчанию

А можно небольшой пример кода?
Flame_of_Death вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами (Delphi 7) сер4ей Помощь студентам 8 12.11.2011 19:11
Работа с файлами в Delphi 7 NeAlSe Помощь студентам 11 19.11.2010 17:08
Delphi-работа с файлами,каталогами POPOV Помощь студентам 6 30.11.2007 15:12