|
#1
|
|||
|
|||
срочно хелп
имеется текстовый файл,каждая строка которого содержит следующие данные: книга,автор,количество.Создать новый файл,содержащий только книги автора,фамилия которого вводится с клавы.
задача лёгкая,тему пропустил...кому не трудно помоги плз |
#2
|
|||
|
|||
Как простой вариант (если файл не большой) можно так :
1. Загрузить текстовый файл в List : TStrings. 2. Далее, следует запрос на "Автора". 3. Сканируется List и отбираются только те строки, где есть соотв. "автор". Для того, чтобы сделать анализ каждой строки - нужно знать формат сроки (что есть разделители). В некоторых случаях можно использовать эти функции : http://www.delphisources.ru/forum/sh...6403#post36403 |
#3
|
||||
|
||||
Задача действительно легкая если носит чисто академический характер. В реальной жизни обычно все не так просто.
Предположим, что файл выглядит так: 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
|
|||
|
|||
>Разделителями полей у нас является символ ;
--- Если ситуация жизненная, то может быть применен и SDF-формат. Тогда можно использовать свойство CommaText у TStrings. А может использоваться и CSV-формат и SYLK-формат. А также, LaTeX-формат. И некоторые другие. В этом случае PosEx тоже не спасет ... |
#5
|
||||
|
||||
Верно, потому я и пишу что
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |