Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2003-11-14

Re: Новости дискуссионного листа "Программирование. Форум !!!"

Здравствуйте !

> Да задача состоит из двух для меня пока незвестных
> 1. как зачитать файл типа RTF

Ну, с этим все достаточно просто. Можно воспользоваться
возможностями стандартного контрола Windows - Rich Edit.
Это расширенный редактор. В него можно загрузить RTF,
а потом взять оттуда обычный текст и разобрать вручную.

Оконные классы (если на API писать) :
Для ричедита версии 1.0 - "RICHEDIT".
Для версий 2.0 и выше - "RichEdit20A" (для ANSI - версии),
"RichEdit20W" (Unicode версия).
Для того, чтобы просто переконвертировать RTF в текст
хватит ричедита версии 1.0.
В MFC есть класс CRichEditCtrl - обертка самого контрола,
CRichEditView - контрол в виде View (там добавлены обработчики
стандартных команд MFC, реализована вставка OLE - объектов,
реализована сериализация (загрузка/выгрузка) документов).

Для решения твоей задачи достаточно проинициализировать в программе
ричедит (загрузить соответствующую dll - ку) функцией AfxInitRichEdit,
создать скрытое окно и взять немного кода MFC, где производится
сериализация документа, грузить в ричедит сам RTF, а потом
взять обычный текст из ричедита либо при помощи GetWindowText,
либо при помощи сохранения из RichEdit в виде текста (у него есть
такая возможность).
Ну а потом - дело техники - разобрать по строкам.

> 2.как передать задание программе запущенной на удаленном компе в в
> иде списка
> имеется в виду нескольких строк

Ну тут к твоим услугам полный спектр возможностей передачи данных.
Конечно же, первым решением напрашивается использовать сокеты.
Но для использования сокетов должны быть установлены и настроены службы
TCP IP. Однако, надо думать, если юзается инет на обоих компах, то
TCP должно быть.

Можно использовать майлслоты (MailSlots).

Если не заморачиваться (и, imho это самый легкий путь) , то можно
организовать соединение через поименованные каналы (Named Pipes).
Преимущество данного подхода в том, что не придется возиться с сокетами,
а можно будет использовать простые функции работы с файлами.
То есть можно открыть поименованный канал при помощи функции
CreateNamedPipe. Она возвратит дескриптор, который можно будет использовать
для операции ReadFile. CreateNamedPipe должна вызываться на принимающей
стороне (на том компе, где работает закачка).
На компе, где парсится RTF можно вызвать функции ConnectNamedPipe+WriteFile
или TransactNamedPipe для передачи данных.
Ложкой дегтя здесь является то, что CreateNamedPipe есть только в
WinNT 3.1 и выше/Win2000 (то есть на компе с задачей закачки должна быть NT
или 2k), ConnectNamedPipe тоже есть в NT/2k только. В Win98/95
есть только TransactNamedPipe.

Вот. Если что непонятно - могу расписать подробнее.

Vic.

