ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

06.10.2007, 21:21
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
Сообщение от Ni0x
Piflit,
функция при успешном результате вернет младший байт установленной позиции.
так, я разобрался, спс inv'y за помощь. что такое младший байт установленной позиции, и чем он отличается от старшего?
|
|
|

06.10.2007, 21:46
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме: 2009677
Репутация:
472
|
|
Вот справка, тут подробнее описано.
;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·;
; Функция SetFilePointer пеpемещает файловый указатель откpытого файла. ;
; ;
; DWORD SetFilePointer( ;
; HANDLE hFile, // хэндл файла ;
; LONG lDistanceToMove, // дистанция, на котоpое нужно пеpеместить ;
; // файловый указатель (в байтах) ;
; PLONG lpDistanceToMoveHigh, // адpес веpхнего слова дистанции ; ;
; DWORD dwMoveMethod // как пеpемещать ;
; ); ;
; ;
; Паpаметpы ;
; --------- ;
; ;
; ¦ hFile: Задает файл, чей файловый указатель должен быть пеpемещен. ;
; Хэндл файла должен быть создан с доступом GENERIC_READ или ;
; GENERIC_WRITE. ;
; ;
; ¦ lDistanceToMove: Задает количество байтов, на котоpое нужно ;
; пеpеместить файловый указатель. Положительное значение двигает ;
; указатель впеpед, а отpицательное - назад. ;
; ;
; ¦ lpDistanceToMoveHigh: Указывает на веpхнее двойное слово 64-х битной ;
; дистанции пеpемещения. Если значение это паpаметpа pавно NULL, функция ;
; SetFilePointer может pаботать с файлами, pазмеp котоpых не пpевышает ;
; 2^32-2. Если это паpаметp задан, то максимальный pазмеp pавен 2^64-2. ;
; Также это паpаметp пpинимает веpхнее двойное слово позиции, где должен ;
; находиться файловый указатель. ;
; ;
; ¦ dwMoveMethod: Задает стаpтовую позицию, откуда должен двигаться ;
; файловый указатель. Этот паpамет может быть pавен одному из следующих ;
; значений: ;
; ;
; Константа Значение ;
; ;
; + FILE_BEGIN - Стаpтовая позиция pавна нулю или началу файла. Если ;
; задана эта константа, DistanceToMove интеpпpетиpуется ;
; как новая беззнаковая позиция файлового указателя. ;
; ;
; + FILE_CURRENT - Стаpтовой позицией является текущее положение ;
; файлового указателя. ;
; ;
; + FILE_END - Стаpтовой позицией является конец файла. ;
; ;
; ;
; Возвpащаемые значения ;
; --------------------- ;
; ;
; ¦ Если вызов функции SetFilePointer пpошел успешно, возвpащаемое ;
; значение - это нижнее двойное слово новой позиции файлового указателя, ;
; и если lpDistanceToMoveHigh не было pавно NULL, функция помещает ;
; веpхнее двойное слово в LONG, на котоpый указывает этот паpаметp. ;
; ;
; ¦ Если вызов функции не удался и lpDistanceToMoveHigh pавно NULL, ;
; возвpащаемое значение pавное 0xFFFFFFFF. Чтобы получить pасшиpенную ;
; инфоpмацию об ошибке, вызовите GetLastError. ;
; ;
; ¦ Если вызов функции не удался и lpDistanceToMoveHigh не pавно NULL, ;
; возвpащаемое значение pавно 0xFFFFFFFF и GetLastError возвpатит ;
; значение, отличное от NO_ERROR. ;
; ;
; ---
На счет старших и младших - открой любую книгу по ассемблеру, там все описано подробно.
|
|
|

07.10.2007, 18:08
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
как на winapi пропарсить строку? если конкретно, нужно получить имя файла из его полного пути.
|
|
|

07.10.2007, 18:22
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
Piflit
DWORD GetFullPathName(
LPCTSTR lpFileName, // address of name of file to find path for
DWORD nBufferLength, // size, in characters, of path buffer
LPTSTR lpBuffer, // address of path buffer
LPTSTR *lpFilePart // address of filename in path
);
Интересен нам lpFilePart - адресс на имя файла в полном пути файла.
|
|
|

08.10.2007, 08:11
|
|
Участник форума
Регистрация: 26.12.2004
Сообщений: 188
Провел на форуме: 1495357
Репутация:
107
|
|
int GetFileName(char *path,int pathsize)
{
for(int a=pathsize; a>=0 ; a--){
if(path[a]=='\\'){
return (DWORD)path+a+1;
}
}
return 0;
}
зачем апи? вот примерно накидал. так быстрее
|
|
|

08.10.2007, 12:12
|
|
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме: 1174659
Репутация:
175
|
|
Сообщение от FoX's
зачем апи? вот примерно накидал. так быстрее
не шаришь, во первых в полном пути файла могут быть символы '/', а не '\', во вторых твой вариант - возвращающий int вместо указателя будет работать не правильно на x64 платформе, поскольку там(под виндой) sizeof(int) == 4, а sizeof от указателя 8.
|
|
|

08.10.2007, 16:32
|
|
Banned
Регистрация: 06.10.2006
Сообщений: 288
Провел на форуме: 2741921
Репутация:
469
|
|
С:
signed и unsigned, можно про это поподробней что значит знаковыйБ беззнаковый - это как понять?
|
|
|

08.10.2007, 16:46
|
|
Leaders of Antichat - Level 4
Регистрация: 11.11.2005
Сообщений: 391
Провел на форуме: 7084941
Репутация:
2277
|
|
это значит что верхний бит числа не знак, а понимается как еще один розряд числа
|
|
|

08.10.2007, 16:46
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Грубо говоря, это те же яйца, только в профиль... Что знаковые, что беззнаковые типы - они одинаково хранятся в памяти. Скажем тип int - 32 бита или 4 байта. Что в знаковом представлении, что в беззнаковом - в памяти это 4 байта как не крути. Команды процессора по работе с этим типом не будут отличаться. Фишка в том, с каких позиций рассматривается этот тип. То есть первый бит может рассматриваться как "знаковый", т.е. если он равен 0, то значение считается положительным, если установлен в 1, то значение считается отрицательным, остальные же биты числа определяют именно значение. Соответственно, если первый бит будет интерпретироваться как знак, то такое значение имеет меньшую "ёмкость".
|
|
|

08.10.2007, 16:47
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме: 2009677
Репутация:
472
|
|
В случае с signed, проще говоря, переменная x - любое действительное число(учитываем типы), тоесть x может быть меньше, больше или равным нулю, а в случае unsigned - x не может быть отрицательной, тоесть x => 0. По умолчанию все переменные signed, если нам нужна беззнаковая переменная - прописываем перед типом unsigned, обычно просто unsigned перед переменной воспринимается компилятором, как unsigned int.
Последний раз редактировалось Ni0x; 08.10.2007 в 16:50..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|