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

 WASM Phorum —› WASM.ASSEMBLER —› адрес строки в структуре WIN32_FIND_DATA

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


Дата: Июл 24, 2004 01:29:54

Здравствуйте все.
Тут проблема с получением адреса строки. В структуре WIN32_FIND_DATA есть поле TCHAR cFileName[ MAX_PATH ]; в нем имя файла, а вот получить адрес начала этой строки, чтобы её можно было скопировать куда-нибудь в буфер - никак не соображу :(
Т.е. имею такое:

LOCAL FindData:WIN32_FIND_DATA
;
;
.if byte ptr FindData.cFileName != '.'
.if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
mov esi, offset FindData
lea eax, [esi.WIN32_FIND_DATA].cFileName
PrintStringByAddr eax
Call ReadFiles
.endif
.endif
;
пишет такую ошибку:error A2098: invalid operand for OFFSET

Если сделать так:
mov esi, FindData
lea eax, [esi.WIN32_FIND_DATA].cFileName
то нестыковка опять же:
error A2022: instruction operands must be the same size

возможно из-за того, что FindData имеет непостоянную длину, зависящую от длины имени файла?
Подскажите что тут не так, как можно объехать эту ситуацию


Дата: Июл 24, 2004 01:43:57

lea eax, FindData
assume eax:ptr WIN32_FIND_DATA
lea esi, [eax].cFileName  ; теперь в esi адрес первого байта строки
assume eax:nothing


Дата: Июл 24, 2004 01:57:08

Или
lea eax, FindData.cFileName


Дата: Июл 24, 2004 02:08:53

Asterix
Спасибо. Щас буду пробовать.


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