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

  #1  
Старый 03.09.2007, 14:37
NeXArmAor
Участник форума
Регистрация: 21.04.2007
Сообщений: 289
С нами: 10029911

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

xqwerx , вот код,которого я думаю будет достаточно для проверки:
Код:
invoke BeginUpdateResource,addr File ;Файло ресурсы которого апдейтятся
invoke _lopen,offset FtE,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 lstrlen,sm10
invoke UpdateResource,sm4,RT_RCDATA,1,0,sm10,eax
invoke _lclose,sm1
все sm'мы дворды...
invoke UnmapViewOfFile,sm10
 
Ответить с цитированием

  #2  
Старый 03.09.2007, 14:38
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
С нами: 10531106

Репутация: 1338


По умолчанию

_Great_
Ну да... Если файл открыт с флагом FILE_FLAG_OVERLAPPED,то lpOverlapped для синхронизации! Если флага FILE_FLAG_OVERLAPPED нет, то lpOverlapped - как смещение! (Подобно SetFilePointer)
// Я его обычно для синхронизации юзаю

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

  #3  
Старый 03.09.2007, 14:43
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
С нами: 10531106

Репутация: 1338


По умолчанию

Код HTML:
invoke lstrlen,sm10
Lol -> Вот она и ошибка! Как можно размер файла мерить функций для строк! lstrlen- эта функция перебирает байты и когда находит 0x00 - то значит конец строки и возвращает количество байтов до нуля, это для работы с null-terminated string!

Поэтому у тебя и записываются в ресурсы 4 байта в частности сигнатура DOS заголовка "MZ" это же строка в начале файла и заканчивается она нулевым байтом...
Это можно заметить при просмотре файла в HEX-режиме
Код:
00400000  4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00  MZђ.......яя..
00400010  B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00  ё.......@.......
Говорю GetFileSize тебе в помошь:
Код:
DWORD GetFileSize(
    HANDLE hFile,	// handle of file to get size of
    LPDWORD lpFileSizeHigh 	// address of high-order word for file size
   );
invoke GetFileSize, sm1, 0
теперь в eax размер файла!!!

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

  #4  
Старый 03.09.2007, 14:55
NeXArmAor
Участник форума
Регистрация: 21.04.2007
Сообщений: 289
С нами: 10029911

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

Все решилось..был невнимателен.хаха...дело в том я перепутал лстрлен и гетфайлсайз,у меня там идет запись имен файлов в ресурсы,так вот lstrlen как раз должен был использовать для имен файлов, а использовал для размера файла.
 
Ответить с цитированием

  #5  
Старый 02.10.2007, 22:36
zeppe1in
Постоянный
Регистрация: 12.07.2006
Сообщений: 327
С нами: 10437270

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

invoke recv, hSocket, addr bufer, sizeof bufer, 0

собственно ресивлю хтмл страницу от веб сервера.
как лучше это сделать?
непонятно как быть с памятью
bufer db 1000000000000 dup (?)
так ведь непойдёт)
 
Ответить с цитированием

  #6  
Старый 03.10.2007, 02:43
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
С нами: 10378404

Репутация: 1095


По умолчанию

>> bufer db 1000000000000 dup (?)
>> так ведь непойдёт)

да нормально петабайтная страница как раз поместица.. +))
 
Ответить с цитированием

  #7  
Старый 03.10.2007, 02:47
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
С нами: 11710201

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

VirtualAlloc, VirtualFree....
 
Ответить с цитированием

  #8  
Старый 18.10.2007, 22:40
delay(0)
Участник форума
Регистрация: 22.11.2006
Сообщений: 117
С нами: 10246130

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

Есть книжка, с кучей примеров кода, но во всех автор инклудит свою библиотеку, и использует описаные там процедуры... Нашел на диске следующие файлы:
http://i042.radikal.ru/0710/63/13d76e5e03d8.jpg
---
Как умел раскидал их по директориям, но видно, что плохо умею.

Цитата:
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: C:\masm32\progs\5.asm
C:\masm32\progs\5.asm(3) : fatal error A1000: cannot open file : irvine32.inc
Как грамотно её добавить?
 
Ответить с цитированием

  #9  
Старый 18.10.2007, 23:21
Ky3bMu4
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
С нами: 10140806

Репутация: 932


По умолчанию

Кидай irvine32.inc в C:\\masm32\Include
А потом: include /masm32/include/irvine32.inc
 
Ответить с цитированием

  #10  
Старый 30.10.2007, 19:40
AFoST
Members of Antichat - Level 5
Регистрация: 28.05.2007
Сообщений: 729
С нами: 9976706

Репутация: 1934


По умолчанию

Подскажите удобную среду разработки ассемблерных программ (блокнот не предлагать)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (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.