![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Stream.Seek \ Stream.Position возвращает ноль.
rioko © (2012-08-02 10:54:00)
FromF := TFileStream.Create(pp + 'UserData\' + BaseName + 'DB.db', fmOpenRead);
Application.ProcessMessages();
try
ToF := TFileStream.Create(DirToRepack + '\' + FileName, fmCreate);
end;
try
FromF.Seek(BeginByte, soFromBeginning);
ShowMessage('Seek(BeginByte \ '+inttostr(FromF.Position) +' \ '+inttostr(BeginByte));
Application.ProcessMessages();
ToF.CopyFrom(FromF, RecFileSize);
finally
ToF.Free;
end;
finally
FromF.Free;
end;
Так вот, все прекрасно работает если файл менее полутора гигабайт, а когда больше то после выполнения Seek при проверке
ShowMessage('Seek(BeginByte \ '+inttostr(FromF.Position) +' \ '+inttostr(BeginByte));
показывает что позиция ноль.
Что делать? Записывается то нормально а вот как прочесть данные и почему сик не работает если там int64 и длины хватает в любом случае?
Palladin (2012-08-04 01:39:00) [1])
function TStream.GetPosition: Int64;
begin
Result := Seek(0, soCurrent);
end;
DVM (2012-08-03 22:47:00) [2]
> rioko (02.08.12 10:54)
> и почему сик не работает если там int64 и длины хватает
> в любом случае?
Работает он, но там есть два перегруженных метода Seek принимающие разные типы второго параметра.
rioko (2012-08-02 19:42:00) [3]Rouse_
Спасибо большое :)
Rouse_ (2012-08-02 18:59:00) [4]Вместо Seek используй свойство Position
Cobalt (2012-08-02 15:36:00) [5]Удалено модератором
Примечание: создание пустых сообщений