HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.09.2007, 00:08
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме:
2009677

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

Практика? Учебники по алгебре с 8 по 11, решай задачи с максимальной оптимизацией алгоритма.
 
Ответить с цитированием

  #2  
Старый 03.09.2007, 13:26
NeXArmAor
Участник форума
Регистрация: 21.04.2007
Сообщений: 289
Провел на форуме:
4612647

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

Вопросец есть один...как включить в масме режим чтения бинарных файлов? Нужно,чем раньше будет ответ,тем лучше. Искал везде...в делфях включается режим FileMode:=0 а в асме как?.
 
Ответить с цитированием

  #3  
Старый 03.09.2007, 13:46
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


По умолчанию

NeXArmAor В масме думаю нет понятия бинарное чтение или чтение строк к примеру, т.к. нет библиотек типа MFC и VCL -> поэтому чтение осуществяется с помощью WinAPI функций, в частности:
invoke ReadFile, hFile, addr Buffer, nCount, addr dwTemp, 0
где hFile - хендл файла, из которого читать (получаем после вызова CreateFile)
Buffer - буфер, может быть обьявлен как "Buffer db 1024 dup(?)";
nCount - это число, т.е. сколько байт считать
dwTemp - это переменная, куда будет записано, сколько байт реально считаны было
0 - этот параметр используется для синхронизации потоков ввода\вывода, нам не нужен!
 
Ответить с цитированием

  #4  
Старый 03.09.2007, 14:35
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


По умолчанию

Цитата:
Сообщение от xqwerx  
invoke ReadFile, hFile, addr Buffer, nCount, addr dwTemp, 0
...
0 - этот параметр используется для синхронизации потоков ввода\вывода, нам не нужен!
Не только, еще для чтения не с текущей позиции =\
 
Ответить с цитированием

  #5  
Старый 03.09.2007, 13:58
NeXArmAor
Участник форума
Регистрация: 21.04.2007
Сообщений: 289
Провел на форуме:
4612647

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

xqwerx,Лага не в этом,попробуй записать,ну например архивы, с помощью функции UpdateResource в любой exe файл(именно в ресорсы). Так чисто для примера,с помощью той же ReadFile. Файл запишется,но частично. Т.е первые 4 байта. А мне нужно чтобы писал весь код файла в ресурс. Текстовые пишутся но проблем,а бины не жуются. На делфях нужно было выставлять режим чтения файлов. А как быть тут. В асме не новичок,но здесь не совсем понятно. И если у тебя получится,покажи код.

пример:
=============
здесь идет чтение архива
=============
Запись в ресорсы
invoke BeginUpdateResource,addr Файло
invoke UpdateResource,dw,ResourceName,ResType,0,FileConte nt,SizeOfFileContent
invoke EndUpdateResource,dw

Последний раз редактировалось NeXArmAor; 03.09.2007 в 14:05..
 
Ответить с цитированием

  #6  
Старый 03.09.2007, 14:05
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


По умолчанию

Цитата:
Т.е первые 4 байта
Это уже на что-то должно наводить! Посмотри повнимательнее свой код, может где-то опечатался и передал данные, а не указатель на них или на оборот.

// P.s. Ну а лучше приведи кусок кода с обьявленными переменными, который нужно отладить...

Дабавляю:
Код:
BOOL UpdateResource(
    HANDLE hUpdate,	// update-file handle 
    LPCTSTR lpType,	// address of resource type to update 
    LPCTSTR lpName,	// address of resource name to update  
    WORD wLanguage,	// language identifier of resource 
    LPVOID lpData,	// address of resource data 
    DWORD cbData 	// length of resource data, in bytes 
   );
lpType,lpName, lpData - должны передаваться как указатели т.е. в твоем случае "ADDR ResourceName". Подправь имена передаваемых переменныx и sizeof раздельно...
И ещё ты может при чтение из архива прочел 4 байта и все!

Последний раз редактировалось xqwerx; 03.09.2007 в 14:12..
 
Ответить с цитированием

  #7  
Старый 03.09.2007, 14:11
NeXArmAor
Участник форума
Регистрация: 21.04.2007
Сообщений: 289
Провел на форуме:
4612647

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

Вот допустим пример с мэппингом и его запись в ресы.
Здесь не весь код,весь код слишком большой,а вообще я реализовал джойнер и застрял на данном этапе.
Код:
invoke _lopen,offset File,OF_READ
mov sm1,eax
invoke CreateFileMapping,sm1,NULL,PAGE_READONLY,0,0,NULL
mov sm9,eax
invoke MapViewOfFile,sm9,FILE_MAP_READ,0,0,0
mov sm10,eax
invoke UpdateResource,sm4,addr ResName,addr sm5,0,sm10,eax
invoke _lclose,sm1
invoke UnmapViewOfFile,sm10
Где sm1,sm9,sm10,sm4,sm5 являются двордами

Последний раз редактировалось NeXArmAor; 03.09.2007 в 14:17..
 
Ответить с цитированием

  #8  
Старый 03.09.2007, 14:18
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


По умолчанию

Код:
invoke UpdateResource,sm4,addr ResName,addr sm5,0,sm10,eax
Шестой параметр -> "DWORD cbData // length of resource data, in bytes"
это ты зачем в него ложишь eax - это же у тебя указатель на данные в памяти (фактически на первый байт файла спроецированного в память)!!!
Разберись с этим! GetFileSize тебе в помошь...
 
Ответить с цитированием

  #9  
Старый 03.09.2007, 14:21
NeXArmAor
Участник форума
Регистрация: 21.04.2007
Сообщений: 289
Провел на форуме:
4612647

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

xqwerx, eax исходит от другого параметра,как раз от длины файла. Я не стал в коде его приводить.
 
Ответить с цитированием

  #10  
Старый 03.09.2007, 14:26
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


По умолчанию

NeXArmAor Млин ну а как тебе тогда помочь, если ты не приводишь весь код, а только обрывки на которые ты думаешь, что здесь ошибка! Так очень долго можно играться
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 92 14.05.2010 17:59
ОС с нуля z01b С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 36 03.07.2008 15:30



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.