Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Assembler

Страница: 1 |

 

  Вопрос: Проблема! Добавлено: 31.10.04 11:06  

Автор вопроса:  freeloader  | Web-сайт: freeloader.folder-pro.net | ICQ: 50804884 
.386
.model flat, STDCALL
option casemap:none

include windows.inc


include kernel32.inc
includelib kernel32.lib
include advapi32.inc
includelib advapi32.lib
include user32.inc
includelib user32.lib
...
lpPathToFile db "C:\Program Files\B'n'C\Clyde\Zamok\crackit.txt",0
        lpBuffer db 255 dup(?)
        intBuff dd 255
        MyText db 'bla bla bla',0
...
invoke MessageBox, NULL, addr lpOK, addr lpWriteBy,MB_OK + MB_ICONINFORMATION
                invoke CreateFile, addr lpPathToFile,GENERIC_READ or
GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,0,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,0
                mov hFile, eax
                invoke lstrcpy, lpBuffer, addr MyText
                invoke WriteFile, hFile, addr lpBuffer, 255, 0,0
                ;.if RETV!=255
                        invoke MessageBox,NULL,addr lpError, addr lpWriteBy,MB_OK + MB_ICONERROR
                ;.endif
                invoke CloseHandle, hFile
...
Проблема заключается в том, что я немогу произвести запись в файл, посчитал у меня получилось, что с этим нехитрым кодом я уже воюю около 2 часов, уже не знаю, что еще можно нашаманить... уже что только не перепробывал, вся надежда только на вас...

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 31.10.04 12:59
1. Флаг CREATE_NEW не позволит тебе открыть файл, если он уже существует, если надо переписать файл, если он вдруг уже есть то используй CREATE_ALWAYS

2. Для lstrcpy надо указать адрес буфера, куда копировать, а не содержимое этого буфера.

3. Для WriteFile 4-й параметр не должен быть 0. Это должен быть адрес буфера, который ты подготовил для принятия информации о количестве записаных в файл байт.

Ну и с учётом всего этого :)

WriteToFile proc
LOCAL hFile :DWORD
LOCAL Written :DWORD

.data
    lpPathToFile   db   "C:\Program Files\B'n'C\Clyde\Zamok\crackit.txt",0
    lpBuffer       db   255 dup(?)
    intBuff        dd   255
    MyText         db   'bla bla bla bbblllaaa',0
.code

    invoke CreateFile, ADDR lpPathToFile, GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
    mov hFile, eax
    invoke lstrcpy, ADDR lpBuffer, ADDR MyText
    invoke WriteFile, hFile, ADDR lpBuffer, 255, ADDR Written, NULL
    invoke CloseHandle, hFile

    ret

WriteToFile endp

Ответить

Номер ответа: 2
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #2
Добавлено: 31.10.04 15:37
ага cresta, всем этим пунктам можно дать оправдание, за два часа можно еще не такое натыкать..., изначально было как я посмотрел все правильно, вот только с CREATE_ALWAYS я не эксперементировал :)
СПАСИБО ОГРОМНОЕ :)
PS: Как интерестно получилось с комментариями, может Павел еще под АСМ сделает подсветку синтаксиса? :)

Ответить

Номер ответа: 3
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #3 Добавлено: 31.10.04 20:14
Почаще в msdn заглядывай. API-Viewer тут не поможет :)

Ответить

Номер ответа: 4
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #4
Добавлено: 01.11.04 07:51
дак, я бы заглядывал, если бы он был, но его нету :(
приходится довольствоваться win32hlp вытащенного с Borland Delphi

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам