Вот сервер:
| Код | Var buf: Pointer; ged: DWORD; begin pipe:=CreateNamedPipe('\\.\pipe\DSKPipe',PIPE_ACCESS_DUPLEX,PIPE_TYPE_BYTE, PIPE_UNLIMITED_INSTANCES, 0, 0, 1000, nil); Win32Check( pipe <> INVALID_HANDLE_VALUE); ConnectNamedPipe(pipe,nil);
GetMem(buf,254); Win32Check( ReadFile(pipe,buf,254,ged,nil)); ShowMessage(IntToStr(ged)); //ShowMessage(buf); FreeMemory(buf);
|
Вот клиент:
| Код | Var pipe: THandle; Str: String; writ, tow: Cardinal; Buf: PAnsiChar; begin pipe:=CreateFile('\\.\pipe\DSKPipe',PIPE_ACCESS_DUPLEX, 0, nil, OPEN_EXISTING, 0, 0); Win32Check(pipe <> INVALID_HANDLE_VALUE);
Buf:=GetMemory(254); Str:='Check "dsk.dll"'+#0; CopyMemory(Buf,@Str,Length(Str)+1); tow:=Length(Str)+1; //Buf:=PChar(Str); Win32Check(WriteFile(pipe,buf,tow,writ,nil));
CloseHandle(pipe);
|
В результате серврер получает искажённое сообщение (типа С#щ^|)(хотя размер читает правильный) Помогите исправить ошибку. |