P.S. Народ, может я чего забыл про возможности передачи данных по сетке ?

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   2003-11-14 21:52:57 (#20719)

Все зависит только от... .

.. тебя
.

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   "John Gradlov" 2003-11-14 18:03:37 (#20651)

Re: Новости дискуссионного листа "Программирование. Форум !!!"

Да задача состоит из двух для меня пока незвестных
1. как зачитать файл типа RTF
2.как передать задание программе запущенной на удаленном компе в виде списка
имеется в виду нескольких строк

-----Original MessageFrom: Victor V. Vakchturov [mailto:forum-moderat***@m*****.ru]
Sent: Friday, November 14, 2003 2:09 AM
To: comp.soft.prog.prog (1840500)
Subject: Re: Новости дискуссионного листа "Программирование. Форум !!!"

Здравствуйте !

Звиняйте все, что так долго не появлялся.
Просто компы как и люди - тоже глючат :-)
.. процы греются, а термопасту ночью не достать ...

> Здесь требуется ответ в виде схемы.
> Есть локальная сеть. На удаленном компьютере запущена задача по перекачке
> файлов с Ftp сервера (я ее пока дописываю) На компьтер за которым
> нахожусь я
> приходит письмо с заданием в формате RTF c заданием на перекачку файлов в
> виде списка.
> Как на твой взляд организовать взаимодейсвие задач с передачей спи
> ска файлов

Вот тут я немного не понял - тебе надо отправить на удаленный комп
задание самому, или вопрос в том, как из RTF - а вытянуть инфу ?
Или как отослать на удаленный комп задание ? В смысле - как с процессом
на другом компе связаться ?

Vic.

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   "vlad" 2003-11-14 17:26:10 (#20644)

Re: Новости дискуссионного листа "Программирование. Форум !!!"

Здравствуйте !

Звиняйте все, что так долго не появлялся.
Просто компы как и люди - тоже глючат :-)
.. процы греются, а термопасту ночью не достать ...

> Здесь требуется ответ в виде схемы.
> Есть локальная сеть. На удаленном компьютере запущена задача по перекачке
> файлов с Ftp сервера (я ее пока дописываю) На компьтер за которым
> нахожусь я
> приходит письмо с заданием в формате RTF c заданием на перекачку файлов в
> виде списка.
> Как на твой взляд организовать взаимодейсвие задач с передачей спи
> ска файлов

Вот тут я немного не понял - тебе надо отправить на удаленный комп
задание самому, или вопрос в том, как из RTF - а вытянуть инфу ?
Или как отослать на удаленный комп задание ? В смысле - как с процессом
на другом компе связаться ?

Vic.

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   2003-11-14 01:07:30 (#20427)

Re[3]: Новости дискуссионного листа "Программирование. Форум !!!"

Здравствуйте !

> Рад приветствовать, Victor!
>
> Довелось мне Saturday, November 08, 2003 читать, следующее:
>
> VVV> Сейчас все большее распространение получает Visual Studio
> NET - в этом
> ..
> VVV> MSDN юзать. Можно даже параллельно поставить две студии (6 -
> ю и NET).
>
> Кстати, а можно ли в .NET компилировать в обычный ехе без привязки к
> FrameWork (так кажется оно называется), чтобы как в старой - доброй
> студии?

Вроде, можно. Я, правда сам 7-ю студию не юзал - только MSDN
ставил 2003 - й.

> А ещё, ничего не подскажешь на счёт реализации доступа к портам
> (скажем, COM) в вин32? Вот в ДОСе всё было ясно, делаешь outportb и
> никаких проблем, а тут ведь как-то его захватить надо (?), и общаться
> не напрямую, а через ядро системы?
> Заранее спасибо.

В вин32 стандартно доступ к портам можно организовать через файловые
операции.
То есть что то типа этого :

/* A sample program to illustrate setting up a serial port. */

#include <windows.h>

int
main(int argc, char *argv[])
{
DCB dcb;
HANDLE hCom;
BOOL fSuccess;
char *pcCommPort = "COM2";

hCom = CreateFile( pcCommPort,
GENERIC_READ | GENERIC_WRITE,
0, // comm devices must be opened w/exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // comm devices must use OPEN_EXISTING
0, // not overlapped I/O
NULL // hTemplate must be NULL for comm devices
);

if (hCom == INVALID_HANDLE_VALUE) {
// Handle the error.
printf ("CreateFile failed with error %d.\n", GetLastError());
return (1);
}

// We will build on the current configuration, and skip setting the size
// of the input and output buffers with SetupComm.

fSuccess = GetCommState(hCom, &dcb);

if (!fSuccess) {
// Handle the error.
printf ("GetCommState failed with error %d.\n", GetLastError());
return (2);
}

// Fill in the DCB: baud=57,600 bps, 8 data bits, no parity, and 1 stop
bit.

dcb.BaudRate = CBR_57600; // set the baud rate
dcb.ByteSize = 8; // data size, xmit, and rcv
dcb.Parity = NOPARITY; // no parity bit
dcb.StopBits = ONESTOPBIT; // one stop bit

fSuccess = SetCommState(hCom, &dcb);

if (!fSuccess) {
// Handle the error.
printf ("SetCommState failed with error %d.\n", GetLastError());
return (3);
}

printf ("Serial port %s successfully reconfigured.\n", pcCommPort);
return (0);
}

еще отношение к этому имеет группа функций озаглавленная в MSDN как
"Communication Functions".

В MSDN есть статья "Serial Communications in Win32" - там что то тоже
написано.

А вообще для любоге устройство можно открыть CreateFile.

Типа такого :

CreateFile(
"\\\\.\\DEVICE_NAME", // address of name of the communications
device
fdwAccess, // access (read-write) mode
0, // share mode
NULL, // address of security descriptor
OPEN_EXISTING, // how to create
0, // file attributes
NULL // handle of file with attributes to copy
);

DEVICE_NAME - имя устройства.

> Alles Gutes!
>
> CU @ http://smuta.boom.ru
> ...In Code We Trust...
> При желании, mailto:deniskravtso***@m*****.ru

Смотрел сайт - прикольно :-)

Vic.

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   2003-11-14 00:52:19 (#20426)