Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

чтение строки из текстового файла


Dot ©   (2006-02-01 17:30:00) 

Собственно сабж. как через WinApi просто построчно прочитать текстовый файл..
записывать научился

dFile := CreateFile(Pchar('database.txt'), GENERIC_WRITE, 0, nil, CREATE_NEW, 0, 0);
WriteFile(dFile, Buff^, Size, Bytes, nil);
CloseHandle(dFile);

а считывать так и не разобрался с функцией ReadFile.
если точнее все понятно но вот путаюсь в значениях буффера и т.д.


Zeqfreed   (2006-02-01 21:25:00) [1]

Dot   (01.02.06 17:30)
//Ф-ция выводит сообщение содержащее первую строку указанного файла
function ReadFirstLine(filename : String) : Boolean;
var
 dFile, p : Integer;
 buff : Pointer;
 read : Cardinal;
 buf : array[0..1023] of Char; //Объявляем буфер, в который будем производить чтение
 str : String;
begin
 Result := false;
 dFile := CreateFile(PChar(filename), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);

 if (dFile <> INVALID_HANDLE_VALUE) then begin
  Str := '';
  repeat
   ReadFile(dFile, Buf, SizeOf(buf), read, nil);
   Str := Str + Copy(buf, 1, read);
   p := Pos(#13#10, Str);
  until (p > 0) or (SizeOf(buf) <> read); //Если дошли до конца файла или найден признак конца строки, выходим

  ShowMessage(Format('The first line of the file "%s" is the following: '#13#10#13#10'%s', [filename, Str]));
  Result := true;
 end;

 CloseHandle(dFile);
end;


Примерно так можно организовать чтение текстового файла, хотя, конечно, гораздо удобнее использовать для текстовых файлов AssignFile, Append/Rewrite/Reset и Write/Read, WriteLn/ReadLn.


Gero   (2006-02-01 19:11:00) [2]

> так и не разобрался с функцией ReadFile

Что именно непонятно?


Eraser   (2006-02-01 18:26:00) [3]


> Dot   (01.02.06 17:30)

А не проще использовать Readln, всё равно эта ф-я вызовет соответствующую API.


Наверх

Титульная страница Поиск, карта сайта Написать письмо