Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 745
от 05.07.2004, 15:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 5553 Отправлено ответов: 15069 Активность: 271.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
bocha Статус: Опытный Общий рейтинг: 138.32 [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 133.75 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 116.68 [Подробней >>] |
flasher Статус: Доверительный Общий рейтинг: 105.73 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 117.93 [Подробней >>] |
Стас Статус: Опытный Общий рейтинг: 127.85 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 109.5 [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 105.17 URL: Мой сайтик... [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 105.07 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 5500. Здравствуйте! У меня проблема в работе акселераторов! Почему не работают горячие клавиши, соответств... (ответов: 1)
Вопрос № 5501. Здраствуйте. Не могу сделать программу которая бы открывала html-файл и заменяла бы там символы. Как... (ответов: 1)
Вопрос № 5502. Добрый всем! Уменя вопрос по BIOS (крайне заитересовался) протичал что можно на сайте rom.by и возни... (ответов: 1)
Вопрос № 5504. Здравствуйте уважаемые эксперты! Мне не ясно для чего нужна директива ASSUME при использовании станд... (ответов: 2)
Вопрос № 5508. Привет всем!!! уменя вопрос по FPU... я загрузил число пи командой fldpi и сохранил его в 80-битную ... (ответов: 2)
Вопрос № 5512. Здраствуйте уважаемые эксперты. Сейчас я занят в проекте разработки LAN чата, не можете подсказать г... (ответов: 1)
Вопрос № 5513. Хочу узнать от Вас синтаксис команды RasDial и вообще информацию о создании Dial-Up соединении (комп... (ответов: 1)
Вопрос № 5514. Ув.эксперты я уже задавал вопрос о запуске одной программы из другой при этом чтобы при выходе запу... (ответов: 1)
Вопрос № 5515. Здравствуйте, эксперты! Подскажите алгоритм решения задачи: написать программу, которая по нажатию п... (ответов: 1)
Вопрос № 5522. Господа,пишу именно вам, так как вы мне уже помогали добротными ответами!!! Вопрос таков: Изучаю так... (ответов: 1)
Вопрос № 5524. Есть ли возможность слинковать объектный файл полученый в TASM с бинарным файлом, содержащем наприме... (ответов: 1)
Вопрос № 5525. Hail All! Есть идея чтения отличных от FAT32 файловых систем, но винда ессно не даёт вызывать биосов... (ответов: 1)
Вопрос № 5526. Здравствуйте, господа эксперты! У меня, такой вопрос. Как мне получить иконку из файла .ехе или .dll... (ответов: 2)
Вопрос № 5527. Уважаемые эксперты, помогите, пожалуйста! Пытаюсь научиться отправлять эектронные письма используя п... (ответов: 1)
Вопрос № 5528. Доброе время суток, уважаемые эксперты. Есть такая вещь , которая назывется ФИБЕР, на сколько я пони... (ответов: 1)
Вопрос № 5530. Здравствуйте, уважаемые эксперты! Есть пара вопросов: 1) Как сменить разрешение монитора на 640x480?... (ответов: 2)
Вопрос № 5531. Привет! Как в Masm'e закрасить окно черным цветом?... (ответов: 1)
Вопрос № 5532. Здравствуйте, уважаемые! Мне интересно сколько лет Вы учили assembler и другие языки. Не могли бы на... (ответов: 2)
Вопрос № 5533. Здравствуйте. Скажите пожалуйста, что такое хеш-функция, хеширование и т.д. или ссылку где можно поч... (ответов: 1)
Вопрос № 5536. Здраствуйте! Выделяю память по GlobalAlloc - GlobalLock, но потом её не хватает - данные уже записан... (ответов: 3)
Вопросов: 20, ответов: 27
Вопрос № 5500 |
Здравствуйте! У меня проблема в работе акселераторов! Почему не работают горячие клавиши, соответствующие пунктам меню (например, Esc)? Ниже следует фрагмент приложения. Заранее благодарю! Приложение не закрывается.
Приложение:
Вопрос отправлен: 24.06.2004, 18:38
Отправитель: dmitry (dimon4386@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает bocha
Добрый день, dmitry!
WM_COMMAND
WPARAM wParam
LPARAM lParam;
Parameters
wParam
The high-order word specifies the notification code if the message is from a control. If the message is from an accelerator, this value is 1. If the message is from a menu, this value is zero.
The low-order word specifies the identifier of the menu item, control, or accelerator.
Ответ отправлен: 25.06.2004, 05:22
Отправитель: bocha
Вопрос № 5501 |
Здраствуйте.
Не могу сделать программу которая бы открывала html-файл и заменяла бы там символы. Как найти файл в текущем каталоге? Функция GetCommandLine возвращает указатель на мою программу, а не на html-файл.
Вот попробовал сделать что мог - дальше не знаю как.
Приложение:
Вопрос отправлен: 24.06.2004, 19:20
Отправитель: Семен
[Следующий вопрос >>] [Список вопросов]
Отвечает bocha
Доброе время суток, Семен!
FindFirstFile, FindNextFile
Ответ отправлен: 25.06.2004, 04:50
Отправитель: bocha
Вопрос № 5502 |
Добрый всем!
Уменя вопрос по BIOS (крайне заитересовался)
протичал что можно на сайте rom.by и возникли вопросы!)
Все вопросы по программированию Bios!
1.Есть ли книги(хоть на англ)хотя как я понял что их нет!
2.Старт кода начинаеться с определенного адреса или как он определяеться(и кто определяет?!))
3.если я правильно понял то код написан в 16 бит.
Заранее спасибо!
Вопрос отправлен: 25.06.2004, 00:15
Отправитель: Moreman (pp-vrs@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Здравствуйте, Moreman!
BIOS запускается с адреса 0FFFFh: 0FFF0h
Код написан 16 бит в начале, но потом есть переходы в защищённый режим, поэтому применяется 32 битный код.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 25.06.2004, 21:05
Отправитель: Евгений Иванов
Вопрос № 5504 |
Здравствуйте уважаемые эксперты!
Мне не ясно для чего нужна директива ASSUME при использовании стандартных директив сегментации. В учебнике Юрова написано: "Все сегменты сами по себе равноправны, так как директивы SEGMENT и ENDS не содержат информации о функциональном назначении сегментов. Для того, чтобы использовать их как сегменты кода, данных или стека, необходиом предварительно сообщить транслятору об этом, для
чего используют спец. директиву ASSUME..." Все сегменты - это наборы байт, есть точка входа, а значит значение регистра CS при загрузке определено, значение регистра SS тоже, а в DS значение грузится вручную! Если нужен доступ к переменным в сегментах, то либо грузится DS, либо используется дальний указатель. Сегменты располагаются в памяти друг за другом и по группам, это наглядно видно в карте компоновки *.map. Все метки, имена переменных, процедур в программе уникальны, а значит транслятор всегда может вычислить и запомнить их адрес относительно начала тех сегментов, в которых они содержатся. Тогда в чем же смысл этой директивы? Кому еще надо знать о функциональном назначении сегмента, кроме самого программиста?
С уважением,fwd
Вопрос отправлен: 26.06.2004, 04:57
Отправитель: fwd
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Приветствую Вас, fwd!
Вот именно. Ты совершенно прав. Только программист ответственнен за это. Лично я использую очень и очень редко директиву Assume.
Её можно использовать не только с сегментными регистрами, но и с любыми другими регистрами, которые содержат адрес (смещение); это полезно для избежания повторных написаний строк.
Хотя при линейной памяти и в защищённом режиме все эти сегменты совершенно не нужны.
Удачи!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 26.06.2004, 21:45
Отправитель: Евгений Иванов
Отвечает Ayl
Здравствуйте, fwd!
> Кому еще надо знать о функциональном назначении сегмента, кроме самого программиста?
Компилятору. Для того, чтобы правильно построить обращение к переменной. Например:
CSEG Segment
mov ax, [myvar]
myvar dw ?
CSEG ends
В этом примере компилятор выругается на то, что он не может связать обращение к переменной с каким-либо сегментом. Если же после определения сегмента написать ASSUME cs:CSEG, то обращение к переменной будет оттранслировано как mov ax, cs:[myvar], т.е. в команду будет добавлен префикс переопределения сегмента. Если же ASSUME написать как ASSUME ds:CSEG, то обращение к переменной будет записано через регистр DS, т.е. без дополнительного префикса.
Ответ отправлен: 28.06.2004, 11:27
Отправитель: Ayl
Вопрос № 5508 |
Привет всем!!! уменя вопрос по FPU...
я загрузил число пи командой fldpi и сохранил его в 80-битную переменную fstp num. теперь она содержит вот это 4000c90fdaa22168c235. А как теперь это нарисовать на экране, чтоб видно было именно 3.1415... и.т.
Вопрос отправлен: 26.06.2004, 13:12
Отправитель: n-aga
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Доброе время суток, n-aga!
Есть команда для сохранения в таком виде.
Читай описание команды FXTRACT.
Logic temp ST
ST exponent(ST)
push significand(temp) into ST
FXTRACT separates out the exponent and significand of the value in
ST. It puts the exponent into ST and then pushes the significand
onto the stack. (Both are represented as real numbers.)
It leaves the exponent in ST(1) and the significand in ST.
Note
FXTRACT performs a superset of the IEEE-recommended logb(x)
function.
If the original operand is zero, FXTRACT leaves negative infinity as
the exponent in ST(1) and sets ST to zero with the same sign as the
original operand. The zero-divide exception is raised in this case.
ST(7) must be empty to avoid an invalid-operation exception.
Note also that the exponent generated by FXTRACT is the true
exponent, not the biased exponent used internally by the FPU.
Opcode Format
D9 F4 FXTRACT
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 26.06.2004, 21:45
Отправитель: Евгений Иванов
Отвечает bocha
Добрый день, n-aga!
0-63-мантиса
64-78-характеристика
79-знак
Ответ отправлен: 26.06.2004, 15:25
Отправитель: bocha
Вопрос № 5512 |
Здраствуйте уважаемые эксперты. Сейчас я занят в проекте разработки LAN чата, не можете подсказать где можно взять документацию на эту тему (алгоритмы, исходники)?
Заранее спасибо.
Вопрос отправлен: 27.06.2004, 16:27
Отправитель: CerbeR (BlackCerbeR@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает flasher
Приветствую Вас, CerbeR!
http://www.wasm.ru/publist.php?list=16
http://www.wasm.ru/srclist.php?list=5
p.s. сокеты-рулят! :)
Ответ отправлен: 27.06.2004, 19:32
Отправитель: flasher
Вопрос № 5513 |
Хочу узнать от Вас синтаксис команды RasDial и вообще информацию о создании Dial-Up соединении (компилятор Masm32)! Ответы по-возможности присылайте на Arslanov_M@mail.ru
Заранее благодарен!!!!!!!
Вопрос отправлен: 27.06.2004, 19:56
Отправитель: Максим
[Следующий вопрос >>] [Список вопросов]
Отвечает flasher
Добрый день, Максим!
http://www.wasm.ru/forum/index.php?action=vthread&forum=12&topic=2588
Ответ отправлен: 27.06.2004, 23:08
Отправитель: flasher
Вопрос № 5514 |
Ув.эксперты я уже задавал вопрос о запуске одной программы
из другой при этом чтобы при выходе запускающей - вторая не
вылетала , ну в общем с СreateProcess ничего не вышло, т.е.
как вылетала вторая,так и вылетает. Ну конечно если поставить
в первой бесконечный цикл например,то все прекрасно работает,
но тормозит жутко в этом и проблема. Ну в общем не подскажете
хотя бы как сделать, чтобы остающаяся программа, как можно
меньше тормозила запускаемую (основную). Сама программа -
скринсейвер, который запускает сама система (не работает только
под ХР).
Вопрос отправлен: 27.06.2004, 20:09
Отправитель: farby (arthy_k@fromru.com)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Доброе время суток, farby!
Если твоя задача - вызвать дефолтный скринсейвер, то ты делаешь ерунду - вызвать скринсейвер можно, послав сообщение SC_SCREENSAVE любому окну, например Десктопу. В приложении - см. пример.
Если же нужен общий случай - то приведи всё-таки кусок кода, как ты используешь CreateProcess - сдается мне, что ты ошибаешься где-то.
* Origin : Life begins at 1000Mhz!
Приложение:
Ответ отправлен: 01.07.2004, 18:57
Отправитель: _vt
Вопрос № 5515 |
Здравствуйте, эксперты!
Подскажите алгоритм решения задачи:
написать программу, которая по нажатию правого контрола переключает раскладку клавиатуры. При нажатии клавиши альт плюс символ должен печататься символ с другой нетекущей раскладки (например, если язык текущий английский и нажать клавишу альт плюс N, то напечатается русское Т).
Заранее благодарен, EraSer
Вопрос отправлен: 28.06.2004, 11:06
Отправитель: EraSer
[Следующий вопрос >>] [Список вопросов]
Отвечает Стас
Приветствую Вас, EraSer!
Было уже очень похожее.
1) вешаешь свой обработчик int 9.
2) твой обработчик первым делом выясняет нажата ли правая Ctrl (например можно посмотреть битовые поля по адресу 0:417(бит 2=1),0:418(бит 0=0)), если нажата переключаем флаг раскладки (not layoutflag). И выход из прерывания.
3) если Ctrl не нажата, получаешь код клавиши, ориентируясь на флаг раскладки(если нажата Alt(0:417(бит 3=1)) флагом пользуешся "наоборот"), транслируешь его в код для буффера клавиатуры, и кладешь в буффер.
Примерно так. Очень примерно...
Ответ отправлен: 28.06.2004, 14:02
Отправитель: Стас
Вопрос № 5522 |
Господа,пишу именно вам, так как вы мне уже помогали добротными ответами!!!
Вопрос таков: Изучаю такой предмет Операционные системы!!! И там вопрос в контрольной -Что такое виртуальная машина???
Вот не могли бы вы ответить на этот вопрос или дать подходящую инфу(ссылки)???
Заранее благодарен и не сомневаюсь в вас!!!
Вопрос отправлен: 28.06.2004, 14:14
Отправитель: rams (rams@belovo.net.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Приветствую Вас, rams!
Виртуальная машина в рамках операционой системы - это, среда, в которой позволяется выполнение программ, чужеродных данной ОС. Например, в Windows XP есть NTVDM - среда, в которой выполняются приложения DOS. Также, существует виртуальная машина Java - среда в браузере, в которой выполняются Java-приложения. Без нее браузер неспособен запускать Java.
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 01.07.2004, 18:57
Отправитель: _vt
Вопрос № 5524 |
Есть ли возможность слинковать объектный файл полученый в TASM с бинарным файлом, содержащем например массивы данных и наборы рисунков. И как из программы на ассемблере обращаться к этим данным. Программирую под ДОС, с использованием расширителя WDOSX. Спасибо.
Вопрос отправлен: 28.06.2004, 18:26
Отправитель: qawsed
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
PACKOBJ.DOC -- The Turbo Pascal Compressing Data Objitizer
By Wilbert van Leijen
Introduction
------------
PACKOBJ is a program that takes binary data as input, compresses it using
a fast LZW algorithm and converts it to an .OBJ file that you can link in
a Turbo Pascal (TP) program, version 4.0 or later.
TPUNPACK.PAS is the TP unit that takes care of decompressing the data.
The PACKOBJ.EXE program and the Turbo Pascal TPUNPACK unit are distributed
as Shareware. If you use them, you are kindly asked to register this
product. The fee for becoming a Registered User of PACKOBJ/TPUNPACK is
$15.-- or Я25.-- (that's twentyfive Dutch guilders). Just send a cheque or
money order to the author. My address is mentioned at the bottom of this
document.
Upon registration, you will become a disk with:
- the source code of the PACKOBJ utility and UNPACK routine
- 3 different customised TP 6.0 Runtime libraries (SYSTEM.TPU):
one 'Regular Version': 100% compatible with Borland's, but with many
code enhancements and improved 'smart linking';
one 'Regular 286 Version', with 286 code throughout, aborts automatically
when an attempt is made to run a program on an XT-class system; and
one 'STUB Version', designed especially for crafting ultra compact
utilities and TSR programs.
The STUB version of SYSTEM.TPU was used to compile PACKOBJ. STUB is a
limited version of the runtime library in the following respects:
it does not support overlays and virtual methods; it doesn't automatically
open/close the text files Input and Output (they are pre-declared, however);
it doesn't take over any interrupts; and it passes control to DOS to do the
allocation and deallocation of data structures on the heap. STUB will be
accompanied with guidelines for developers. As a rule, if you're not
deeply into object oriented programming, the majority of your TP programs
will benefit from STUB. Example: the minimum .EXE size of a program created
with STUB ('begin end.') is only 224 bytes.
Using PACKOBJ
-------------
PACKOBJ's command line is akin to BINOBJ, a utility shipped with every
version of Turbo Pascal since 4.0. BINOBJ expects you to specify an input
file, an output file and an exported identifier. PACKOBJ wants you to tell
it:
- the name of the input file; this file can be of any type, whether it is
an ASCII document, a picture bitmap or whatever. The only limitation
here is that it must be smaller than 64 kByte;
- the name of the output file; this will hold the compressed result and is
linkable in a TP program;
- an exported identifier or 'public name': this is the symbol that must
be specified in order to link the .OBJ file in your TP program.
Unlike BINOBJ, the PACKOBJ utility will declare not one but two public
names. And unlike BINOBJ too, these two public names are callable by your
program, i.e. you don't have to pass a pointer to it to access your data.
The public names exported by PACKOBJ are of the format:
Funtion PublicNameSIZE : Integer; Far; External;
Procedure UNPACKPublicName(Var buffer); Far; External;
The PublicNameSIZE will return the size of the unpacked image. This is
handy if you want to know how many bytes you'll have to allocate on the
heap to hold the result in 'buffer'.
UNPACKPublicName does not do any unpacking. Rather, it pushes a few
parameters on the stack and performs a far call to UNPACK. UNPACK is
the interfaced procedure of unit TPUNPACK.
Note that you must attach the pseudo-type 'Far' to the declaration in
your declaration or alternatively, enable the compiler directive {$F+ }.
Failure to do so will most likely crash your program or the entire system.
Sample usage:
PACKOBJ joltcola.PIC joltcola JoltCola
This will take JOLTCOLA.PIC as input, writes JOLTCOLA.OBJ as output.
It will declare the procedure 'UNPACKJoltCola' and function 'JoltColaSIZE'
public.
Suppose you have JOLTCOLA.PIC. This is the raw bitmap of a VGA mode 13h
picture of a cola brand, loved by weary programmers because it promises
'Twice the Caffeine'. The picture is 64 kByte big, but we can put the
squeeze on this.
In this case, JoltColaSIZE returns the size of the raw, uncompressed bitmap:
65520 bytes. For a straight dump of the picture to the VGA display
however, calling JoltColaSIZE is not needed: the VGA memory is already
there, and unaccessible by TP's heap manager anyway.
Using TPUNPACK
--------------
UNPACKJoltCola calls a Far routine by the name of UNPACK. This routine is
exported by unit TPUNPACK and it takes care of the actual decompression of
the information. TPUNPACK is entirely written in assembler and optimised
for speed. Hence, it uses no more than a mere 474 bytes of code space.
Please note that UNPACK's stack requirements are somewhat less modest.
You must reserve 29 kByte of stack space to allow room for UNPACK's work
space.
The deal is here that you must include 'uses TpUnpack' under the program
header of your TP application and, specify a memory allocation directive
to allow for 32 kByte or more of stack space. Example:
{$M 32768, 0, 0 } { Allocate 32k stack space, no heap }
Do not call UNPACK by your application -- unless you know exactly what
you're doing. UNPACK will be called by the loader code of any .OBJ file
created by PACKOBJ.
Running the demo
----------------
In order to compile and run the demo, you must have the following:
- Turbo Pascal, version 4.0 or later
- A VGA display. (Any VGA display will do.)
What you must do:
- Make TPC.EXE, the Turbo Pascal command line compiler, accessible
on the DOS path
- Run JOLTCOLA.BAT
Trade Marks
-----------
Turbo Pascal is Copyrighted by Borland International.
PACKOBJ and TPUNPACK are Copyright 1991-92 by Wilbert van Leijen,
Amsterdam, The Netherlands.
Author
------
Wilbert van Leijen
Marathonweg 72-2
NL-1076 TM Amsterdam
The Netherlands
Wilbert van.Leijen at Fidonet 2:500/12.10956
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 30.06.2004, 11:59
Отправитель: Евгений Иванов
Вопрос № 5525 |
Hail All!
Есть идея чтения отличных от FAT32
файловых систем, но винда ессно не даёт
вызывать биосовские прерывания.
А ничего кроме этих самых прерываний я и не знаю :(
Как быть?
Вопрос отправлен: 28.06.2004, 19:46
Отправитель: Tibor (tibor_ferencig@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Приветствую Вас, Tibor!
Если не знаешь, а тебе нужно, то выход один - выучить. Возьми, например, исходники любого FS-плагина для Total Commander, и посмотри, как там это реализовано.
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 01.07.2004, 18:57
Отправитель: _vt
Вопрос № 5526 |
Здравствуйте, господа эксперты!
У меня, такой вопрос. Как мне получить иконку из файла .ехе или .dll (иконку программы), не запуская его.
Пробовал так:
invoke LoadLibraryEx,addr filename,NULL,LOAD_LIBRARY_AS_DATAFILE
mov hLibForRes,eax
invoke FindResource,hLibForRes,NULL,RT_GROUP_ICON
и тут мне дает ошибку
ERROR_RESOURCE_TYPE_NOT_FOUND equ 1813
или
ERROR_RESOURCE_NAME_NOT_FOUND equ 1814
Вопрос отправлен: 28.06.2004, 22:30
Отправитель: Andrei
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Приветствую Вас, Andrei!
invoke FindResource,hLibForRes,NULL,RT_GROUP_ICON
У тебя ресурс имеет индекс 0? Эсли нет, то ты задаёшь неправильный индекс ресурса, если да, попробуй изменить идентификатор на 1 или другое число как в ресурсах так и в программе
Ответ отправлен: 29.06.2004, 11:04
Отправитель: Dark_Lord
Отвечает flasher
Приветствую Вас, Andrei!
Попробуй через эту прогу:
http://www.wasm.ru/tools/2/reshhack.zip
Ответ отправлен: 30.06.2004, 10:52
Отправитель: flasher
Вопрос № 5527 |
Уважаемые эксперты, помогите, пожалуйста!
Пытаюсь научиться отправлять эектронные письма используя протокол электронной почты SMTP (порт 25).
Алгоритм его работы нашел в интернете на разных сайтах - он одинаковый:
1) SEND: MAIL FROM:
2) RECV: 250 Ok
3) SEND: RCPT TO:
4) RECV: 250 Ok
5) SEND: DATA
6) RECV: 354 Start mail input; end with .
7) SEND: Это текст почтового сообщения
8) SEND: .
9) RECV: 250
Понимаете, не погу понять какой-то мелочи, уже голова кипит:
У меня все получается только до 8-го шага. На этом шаге необходимо на почтовый сервер передать команду конца сообщения - точку, затем сервер должен ответить шагом 9 - передачей отклика.
Я так понял: точка должна заканчиваться сиволом возврата каретки (код 10) и символом перехода на новую строку (код 13) - т.е. всего 3 символа, -
Name db '.', 10, 13 ; - так я ее описываю.
Далее сервер должен (по алгоритму) отправить мне отклик 250, но сервер почему-то продолжает ожидать новой строчки данных ... в итоге мы оба чего-то ждем ...
Пробовал с разными почтовыми серверами - результат одинаковый!
Объясните, пожалуйста, в чем я не прав?
Заранее благодарю за ответ, спасибо.
Вопрос отправлен: 28.06.2004, 23:45
Отправитель: Коля
[Следующий вопрос >>] [Список вопросов]
Отвечает flasher
Приветствую Вас, Коля!
http://www.danil.com.ua/troyan1.htm
Ответ отправлен: 30.06.2004, 10:50
Отправитель: flasher
Вопрос № 5528 |
Доброе время суток, уважаемые эксперты.
Есть такая вещь , которая назывется ФИБЕР, на сколько я понимаю, поддержка этой фигни была реализована Микрософтом для облегчения переноса исполняемых файлов юникса на платформы вин32.Далее, судя по той инфе, которая у меня была, ФИБЕРы работают на уровне приложения, т.е в 3-м кольце (в отличие от потоков).Теперь собственно вопрос: каким образом можно использовать данную фишку в своих прогах, не понимаю зачем эмулировать многозадачность, когда можно использовать старые добрые потоки ?
Спасибо.
Вопрос отправлен: 29.06.2004, 10:11
Отправитель: Арт (akchurin_artur@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Здравствуйте, Арт!
Не знаю, что там в твоей "инфе", у Рихтера написано так:
Microsoft добавила в Windows поддержку волокон (fibers), чтобы упростить портирование (перенос) существующих серверных приложений из UNIX в Windows. C точки зрения терминологии, принятой в Windows, такие серверные приложения следует считать однопоточными, но способными обслуживать множество клиентов. Иначе говоря, разработчики UNIX-приложений создали свою библиотеку для организации многопоточности и с ее помощью эмулируют истинные потоки. Она создает набор стеков, сохраняет определенные регистры процессора и переключает контексты при обслуживании клиентских запросов.
Разумеется, чтобы добиться большей производительности от таких UNIX-приложений, их следует перепроектировать, заменив библиотеку, эмулирующую потоки, на настоящие потоки, используемые в Windows. Ho переработка может занять несколько месяцев, и поэтому компании сначала просто переносят существующий UNIX-код в Windows - это позволяет быстро предложить новый продукт на рынке Windows приложений.
Но при переносе UNIX-программ в Windows могут возникнуть проблемы В частности, механизм управления стеком потока в Windows куда сложнее простого выделения памяти. В Windows стеки начинают работать, располагая сравнительно малым объемом физической памяти, и растут по мере необходимости (об этом я расскажу в разделе «Стек потока» главы l6). Перенос усложняется и наличием механизма структурной обработки исключений (см. главы 23, 24 и 25).
Стремясь помочь быстрее (и с меньшим числом ошибок) переносить UNIX-код в Windows, Microsoft добавила в операционную систему механизм поддержки волокон. В этой главе мы рассмотрим концепцию волокон и функции, предназначенные для операций с ними. Кроме того, я покажу, как эффективнее работать с такими функциями. Но, конечно, при разработке новых приложений следует использовать настоящие потоки
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 01.07.2004, 18:57
Отправитель: _vt
Вопрос № 5530 |
Здравствуйте, уважаемые эксперты!
Есть пара вопросов:
1) Как сменить разрешение монитора на 640x480?
2) Как рисовать в памяти? т.е. не сразу как winapi SetPixel.
Приложение:
Вопрос отправлен: 29.06.2004, 11:02
Отправитель: gcc
[Следующий вопрос >>] [Список вопросов]
Отвечает flasher
Доброе время суток, gcc!
попробуй так:
.data?
lpDevMode DEVMODE <>
DM_PELSWIDTH EQU 80000h
DM_PELSHEIGHT EQU 100000h
.code
invoke EnumDisplaySettings, NULL, NULL, addr lpDevMode
mov lpDevMode.dmFields, DM_PELSWIDTH or DM_PELSHEIGHT
mov lpDevMode.dmPelsWidth, 640
mov lpDevMode.dmPelsHeight, 480
invoke ChangeDisplaySettings, addr lpDevMode, NULL
Ответ отправлен: 30.06.2004, 10:47
Отправитель: flasher
Отвечает Dark_Lord
Добрый день, gcc!
Используй ChangeDisplaySettings
Ответ отправлен: 29.06.2004, 12:00
Отправитель: Dark_Lord
Вопрос № 5531 |
Привет!
Как в Masm'e закрасить окно черным цветом?
Вопрос отправлен: 29.06.2004, 11:38
Отправитель: highQ
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Приветствую Вас, highQ!
Надо получить device context handle (hdc) окна функцией GetDC и вызвать функцию BitBlt как показано в примере.
Приложение:
Ответ отправлен: 29.06.2004, 12:04
Отправитель: Dark_Lord
Вопрос № 5532 |
Здравствуйте, уважаемые!
Мне интересно сколько лет Вы учили assembler и другие языки. Не могли бы написать?
Вопрос отправлен: 29.06.2004, 16:35
Отправитель: highQ
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Цдочаъпаяхпе, highQ!
Pascal - 3 кеъзфч (кмх неоаьх зцьи)
assembler x86 - а мълмалмк 3 кеъзфч у номдмйтчв ябупщъз
C - 2 кеъзфч
Ъ++ - 2 ледейу
Fortran 95 - а мълмалмк мимйм кеъзфч у номдмйтчв ябупщъз
Perl, PHP 4 - нм бепьое длз...
Ответ отправлен: 30.06.2004, 10:34
Отправитель: Portnov
Отвечает _vt
Добрый день, highQ!
С компьютером общаюсь относительно мало - где-то с 1997 года, когда мне первый раз показали 386 компьютер, Norton Commander, и сказали, что игры запускаются нажатием Enter на файлах com,exe или bat. :) Также показали Лексикон, в котором можно создавать тексты и Quattro Pro, где создают электронные таблицы. Уже тогда это всё устарело ;-) Информатика в моей школе тогда преподавалась только в 10-11 классах, в которые я попал в 99-2000 годах, на уроках которых нам преподавали BASIC на компьютерах Корвет и Yamaha. (Не помню точно модели) В 11 классе наконец показали тогда современные Pentium MMX и Pentium II/III, где дали основы пользования MS-DOS и Windows 95, MS Word, Excel, PowerPoint. С 2000 года изучал в университете Pascal под MS-DOS, Delphi, и ассемблер для К580ВМ80А. :) Паралелльно с этим самостоятельно изучал ассемблер x86, С, С++, чем в настоящий момент и занимаюсь на досуге. :) До чего не доходят руки, так это до сетевого программирования - Perl, PHP и пр, но на достигнутом не останавливаюсь.
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 01.07.2004, 18:58
Отправитель: _vt
Вопрос № 5533 |
Здравствуйте. Скажите пожалуйста, что такое хеш-функция, хеширование и т.д. или ссылку где можно почитать (желательно чтоб понятно для чайников).
Заранее спасибо.
Вопрос отправлен: 30.06.2004, 00:46
Отправитель: V
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Цдочаъпаяхпе, V!
Сыэ-рялифуз - ъймтлмъмбулеллмх ъпояипяоь рялифуз мп лчюмоч дчлльс, улмждч апмоьк чожякелпмк зайзепъз ийвб (а пчимк ъйябче жмамозп м сыэе ъ ийвбмк, уйу укупмаъпчаие). Юьачеп ус иябч. Ноукеоь: MD5, укупм-аъпчаич ЖМЪПч-89, у кл.до. Ъммпаепъпаеллм сыэуомачлуе - номфеъъ аьбуъйелуз пчимх рялифуу.
Жйчалье поеюмачлуз и сыэя - 1) ноу аьбуъйелуу сыэч мп юмйщэмжм буъйч ъммюшелух ле дмйтлм номзайзпщъз ичиус-йуюм ъпчпуъпубеъиус цчимлмкеолмъпех, у 2) ноу уцкелелуу мдлмжм юупч уъсмдлмжм ъммюшелуз дмйтлч келзпщъз а ъоедлек нмймаулч юуп цлчбелуз сыэч. Ля у поепще поеюмачлуе - юьъпомдехъпауе.
Нмдомюлм ном аъе ыпм очъъичцьачепъз я Юовъч Элчхеоч а илутие "Ноуийчдлчз иоунпмжочруз" (ъпчоме уцдчлуе ояъъимжм неоеамдч еъпщ лч www.cryptogtaphy.ru).
Ъ яачтелуек, Portnov.
Ответ отправлен: 30.06.2004, 10:34
Отправитель: Portnov
Вопрос № 5536 |
Здраствуйте! Выделяю память по GlobalAlloc - GlobalLock, но потом её не хватает - данные уже записаны и надо писать ещё, как добавить к существующему блоку памяти ещё памяти? Не будет ли при постоянном добавлении кусков памяти расход памяти не экономным?
Вопрос отправлен: 01.07.2004, 14:54
Отправитель: Alex
[Следующий вопрос >>] [Список вопросов]
Отвечает Gibbel
Приветствую Вас, Alex!
см. GlobalReAlloc().
"Неэкономичным" расход памяти не будет. Зато он может быть неэффективным.
Ответ отправлен: 01.07.2004, 15:10
Отправитель: Gibbel
Отвечает bocha
Приветствую Вас, Alex!
Память должна быть выделена
BOOL GlobalUnlock(HGLOBAL hMem);
HGLOBAL GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags);
Ответ отправлен: 02.07.2004, 17:17
Отправитель: bocha
Отвечает Dark_Lord
Доброе время суток, Alex!
Достаточно правельный вопрос, память выделяется кусками по 64 кб, поэтому функции GlobalXXXXX не являются идеальными для програм где требуется постоянно добавлять маленькие кусочки. Используйте функции HeapCreate, HeapAlloc, HeapFree. Так при помощи первой функции вы получаете handle, который позволяет вам выделить большое количество кусков памяти, причём они почти не будут фрагментированны!
Ответ отправлен: 01.07.2004, 19:31
Отправитель: Dark_Lord
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (25) C / C++ (14) Perl (4) Builder / Delphi (20) Pascal (28) Basic / VBA (6) Java / JavaScript (4) PHP (13) Криптография (8) WinAPI (12) Радиоэлектроника (13) |
Пользователю Windows 95/98/Me (37) Windows NT/2000/XP (53) "Железо" (37) Поиск информации (16) |
Администратору Windows NT/2000/XP (30) Linux / Unix (14) |
Юристу Гражданское право (9) Семейное право (7) Трудовое право (8) КоАП (6) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru | Отписаться |
В избранное | ||