Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Где зарыта собака? [D5, Win95/98, NT4]


spiderman ©   (2002-05-07 15:42:00) 

Надо отправить сообщение на другой комп. Из Internet"а много прог, одна из них:

implementation

type TNetMessageBufferSend = function(servername,
msgname,fromname:PWideChar; Buf:Pointer;
BufLen:DWord):word;

var NetMessageBufferSend:TNetMessageBufferSend;

procedure TForm1.Button1Click(Sender: TObject);
var
rname:lpcwstr;
buf:pointer;
text:string;
size:integer;
begin
@netmessagebuffersend:=nil;
rname:="128.1.5.2";
text:="Message from Sasha";
size:=sizeof(widechar)*length(text)+1;
getmem(buf,size);
pwidechar(buf):=stringtowidechar(text, buf, length(text)+1);

if netmessagebuffersend(nil,rname,nil,buf,size) <> no_error then
showmessage("error");
freemem(buf,size);
end;


Но работать не хочет и выдаёт:
... exception class EAccessViolation with message "Access Violation" at address 00000000. Read of address 00000000. ...

Пожалуйста помогите!


MMarat   (2002-05-08 13:00:00) [1]

Лови рабочую:

function NetSend(const MsgName,SendMsg: string): Boolean;
var
PWCMsgName, PWCSendMsg: PWideChar;
Error: Word;
begin
try
Error := 1;
GetMem(PWCMsgName, 2*Length(MsgName)+2);
GetMem(PWCSendMsg, 2*Length(SendMsg)+2);
StringToWideChar(MsgName, PWCMsgName, Length(MsgName)+2);
StringToWideChar(SendMsg, PWCSendMsg, Length(SendMsg)+2);
Error := NetMessageBufferSend(nil, PWCMsgName, nil, PWCSendMsg, 2*Length(SendMsg));
finally
FreeMem(PWCMsgName);
FreeMem(PWCSendMsg);
Result := Error = 0;
end;
end;




if NetSend(komy, text)
then form1.StatusBar1.SimpleText:="Мессага отправлена"
else form1.StatusBar1.SimpleText:="Ошибка отпраки";


Digitman   (2002-05-07 18:23:00) [2]

Имена экспортируемых PE-файлом ф-ций чувствительны к символьному регистру. Данная ф-ция представлена в netapi32.dll именно как "NetMessageBufferSend", ты же пытаешься импортировать ф-цию "nttmessagebuffersend", коей и в помине нет в данной библиотеке, о чем, собственно, системный PE-загрузчик тебя и извещает.


ZZ   (2002-05-07 18:09:00) [3]

Если в WinNT, то каталог System обычно для нее ничего не значит ( надо system32).
Если win9x, то посылай сообщения через mail-слоты (поищи примеры например на яндексе)


spiderman   (2002-05-07 17:20:00) [4]

Хорошо, но почему пишет "Файл связан с отсутствующим компонентом NETAPI32.dll:netmessagebuffersend"? Если он имеется C:\WIN\SYSTEM, и я помещал его в корневую папку.


ZZ   (2002-05-07 16:08:00) [5]

Уже срисовывать не могут по нормальному :)
см. http://delphi.xonix.ru/faq/show.php?m=lan&n=2

...PWideChar; Buf:Pointer; BufLen:DWord):word; STDCALL;
@netmessagebuffersend:=nil; - А это полный бред :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо