Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2015, 16:32   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
метод seek вызывает винапишный FileSeek, который 32-битный. Что еще тут можно добавить. Int64 в Integer ведь не засунешь.
Дельфийский FileSeek.
Винапишный отлично тянет 64 бита. правда в две части.

там вроде можно же получать хендл от TFileStream?
тогда можете написать над ним обертку с Seek64, Position64, а поможет в этом АПИшная SetFilePointer
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.12.2015, 16:32   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а с фига я-то не внимательный?
Потому что до твоего поста я и так залез в генофонд. Причем именно так, как ты описал
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2015, 17:06   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не ссорьтесь, вы в разные места залезли.
и судя по всему в разных версиях...
Stilet, полностью Seek можно с вашей версии? у ТС она старее видимо, там есть лимит на 31 бит.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.12.2015, 17:25   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Stilet, полностью Seek можно с вашей версии?
Йеххх...
Можете мну смело записывать в засланцы-провокаторы.
Это Лазарус.
Код:
function THandleStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;

begin
  Result:=FileSeek(FHandle,Offset,ord(Origin));
end;
И
Код:
Function FileSeek (Handle : THandle; FOffset: Int64; Origin: Longint) : Int64;
var
  rslt: Int64Rec;
begin
  rslt := Int64Rec(FOffset);
  rslt.lo := SetFilePointer(Handle, rslt.lo, @rslt.hi, Origin);
  if (rslt.lo = $FFFFFFFF) and (GetLastError <> 0) then
    rslt.hi := $FFFFFFFF;
  Result := Int64(rslt);
end;
Так что я в данном случае нафлудил на целый горчичник
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2015, 18:40   #15
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в Лазаре может поправлено.
а вот в Делфи хз.
говорят там FileSeek Integer принимает.

но в принципе я думаю ТС это полезно, если хочет свое дополнить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.12.2015, 20:59   #16
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Вот Delphi 10 Seatle:
Код:
function THandleStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
begin
  Result := FileSeek(FHandle, Offset, Ord(Origin));
end;
и

Код:
function FileSeek(Handle: THandle; const Offset: Int64; Origin: Integer): Int64;
{$IFDEF MSWINDOWS}
begin
  Result := Offset;
  Int64Rec(Result).Lo := SetFilePointer(Handle, Int64Rec(Result).Lo,
    @Int64Rec(Result).Hi, Origin);
  if (Int64Rec(Result).Lo = $FFFFFFFF) and (GetLastError <> 0) then
    Int64Rec(Result).Hi := $FFFFFFFF;
end;
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
begin
{$IFDEF ANDROID}
  Result := lseek64(Handle, Offset, Origin);
{$ELSE !ANDROID}
  Result := lseek(Handle, Offset, Origin);
{$ENDIF ANDROID}
end;
{$ENDIF POSIX}
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как прочитать 7 первых байт файла ? Konstantin_ua Общие вопросы Delphi 2 21.01.2014 17:40
Прочитать из первого файла и записать во второй символ (QBasic) ulika Помощь студентам 1 28.12.2013 11:49
Прочитать из файла числа, отсортировать их по возрастанию, результат записать в новый файл. lika1129970 Паскаль, Turbo Pascal, PascalABC.NET 7 02.04.2013 13:45
Прочитать из файла и записать в функцию Ilya_L Общие вопросы Delphi 3 27.10.2010 15:48
как прочитать из файла имя, фамилию разделенные пробелами и записать их в массив парами Rom@shka Общие вопросы C/C++ 2 13.12.2008 16:40