Galkov писал(а):
СТЫД и ПОЗОРGalkov писал(а):
Позицию в стриме кто за тебя устанавливать будетДа, точно, каюсь, забыл про этот момент
------------ Дoбавленo:
Поставил, заработало.
Вот, что получилось, ну что-то не совсем быстро работает, может сказывается глюченый комп, черт его знает
Add(MainForm,11176470,273,287)
{
Left=20
Top=105
Width=527
link(onCreate,2797906:doLoad,[])
}
Add(RichEdit,2797906,392,280)
{
Left=10
Top=35
Width=495
Height=225
Align=5
FileName=".\compiler\Fpc\kol.pas"
ScrollBars=3
}
Add(InlineCode,2371655,448,343)
{
WorkPoints=#7:doWrite|6:doRead|
EventPoints=#6:onRead|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|18: hMMF:THandle;|18: Data:Pointer;|18: Strm:PStream;|9: public|22: onRead:THI_Event;|24: constructor Create;|33: destructor Destroy;override;|47: procedure doWrite(var _D:TData; idx:word);|46: procedure doRead(var _D:TData; idx:word);|5: end;|0:|14:implementation|0:|31:constructor THiAsmClass.Create;|5:begin|14: Data := nil;|12: hMMF := 0;|104: hMMF := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, 10000000, 'MySuperPuperName');|62: Data := MapViewOfFile(hMMF, FILE_MAP_WRITE, 0, 0, 10000000);|63: if Data <> nil then Strm := NewExMemoryStream(Data,10000000);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnmapViewOfFile(Data);|20: CloseHandle(hMMF);|12: Strm.free;|4:end;|0:|30:procedure THiAsmClass.doWrite;|24:var s:string; i:integer;|5:begin|21: s := ToString(_D); |17: i := length(s);|34: if not Assigned(Strm) then exit;|21: Strm.Position := 0;|18: Strm.Write(i,4);|23: Strm.Write(s[1],i); |4:end;|0:|29:procedure THiAsmClass.doRead;|24:var s:string; i:integer;|5:begin|34: if not Assigned(Strm) then exit;|21: Strm.Position := 0;|17: Strm.Read(i,4);|17: SetLength(s,i);|20: Strm.Read(s[1],i);|10:_debug(i);|32: _hi_CreateEvent(_D,@onRead,s);|4:end;|0:|0:|0:|4:end.|
link(onRead,2797906:doText,[(492,349)(492,328)(380,328)(380,300)])
}
Add(Menu,9436858,273,336)
{
Menu=#5:Write|4:Read|
Point(onSelectNum)
link(onSelectNum,12401350:doEvent,[])
}
Add(IndexToChanel,12401350,336,343)
{
link(onEvent1,2298906:doData,[])
link(onEvent2,2371655:doRead,[])
}
Add(DoData,2298906,392,343)
{
link(onEventData,2371655:doWrite,[])
link(Data,2797906:Text,[])
}
Какие будут выводы