![]() |
|
|
#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
|
||||
|
||||
|
Верно, потому я и пишу что
Цитата:
|