Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.226.187.199] |
|
Сообщ.
#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 еще придется поискать, их не очень много. Выбирай что больше нравится. Либ полно, например здесь. Выбор за тобой Но, ИМХО, гемор это все, лучше уж "структурированным" INI обойтись, дешево и сердито, а для большинства задач более чем достаточно. |
Сообщ.
#12
,
|
|
|
Я читал вот это ещё до того как здесь тему начал - Регулярные выражения,
что-то весьма интересное, но надо набраться сил и терпения это всё переварить. Цитата AndNot @ лучше уж "структурированным" INI обойтись Мне нужно здалать загрузчик-запускатель программы с предварительным изменением конфигурации. А тут уже у кого как устроенно, кто в реестре хранит, кто в ini, а кто и в xml. Затея не сложная, чаще всего надо указать размеры окна SM_CXSCREEN, SM_CYSCREEN, а иногда сбросить fullscreen. Заодно и ассемблер поизучать. Первая преграда была, когда встретился SciTE конфиг по типу ini-файла, но без секции [] при помощи AutoIt3 эта проблемма решилась. Но меня в сторону асм всёравно тянет. |
Сообщ.
#13
,
|
|
|
Сдается мне, что изучать асм через парсер xml не самая лучшая затея А INI-файлы тем и хороши, что легко редактируются ручками, особенно при тестировании программы. К тому же есть аналогичные реализации и под другие ОС, под один только ДОС их было вагон и тележка. Т.е. формат "кроссплатформенный".
|