
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Сообщ.
#1
,
|
|
|
Тема явно не для начинающих, поэтому прошу помощи.
Вот очень хорошие примеры Поиск строки с использование SCAS Только хотелось бы модифицировать, чтобы данные были во внешнем файле, а это за собою повлечёт функции CreateFile() CloseFile() итп. со многими условностями и особенностями. Кстати, для загрузки строк есть "fscanf from 'MSVCRT.DLL'", хотелось бы тоже примеров. В худшем случае покажите на masm32 примеры, только не на C++ ![]() |
Сообщ.
#2
,
|
|
|
Непонятно, что смущает в использовании CreateFile? Для поиска файл даже не нужно разбивать на строки, все равно каждая строка разделена символами перевода строки и возврата каретки.
|
Сообщ.
#3
,
|
|
|
Нет, ничего не смущает. Это я к слову сказал. Какраз создать файл я могу, а вот дальше затрудняюсь
|
Сообщ.
#4
,
|
|
|
Цитата semiono @ Какраз создать файл я могу, а вот дальше затрудняюсь - GetFileSize, HeapAlloc, ReadFile - поиск - HeapFree, CloseHandle Добавлено PS: Вопросы по фасму или ВинАПИ ? |
Сообщ.
#5
,
|
|
|
![]() ![]() include '%fasm%\win32ax.inc' section '.code' executable start: invoke CreateFile,lpFile,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL mov [hFile],eax invoke SetFilePointer,[hFile],0x7,NULL,NULL invoke WriteFile,[hFile],zz,1,SizeWrite,NULL invoke CloseHandle,[hFile] section '.data' readable zz db a9 section '.data' readable writable hFile dd ? hWnd dd ? SizeWrite dw ? Всё больше ничего я не могу ![]() HeapAlloc - hHeap [in] This handle is returned by the HeapCreate or GetProcessHeap function. ещё и надо хип создавать? Тут http://www.wasm.ru/article.php?article=1001012 вроде бы написано об этом, но всё смешанно с оконными контролами в которые я пока не хочу вникать. Вообще эти уроки с окнами вечно мешаются в суть дела вникать. Цитата - поиск Видимо вопрос и по асму, так как думать трудно самостоятельно. ![]() ![]() Кстати, мой пример и без кучи работает, или при поиске это необходимо? Работа с блоками памяти меня вообще пугает. )) |
Сообщ.
#6
,
|
|
|
Вопросы нужно четче задавать. В #1 ты ссылаешься на пример поиска строки, откуда можно сделать вывод, что тебе сначала нужно прочитать файл, найти строку и только потом ее заменить. А в #5 ты просто что-то записываешь в файл по фикс.смещению без всякого поиска - ес-но тут никакой буфер для чтения и соотв-но HeapAlloc не нужны...
|
Сообщ.
#7
,
|
|
|
При старте программы винда сама выделяет немного кучи, поэтому вполне хватит GetProcessHeap. Полученный хендл можно использовать в HeapAlloc, HeapReAlloc и HeapFree. И все что тут нужно знать - это то, что HeapAlloc не может выделить более 7fffffffh памяти за раз. Возвращаемый ей адрес блока памяти уже залочен и сразу же пригоден для использования. Все легко и просто.
В общем, если не хочешь создавать нормальный менеджер памяти, то память выделять можно и так: ![]() ![]() mptr = HeapAlloc(GetProcessHeap,..... |
Сообщ.
#8
,
|
|
|
Кстати, а нету чего нибудь из апи похожего на WritePrivateProfileString() для xml?
Так как это модный формат, интересно чем приложения пишут свои конфиги в xml? Или они обычно парсят файл, хотя это и неудобно? Раз уж есть формат значит должно быть что-то удобное. Прога Cubase4 вместо реестра всё хранит в xml конфиге. |
Сообщ.
#9
,
|
|
|
API нет. Скорее всего есть готовые сторонние либы. Но, поскольку для тебя MASM и TASM являются отстоем, то ничем помочь не могу, я просто не в курсе как в фасме подключать модули от Си, Дельфи и прочих. В "отстойных" это делается элементарно, благо они умеют работать с LIB и OBJ файлами.
Если не секрет, то чем INI-файлы не устраивают? |
Сообщ.
#10
,
|
|
|
![]() инфы мало продвигаюсь муравьиными шагами. Просто в фасм нету обжектников и вообще комманд строка не нужна, сразу готовый файл. Я даже не знаю зачем obj нужны, я сам начинал прежде кампилить на тасм, потом линкер подключал, но смысл я так и не понял зачем линковать вручную. Наверное так в дебаггере что-то там изучать легче на неком этапе сборки. Почемуж, AndNot, подскажи на тасм? Или на масм! Может я и разберусь. |
Сообщ.
#11
,
|
|
|
Есть два решения:
1. Скачать любой сишный парсер, коих навалом и с исходниками. Компильнуть и подключить получившийся LIB-файл к своему. Правда придется попотеть, но зато код будет включен в программу и можно выбрать либу по потребностям. 2. Скачать DLL. Тут особо мучиться не придется, вызовы подпрограмм стандартизированы и автономность либы гарантирована, но DLL еще придется поискать, их не очень много. Выбирай что больше нравится. Либ полно, например здесь. Выбор за тобой ![]() |
Сообщ.
#12
,
|
|
|
Я читал вот это ещё до того как здесь тему начал - Регулярные выражения,
что-то весьма интересное, но надо набраться сил и терпения это всё переварить. Цитата AndNot @ лучше уж "структурированным" INI обойтись Мне нужно здалать загрузчик-запускатель программы с предварительным изменением конфигурации. А тут уже у кого как устроенно, кто в реестре хранит, кто в ini, а кто и в xml. Затея не сложная, чаще всего надо указать размеры окна SM_CXSCREEN, SM_CYSCREEN, а иногда сбросить fullscreen. ![]() Первая преграда была, когда встретился SciTE конфиг по типу ini-файла, но без секции [] при помощи AutoIt3 эта проблемма решилась. Но меня в сторону асм всёравно тянет. |
Сообщ.
#13
,
|
|
|
Сдается мне, что изучать асм через парсер xml не самая лучшая затея
![]() |