Int64;
roffs := FStream.Seek(offs, soFromBeginning);
где offs = 2161760945, что больше 2Гб, в результате возвращается -1
используется delphi7, хотя вроде как есть 64 битная версия, но она почему-то работает не совсем так как я ожидаю.
function TStream.Seek(const Offset: Int64; Origin: TSeekOrigin):Int64; virtual; overload;
FStream - это физический TFileStream файл, больше 2 Гб.
До 2Гб работало все хорошо, как теперь выйти из ситуации?
попробуй объявить тип БЕЗзнаковый. что будет?
Стикер
Стикер
на пути к этому, но пока D7
используй TSeekOrigin.soBeginning вместо soFromBeginning
Спасибо огромное, заработало!
а можно где-то почитать в чем разница?
в исходниках 🙂 старый метод со вторым аргументом типа Word, который ты применял использует оффсет Longint function Seek(Offset: Longint; Origin: Word): Longint; overload; virtual; тебе же нужно было использовать новый метод с TSeekOrigin function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; virtual;
Но в чём разница? 🤔
Слона-то я и не заметил, спасибо огромное еще раз!
при этом старый вариант вроде deprecated
неа я выше процитировал декларацию
подстава, конечно)
вру, немного там есть 3ий вариант, я его из SynEdit.Turbopack вычищал function Seek(const Offset: Int64; Origin: Word): Int64; overload; deprecated; inline;
в какой версии? в d12 все варианты без пометок
ок. это уже не особо актуально 👌
Не, не согласен. Я бы понял ещё про d5-7,2007. Если на. XE+... уже хорошо.
Обсуждают сегодня