Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
ВнизВпорос с одного зарубежного форума (copy open file) Найти похожие ветки
← →
Igor_thief (2005-06-26 15:26) [0]Вопрос звучал таким образом: Functions that can copy an open file in its entirety, or stream data from a open file. С первой частью я справился таким образом:
procedure TForm1.Button1Click(Sender: TObject);
var
fs, fsOut: TFileStream;
Buffer: array [1..300] of byte;
c: integer;
begin
if OpenDialog1.Execute then
begin
fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
fsOut := TFileStream.Create(OpenDialog1.FileName + ".out", fmCreate);
try
fs.Seek(0, soFromBeginning);
while fs.Position <> fs.Size do
begin
c := fs.Read(Buffer, 300);
fsOut.Write(Buffer, c);
FillChar(Buffer, 300, 0);
end;
finally
fs.Free;
fsOut.Free;
end;
end;
end;
А что автор имел ввиду во второй части (после запятой)? Объясните пожалуйста (если можно, то с примером).
← →
uny © (2005-06-26 16:00) [1]чуть другая реализация - читает всё кроме *.swp
function File_s(N: string
var
FileHandle: THandle;
MapHandle: THandle;
ViewPointer: pointer;
begin
FileHandle := CreateFile(pChar(N), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0);
if FileHandle <> INVALID_HANDLE_VALUE then try
MapHandle := CreateFileMapping(FileHandle, nil, PAGE_READONLY, 0, 0, nil);
if MapHandle <> 0 then try
ViewPointer := MapViewOfFile(MapHandle, FILE_MAP_READ, 0, 0, 0);
if ViewPointer <> nil then try
{тут действия с файлом через ViewPointer, GetFileSize(FileHandle, nil) его размер}
finally
UnmapViewOfFile(ViewPointer);
end;
finally
CloseHandle(MapHandle);
end;
finally
CloseHandle(FileHandle);
end;
end;
← →
Igor_thief (2005-06-26 16:02) [2]uny © (26.06.05 16:00) [1]
Тоже вариант, но а что по-поводу "or stream data from a open file"?
← →
uny © (2005-06-26 16:04) [3][2] Igor_thief (26.06.05 16:02)
я могу ошибаться, но приведённый пример из модуля расчёта md5 для файлов. файлы могут быть очень большими и в память не поместятся. может этот пример как раз и читает их потоками...
← →
P.N.P. © (2005-06-26 16:16) [4]Дословно вопрос переводится как
Функции, которые могут скопировать открытый файл в своей папке или поточные данные из открытого файла
Как-то странно звучит...
Может имеется ввиду доступ к файлу, уже открытому другим приложением, которое не дает прав для чтения остальным?
← →
Eraser © (2005-06-26 16:28) [5]P.N.P. © (26.06.05 16:16) [4]
имхо здесь stream не существительное, а глагол.
← →
Eraser © (2005-06-26 16:30) [6]оба варината решаются простым созданием TFileStream с параметром fmOpenRead.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c