Показать сообщение отдельно

  #3350  
Старый 20.04.2009, 19:10
KIR@PRO
Постоянный
Регистрация: 26.12.2007
Сообщений: 353
Провел на форуме:
905389

Репутация: 332
По умолчанию

Цитата:
Сообщение от 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;
удачи...
 
Ответить с цитированием