Сообщение от
kRa$I-I
to Hellsp@wn: Я конечно не очень дружу c asm, но тут мне кажется маленько не то...
У меня это так :
// Открываем файл на чтение
hFile := CreateFile( MyFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
//Теперль нужно прочитать с определенного место
SetFilePointer(hFile, Хз скоко байт пробустить, FILE_BEGIN); // от начала файла
// Мне нужно сдвинуть указатель на определенную метку файла с дискриптором hFile.... а не прыгнуть jmp в моей программе...
Код:
function SetFilePointer(
hFile: THandle;
lDistanceToMove: Longint;
lpDistanceToMoveHigh: Pointer;
dwMoveMethod: DWORD
): DWORD; stdcall;
Первый параметр - указатель на открытый файл. Второй параметр определяет количество байт, на которые надо передвинуться. Третий параметр я ХЗ для чего. Последний параметр - это флаг определяющий откуда надо начинать двигаться:
FILE_BEGIN - Передвигаться от начала файла к концу.
FILE_CURRENT - Передвинуться начиная от текущей позиции к концу.
FILE_END - Передвигаться от конца файла к началу.
Функция с случае успеха вернёт младший байт установленной позиции.
узнать текущую позицию в файле можно так:
SetFilePointer(hFile,0, 0, FILE_CURRENT);
вот то что тебе надо:
Код:
var hfile:cardinal;
begin
hFile := CreateFile('C:\myfile.txt', GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
showmessage(inttostr(SetFilePointer(hFile,5, 0, FILE_BEGIN))); //сдивигаем текушую позицию в файле на 5 и выводим её в сообщении
showmessage(inttostr(SetFilePointer(hFile,0, 0, FILE_CURRENT))); //узнаем текущую позицию файла и видим что предыдущая операция выполнила свое дело
я так понял у тебя не получалось потому что забыл про
lpDistanceToMoveHigh: Pointer;

удачи...