![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как считать большой файл??? [D5, Win95/98, WinME]
Art © (2001-12-14 13:09:00)Мне надо считать большой файл полностью!!!
DK (2001-12-16 02:11:00) [1]Ну я и говорю: DK © (15.12.01 03:58)
Сам лично загружал 16 мегов (и это не предел).
Шустро загружает и легко потом работать со строками.
Anatoly Podgoretsky (2001-12-15 18:18:00) [2]BlockRead(F,S,N) это один из множества методов
Art (2001-12-15 17:34:00) [3]Задаю вопрос нормально: Задача Считать файл в переменную (полностью,весь файл),файл представляет из себя -обычный текстовый файл ,размер файла может быть и больше 4 мегов.(Теперь нормально???)
Anatoly Podgoretsky (2001-12-15 12:11:00) [4]MBo © (14.12.01 13:37)
Length(S) = INTEGER
DK © (15.12.01 03:58)
Подождем когда нормально задаст вопрос, что бы его можно было понять, ну если не дождем, то значит оно не нужно.
DK (2001-12-15 03:58:00) [5]Если файл текстовый, то можно очень просто сделать так:
1. создаёшь TStringList
2. затем его LoadFromFile
3. считает всё :)
Polevi (2001-12-14 16:02:00) [6]procedure ReadAnyFile(FileName:string);
var
fHandle,fmHandle:THANDLE;
fBuffer:Pointer;
FileSize,FileSizeHigh:Cardinal;
begin
fHandle:=CreateFile(PChar(FileName),GENERIC_READ or GENERIC_WRITE,
0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if fHandle<>INVALID_HANDLE_VALUE then
begin
FileSize:=GetFileSize(fHandle,@FileSizeHigh);
if FileSizeHigh=0 then
begin
fmHandle:=CreateFileMapping(fHandle,nil,PAGE_READWRITE,0,0,nil);
if (fmHandle<>0) and (GetLastError<>ERROR_ALREADY_EXISTS) then
begin
fBuffer:=MapViewOfFile(fmHandle,FILE_MAP_WRITE,0,0,0);
if fBuffer<>nil then
begin
//здесь работает с файлом, как с областью памяти по адресу fBuffer
end;
CloseHandle(fmHandle);
end;
end;
CloseHandle(fHandle);
end;
end;
Dimka Maslov (2001-12-14 14:11:00) [7]Выделяешь в памяти буфер и считываешь в него информацию. Никаких проблем нет.
MBo (2001-12-14 14:11:00) [8]yet another Конкретизируй вопрос
если у тебя текстовый файл, который надо читать в одну строку, то так и делай- например, FileStream
Или Stringlist.loadfromfile подойдет?
NickBat (2001-12-14 14:10:00) [9]Куда считать, то? И как ты считываешь?
gek (2001-12-14 14:08:00) [10]>> Art
Я что-то не понял куда считывать-то?
100 kb это ерунда
Art (2001-12-14 14:06:00) [11]Ну есть файл размер может доходить до 100кб мне надо его считать весь!!
MBo (2001-12-14 13:37:00) [12]Конкретизируй вопрос. Что за файл?
В Delphi string=ansistring до 4 Мег (если не стоит {$H-})
Art (2001-12-14 13:20:00) [13]Да нет больше 255 байт ,а в обычную строку тока столько и помещается!!!
Vitaly (2001-12-14 13:19:00) [14]И что?
softland (2001-12-14 13:15:00) [15]Что, файл значительно больше объема RAM?