Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.05.2009, 23:08
Spy82 Spy82 вне форума
Прохожий
 
Регистрация: 10.01.2008
Сообщения: 6
Репутация: 10
По умолчанию срочно хелп

имеется текстовый файл,каждая строка которого содержит следующие данные: книга,автор,количество.Создать новый файл,содержащий только книги автора,фамилия которого вводится с клавы.

задача лёгкая,тему пропустил...кому не трудно помоги плз
Ответить с цитированием
  #2  
Старый 31.05.2009, 10:15
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Как простой вариант (если файл не большой) можно так :

1. Загрузить текстовый файл в List : TStrings.
2. Далее, следует запрос на "Автора".
3. Сканируется List и отбираются только те строки, где есть соотв. "автор".

Для того, чтобы сделать анализ каждой строки - нужно знать формат сроки (что есть разделители).
В некоторых случаях можно использовать эти функции :
http://www.delphisources.ru/forum/sh...6403#post36403
Ответить с цитированием
  #3  
Старый 31.05.2009, 10:47
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Задача действительно легкая если носит чисто академический характер. В реальной жизни обычно все не так просто.
Предположим, что файл выглядит так:
20000 лье под водой;Жюль Верн;500
MS SQL Server 2000 Управление и программирование;Пирогов В.Ю.;100
Технологии Delphi - Разработка приложений для бизнеса;Бобровский С.;120
Последовательность полей задано жестко - Название книги,Автор,Количество
Разделителями полей у нас является символ ;
Исходя из этого можно сделать программу:
Код:
program Project25;

{$APPTYPE CONSOLE}

uses
  SysUtils,StrUtils,Windows;

Var
  SF,DF: TextFile;
  S, Autor: String;
  P: Integer;
begin
 Write('Enter Autor:');
 ReadLn(Autor);
 Autor := UpperCase(Autor);
 AssignFile(SF, 'c:\demo.txt');
 Reset(SF);
 AssignFile(DF, 'c:\demoR.txt');
 Rewrite(DF);
while not Eof(SF)
 do begin
    ReadLn(SF, S);
    P := PosEx(';',S,1)+1;
    if Autor = Copy(S, P, PosEx(';',S,P) - P)
    then WriteLn(DF, Copy(S, 1, P-2));
    end; 
 CloseFile(DF);
 CloseFile(SF);
end.

Замечания: Поскольку это консольное приложение, то оно работает в досовской кодировке следовательно файл тоже должен быть в досовской кодировке.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 31.05.2009 в 10:52.
Ответить с цитированием
  #4  
Старый 31.05.2009, 15:31
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

>Разделителями полей у нас является символ ;

--- Если ситуация жизненная, то может быть применен и SDF-формат.
Тогда можно использовать свойство CommaText у TStrings.
А может использоваться и CSV-формат и SYLK-формат.
А также, LaTeX-формат.
И некоторые другие.
В этом случае PosEx тоже не спасет ...
Ответить с цитированием
  #5  
Старый 31.05.2009, 16:15
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Верно, потому я и пишу что
Цитата:
Задача носит чисто академический характер.
Существует сотни вариантов,когда такой подход не прокатит.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:11.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter