· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.HELHEIM —› Платформенные глюки

. 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Авг 14, 2004 12:50:04

Меня замучили разные гюки и несоответствия в работе моих программ под разными операционными системами. :((((((
В чём их координальные отличия? Чего опасаться? Не портить регистры? Какие? Когда?

И ещё я обнаружил, что когда глючит какая-то апишная функция, последния раз это было записать файл, то вызвав messegebox глюк исчезает - она его проскакивает. В чём тут дело???

Если кто знает, большой ПЛЗ, помогите!


Дата: Авг 14, 2004 14:16:46

В MSDN у функций указываються минимальные требования , начиная с какой ОС их можна использовать .
Остальное всё давно и многократно расписано в форуме . Поиск , поиск и поиск .


Дата: Авг 14, 2004 14:30:37

>В MSDN у функций указываються минимальные требования , начиная с какой ОС их можна использовать .
Ясен пень! Это всё ясно, все функции поддерживаются.
А ссылочки, плз, нельзя?


Дата: Авг 27, 2004 14:01:27


Дата: Авг 30, 2004 19:04:15

valterg

Спасибо, за ссылочку, но я имел ввиду другое: где же это многократно написано на форуме?


Дата: Авг 30, 2004 21:47:44

Avalonec „Не портить регистры? Какие? Когда? “
„ где же это многократно написано на форуме?“

http://wasm.ru/forum/index.php?action=vthread&forum=4&topic=6195
http://wasm.ru/forum/index.php?action=vthread&forum=4&topic=6668

и т.д.


Дата: Авг 31, 2004 10:25:04

bogrus

Спасибо, за ссылки.
То что не портить регистры это я знал, но глюки всё равно обнаруживаются. Я написал макрос invokeapi, который сохраняет все регистры используемые апишными функциями, но глюки не прекратились.

И хочу ещё заметить: я обнаружил, что когда глючит какая-то апишная функция, последния раз это было записать файл, то вызвав messegebox глюк исчезает - она его проскакивает. В чём тут дело???

И причём тут финкции callback'и если я пишу их сам - использую лишь в пределах своей программы?


Дата: Авг 31, 2004 10:46:38

„В чём тут дело??? “

Показывай код (только не на семь страниц) , так ничерта не понятно


Дата: Сен 1, 2004 17:02:44

Вот процедурка:

save_file proc mem:DWORD, len:DWORD, bf_file:DWORD, switch:DWORD
;Загружаем путь файла
;bits or (+)
;(0)0 - ofn bf_file=buffer_way_file==NULL
;(0)1 - bf_file
;(1)0 - delete file, message box
;(1)1 - delete file, без подтверждения

pushad

;;;;;;;;;;;;;;;;;;если здесь запустить MessageBox, то глюк якобы исчезает. И ещё мне интересно будет ли у тебя это глючить? На вин9x не глючило, а вот на хр, кердык.
Если не глючит, то возможно, но, блин, мало вероятно, глюк как бы накапливается.


test switch,bit_0
jnz @@1
.if bf_file==0
invoke GetSaveFileName, ADDR ofn
.else
mov [ofn.lpstrFileTitle],0
invoke copy_str, bf_file, ofn.lpstrFile
invoke GetSaveFileName, ADDR ofn
.endif
CP eax,FALSE,z,@@3
mov bf_file,OF buffer_way_file
@@1:

invoke find_file,bf_file
.if hFindFile!=INVALID_HANDLE_VALUE

test switch,bit_1
jnz @@2

invoke MessageBox,ofn.hWndOwner,ADDR soob_2,ADDR soob_2_1,MB_YESNO+MB_ICONWARNING

CP eax,IDNO,z,@@3
@@2:
invoke DeleteFile,bf_file

.endif

invoke CreateFile,bf_file,\
GENERIC_READ or GENERIC_WRITE ,\
FILE_SHARE_READ or FILE_SHARE_WRITE,\
NULL,CREATE_NEW,FILE_ATTRIBUTE_ARCHIVE,NULL
mov hFileWrite,eax

invoke WriteFile,eax,mem,len,ADDR SizeReadWrite,NULL

invoke CloseHandle,hFileWrite

@@3:
popad
ret
save_file endp


Дата: Сен 1, 2004 23:24:12

Блин , а в чём хоть глюк выражаеться в этой программе ?
И лучше бы дизассемблированный листинг приатачил , чем этот код :) "CP eax,FALSE,z,@@3" - что это ?
Ты пробывал переписать свою программу без этой ерунды , без invoke и без .endif , уверен глюки сами всплывут где надо .


Дата: Сен 2, 2004 03:51:57

bogrus
"CP eax,FALSE,z,@@3" - что это ?
Шутишь? Чего тут непонятного?
cmp eax,FALSE
jz @@3


Avalonec
Почему ты не проверяешь успешность вызова CreateFile, а сразу WriteFile?


Дата: Сен 2, 2004 09:40:43

q_q Да смысл этого CP мне был понятен , а вот как реализован этот макрос я другие в этом коде не видно . Это стандартный макрос масма ?

Avalonec pushad,popad можешь по идее выкинуть из этой ф-ции , если она не должна сохранять тебе eax,ecx,edx .


Дата: Сен 2, 2004 12:15:09

bogrus
как реализован этот макрос
Если автор заявляет, что где-то код работает, то думаю, что проблема не в реализации макроса.

Это стандартный макрос масма ?
Не думаю.


Дата: Сен 2, 2004 14:41:42

bogrus

Да, как правильно предположил q_q, это в сущности
cmp eax,FALSE
jz @@3
, но только есть ещё проверка на 0


Вот он целиковый:
CP MACRO QAX,QBX,J1,M

IF @InStr( 1, <QBX>, <0> ) EQ 1 AND ((@InStr( 1, <J1>, <Z> ) EQ 1) OR (@InStr( 1, <J1>, <NZ> ) EQ 1) OR (@InStr( 1, <J1>, <E> ) EQ 1) OR (@InStr( 1, <J1>, <NE> ) EQ 1))
or QAX,QAX
J&J1 M

ELSEIF @InStr( 1, <QBX>, <0> ) EQ 1 AND ((@InStr( 1, <J1>, <z> ) EQ 1) OR (@InStr( 1, <J1>, <nz> ) EQ 1) OR (@InStr( 1, <J1>, <e> ) EQ 1) OR (@InStr( 1, <J1>, <ne> ) EQ 1))
or QAX,QAX
J&J1 M

ELSE
cmp QAX,QBX
J&J1 M
ENDIF

ENDM


Ты пробывал переписать свою программу без этой ерунды , без invoke и без .endif , уверен глюки сами всплывут где надо .
Уж invoke и .if работают проверено Hatch'ем. :) Я не думаю, что из-за этого глючит, но попробую, проверю.

Это стандартный макрос масма ?
Нет. Я просто, если замечаю, что можно оптимально и просто писать с использованием макроса, то обязательно пишу такие вот макросы.

pushad,popad можешь по идее выкинуть из этой ф-ции , если она не должна сохранять тебе eax,ecx,edx .
Я взял за привычку все более-менее продвинутые функции запускать через pushad и popad. Основная причина такого это то что я не доверяю апишным функциям. :)


q_q
Почему ты не проверяешь успешность вызова CreateFile, а сразу WriteFile?
Потому как это не совсем нужно, но в принципе это нужно, да,спасибо, подправлю. Но это не меняет сути. Такая проверка нужна, чтобы проверить не закрыт ли доступ к файлу, а он не закрыт.


Дата: Сен 2, 2004 14:47:37

bogrus
Блин , а в чём хоть глюк выражаеться в этой программе ?
Выражается в том, что программа начинает работать без этой функции, точнее от неё никакого толку - я имею ввиду в данном случае без записи файла.
Хотя хочу сказать у меня были ещё подобные проблемы - не работали апишные функции. Это было правда при написании большого проекта, так что там я мого сам перемудрить. :) И хотя, не без этого, но врядли она и там глючила по моей причине.

Не уж-то никто и никогда не сталкивлся с не понятными глюками в винде???

. 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043