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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2007, 00:12   #1
DartMrakkk
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 40
По умолчанию Работа с текстовыми файлами

Мне нужно чтобы в ComboBox добавлялись названия файлов из определенной директории, причем только файлы с определенным расширением (Например *.dat). Также напишите пож-та код чтения определенной строки из текстового файла. Заранее благодарен...
Доступ - Бог
ICQ: 939-115
DartMrakkk вне форума Ответить с цитированием
Старый 14.07.2007, 10:11   #2
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Чтение строки из файла:
Код:
var
 f: TextFile;
 buffer: string;
 i: integer;
...
AssignFile(f,'1.dat');
for i:=1 to n do Readln(f,buffer); 
//n - номер строки, после выполнения 
//цикла buffer будет содержать нужную строку
CloseFile(f);
По поводу списка:
Код:
var
  sr: TSearchRec;
  res: integer;
...
 SetCurrentDir('E:\1\12\1'); //меняем текущую директорию на нужную нам
 res:=FindFirst('*.dat',faAnyFile,sr); //запускаем поиск
 if res=0 then
 begin
  ComboBox1.Items.Add(sr.Name);
  while FindNext(sr)=0 do //пока есть файлы не найденные нами
   ComboBox1.Items.Add(sr.Name);
 end;
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 14.07.2007, 10:29   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

1.
Код:
procedure ListFileDir(Path: string; aCombobox: TCombobox);
 var
   SR: TSearchRec;
 begin
   if FindFirst(Path + '*.dat', faAnyFile, SR) = 0 then
   begin
     repeat
       if (SR.Attr <> faDirectory) then
       begin
         aCombobox.items.Add(SR.Name);
       end;
     until FindNext(SR) <> 0;
     FindClose(SR);
   end;
 end;

 //Пример использования
procedure TForm1.Button1Click(Sender: TObject);
begin
ListFileDir('C:\WINDOWS\', Combobox1);
end;


2. А здесь интересный пример
Код:
function GrabLine(const AFileName: string; ALine: Integer): string;
 var
   fs: TFileStream;
   buf: packed array[0..4095] of Char;
   bufRead: Integer;
   bufPos: PChar;
   lineStart: PChar;
   tmp: string;
 begin
   fs := TFileStream.Create(AFileName, fmOpenRead);
   try
     Dec(ALine);
     bufRead := 0;
     bufPos := nil;
     if ALine = 0 then
     begin
       bufRead := fs.Read(buf, SizeOf(buf));
       if bufRead = 0 then
         raise Exception.Create('Нет такой строки');
       bufPos := buf;
     end else
       while ALine > 0 do
       begin
         bufRead := fs.Read(buf, SizeOf(buf));
         if bufRead = 0 then
           raise Exception.Create('Нет такой строки');
         bufPos := buf;
         while (bufRead > 0) and (ALine > 0) do
         begin
           if bufPos^ = #10 then
             Dec(ALine);
           Inc(bufPos);
           Dec(bufRead);
         end;
       end;
     lineStart := bufPos;
     while (bufRead > 0) and (bufPos^ <> #10) do
     begin
       Inc(bufPos);
       Dec(bufRead);
     end;
     SetString(Result, lineStart, bufPos - lineStart);
     while bufRead = 0 do
     begin
       bufRead := fs.Read(buf, SizeOf(buf));
       lineStart := buf;
       bufPos := buf;
       while (bufRead > 0) and (bufPos^ <> #10) do
       begin
         Inc(bufPos);
         Dec(bufRead);
       end;
       SetString(tmp, lineStart, bufPos - lineStart);
       Result := Result + tmp;
     end;
   finally
     fs.Free;
   end;
 end;

 //Пример использования
procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
s:= 'C:\1.txt';
if fileexists(s) then
//читаем вторую строку
Showmessage(GrabLine(s, 2)) else
Showmessage('Файл не существует');
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.07.2007, 16:52   #4
DartMrakkk
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 40
По умолчанию

Спасибо. Тему считаю закрытой !
Доступ - Бог
ICQ: 939-115
DartMrakkk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовыми файлами (Delphi) Omedus Помощь студентам 6 18.12.2012 00:31
Помогите по работе с текстовыми файлами ЕвгениуS Помощь студентам 9 17.01.2010 15:10
Pascal работа с текстовыми файлами Andrey89 Помощь студентам 3 25.12.2007 19:21
Работа с Текстовыми файлами wwww Общие вопросы Delphi 5 29.10.2007 11:17
Задача с текстовыми файлами SpeedMaster Паскаль, Turbo Pascal, PascalABC.NET 4 02.04.2007 15:43