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

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

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]

Удалено модератором
Примечание: создание пустых сообщений


Наверх

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