Сейчас на форуме: (+8 невидимых)

 eXeL@B —› Вопросы новичков —› masm32 - добавить/заменить строку в конфиге формата XML
Посл.ответ Сообщение

Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 11 ноября 2013 15:49
· Личное сообщение · #1

Задача - добавить или заменить строку, вида <SerialNumberXXXX>XXXXX XXXXXXXXX</SerialNumberXXXX> в XML-конфиге. В теге <SerialNumberXXXX - XXXX означает номер версии, т. е. искать нужно искать/удалять/заменять данную строк без учёта этого.
При поиске нашёл несколько решений на похожую тему:
1. http://www.ssl.exelab.ru/f/action=vthread&forum=6&topic=19096 Пробовал AsmXml by Marc Kerbiquet, но чёто ничего не понял, как в masm32 сделать то, что мне нужно.
2. Использовать fscanf, SetFilePointer, WriteFile. Тут вообще ничего непонял. (то есть известно, как в конец файла чего-нибудь дописать, с помощью SetFilePointer и WriteFile, но как в произвольном месте записать - хз, только совет про fscanf встретился)

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



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 11 ноября 2013 15:58 · Поправил: VodoleY
· Личное сообщение · #2

elch все что вы делаете это мазахизм. вы точно на асме из принципа хотите это делать? оно то конечно можно.. но это операция на гланды через задний проход.

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 11 ноября 2013 16:08 · Поправил: elch
· Личное сообщение · #3

VodoleY пишет:
вы точно на асме из принципа хотите это делать?

Я не программист, а хеловорлдщик. На masm32 кой-чего научился делать. В данном случае - это патч, сделанный на движке SNR PatchEngine от автора dup2. Мне кажется, что переводить snr_patchengine.asm на другой язык - это мазохизм ещё больший, для меня во всяком случае. И на каком языке это лучше делать - VB, C# и т. п.? Вот для этого УГ куча примеров находилась, по моему вопросу...



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 11 ноября 2013 16:11 · Поправил: VodoleY
· Личное сообщение · #4

ну тогда чтоб не вникать.. в хмл.. предлагаю вам просто парсить его как текстовый файл. и не мучаться высокими технологиями
rep cmpsb <SerialNumber byte string

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....


| Сообщение посчитали полезным: Dr0p

Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 11 ноября 2013 23:44
· Личное сообщение · #5

VodoleY пишет:
rep cmpsb <SerialNumber byte string

Ну а есть чего нибудь готовое? Я не прошу чего-то готового - но если есть, конечно бы не от исходнмка.
Пока что тестовую процедуру оформил так:[
Code:
  1.          invoke GetCurrentDirectory,sizeof CurDir,addr CurDir
  2.          invoke lstrcat,addr CurDir,offset szConfig
  3.          invoke exist,addr CurDir
  4.          .if eax==0
  5.          invoke MessageBox,hwnd,addr of_Missing,addr of_Warning,\
  6.          MB_ICONEXCLAMATION+MB_TOPMOST
  7.          jmp @END
  8.          .else
  9.          jmp @WRITE
  10.          .endif
  11.          @WRITE:
  12.          invoke GetFileAttributes,addr CurDir
  13.          .if eax!=FILE_ATTRIBUTE_NORMAL
  14.     invoke SetFileAttributes,addr CurDir,FILE_ATTRIBUTE_NORMAL
  15.          .endif
  16.          invoke CreateFile,addr CurDir,GENERIC_READ+GENERIC_WRITE,\
  17.     FILE_SHARE_READ+FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
  18.          xchg ebx,eax
  19.  
  20.  
  21.          invoke SetFilePointer,ebx,00001AFEh,0,0
  22.     invoke WriteFile,ebx,addr szSerial,addr nSerialSize,addr szBuffer,0
  23.          invoke CloseHandle,ebx
[/img]
Так работает, но понятно, что в итоге шнянга получится. Поэтому и нужен совет (а лучше готовый пример))
С чего всё же лучше начать?



Ранг: 19.7 (новичок), 14thx
Активность: 0.030
Статус: Участник

Создано: 11 ноября 2013 23:51
· Личное сообщение · #6

elch
Мазохист... читаешь файл построчно и в каждой строке ищешь "SerialNumber". Теперь у тебя есть строка, в которой есть ключ. Дальше любые функции для работы со строками и вперед. На делфи это вместилось бы в пару строчек. Зачем использовать языки не по назначению?




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 12 ноября 2013 13:31
· Личное сообщение · #7

masmlib.instring ?

Справку поюзал бы чтоле

| Сообщение посчитали полезным: elch

Ранг: 30.2 (посетитель), 18thx
Активность: 0.030
Статус: Участник

Создано: 12 ноября 2013 15:04
· Личное сообщение · #8

Как вариант можно покурить нечто вроде : --> AsmXml <-- сырки в комплекте.


 eXeL@B —› Вопросы новичков —› masm32 - добавить/заменить строку в конфиге формата XML
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати