Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.08;
Скачать: CL | DM;

Вниз

Как считать большой файл???   Найти похожие ветки 

 
Art ©   (2001-12-14 13:09) [0]

Мне надо считать большой файл полностью!!!


 
softland ©   (2001-12-14 13:15) [1]

Что, файл значительно больше объема RAM?


 
Vitaly ©   (2001-12-14 13:19) [2]

И что?


 
Art ©   (2001-12-14 13:20) [3]

Да нет больше 255 байт ,а в обычную строку тока столько и помещается!!!


 
MBo ©   (2001-12-14 13:37) [4]

Конкретизируй вопрос. Что за файл?
В Delphi string=ansistring до 4 Мег (если не стоит {$H-})


 
Art ©   (2001-12-14 14:06) [5]

Ну есть файл размер может доходить до 100кб мне надо его считать весь!!


 
gek   (2001-12-14 14:08) [6]

>> Art
Я что-то не понял куда считывать-то?
100 kb это ерунда


 
NickBat ©   (2001-12-14 14:10) [7]

Куда считать, то? И как ты считываешь?


 
Dimka Maslov ©   (2001-12-14 14:11) [8]

Выделяешь в памяти буфер и считываешь в него информацию. Никаких проблем нет.


 
MBo ©   (2001-12-14 14:11) [9]

yet another Конкретизируй вопрос
если у тебя текстовый файл, который надо читать в одну строку, то так и делай- например, FileStream
Или Stringlist.loadfromfile подойдет?


 
Polevi ©   (2001-12-14 16:02) [10]

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;


 
DK ©   (2001-12-15 03:58) [11]

Если файл текстовый, то можно очень просто сделать так:
1. создаёшь TStringList
2. затем его LoadFromFile
3. считает всё :)


 
Anatoly Podgoretsky ©   (2001-12-15 12:11) [12]

MBo © (14.12.01 13:37)
Length(S) = INTEGER

DK © (15.12.01 03:58)
Подождем когда нормально задаст вопрос, что бы его можно было понять, ну если не дождем, то значит оно не нужно.


 
Art ©   (2001-12-15 17:34) [13]

Задаю вопрос нормально: Задача Считать файл в переменную (полностью,весь файл),файл представляет из себя -обычный текстовый файл ,размер файла может быть и больше 4 мегов.(Теперь нормально???)


 
Anatoly Podgoretsky ©   (2001-12-15 18:18) [14]

BlockRead(F,S,N) это один из множества методов


 
DK ©   (2001-12-16 02:11) [15]

Ну я и говорю: DK © (15.12.01 03:58)
Сам лично загружал 16 мегов (и это не предел).
Шустро загружает и легко потом работать со строками.



Страницы: 1 вся ветка

Текущий архив: 2002.01.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-22253
Yakudza
2001-12-17 14:34
2002.01.08
Как в Паскале вычислить факториал ?


4-22486
Pantero
2001-11-03 23:59
2002.01.08
Handle


3-21976
Termik
2001-12-06 11:47
2002.01.08
Хранимые процедуры, динамические статементы


3-21912
Сергей Н.
2001-12-04 06:23
2002.01.08
Обработка даты из IB в Delphi и обратно


1-22215
VovaKomarov
2001-12-16 13:36
2002.01.08
обновление клиента