nesco писал(а):
Ну, с чем тебя и поздравляю
Ты забыл привести еще несколько цитат.
Galkov писал(а):
Судя по написанному
tsdima - не только у меня.
Galkov писал(а):
Вон, оказывается тебе коллега
tsdima, все уже сто раз растолковал, да и я уже по третьему кругу иду, кажется...
И имя ему, соответствующее функциональности, уже придумано:
tsdima писал(а):
nesco, назови компонент
SharedMemory (или даже
SharedStream)
Ну это так, на всякий случай, чтобы иронией не захлебнуться....
nesco писал(а):
последний фиг может быть больше 64 кб, сколько ни пытался, не дает создать больше
#sha
Add(MainForm,11176470,49,49)
{
Left=20
Top=105
Width=527
link(onCreate,2797906:doLoad,[])
}
Add(RichEdit,2797906,168,42)
{
Left=10
Top=35
Width=495
Height=225
Align=5
FileName=".\compiler\Fpc\kol.pas"
ScrollBars=3
}
Add(InlineCode,2371655,224,105)
{
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;|16: Data:PChar;|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|104: hMMF := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, 10000000, 'MySuperPuperName');|62: Data := MapViewOfFile(hMMF, FILE_MAP_WRITE, 0, 0, 10000000);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnmapViewOfFile(Data);|20: CloseHandle(hMMF);|4:end;|0:|30:procedure THiAsmClass.doWrite;|24:var s:string; i:integer;|5:begin|21: s := ToString(_D); |17: i := length(s);|20: Move(i,Data[0],4);|23: Move(s[1],Data[4],i);|4:end;|0:|29:procedure THiAsmClass.doRead;|24:var s:string; i:integer;|5:begin|20: Move(Data[0],i,4);|17: SetLength(s,i);|23: Move(Data[4],s[1],i);|32: _hi_CreateEvent(_D,@onRead,s);|4:end;|0:|0:|0:|4:end.|
link(onRead,2797906:doText,[(268,111)(268,90)(156,90)(156,62)])
}
Add(Menu,9436858,49,98)
{
Menu=#5:Write|4:Read|
Point(onSelectNum)
link(onSelectNum,12401350:doEvent,[])
}
Add(IndexToChanel,12401350,112,105)
{
link(onEvent1,2298906:doData,[])
link(onEvent2,2371655:doRead,[])
}
Add(DoData,2298906,168,105)
{
link(onEventData,2371655:doWrite,[])
link(Data,2797906:Text,[])
}
1) Делаю запуск схемы - получаю полный KOL
2) Делаю запуск второй копии - получаю тоже полный KOL
3) Во второй делаю Read - получаю пустой текст
4) В первой делаю Write
5) Во второй снова делаю Read - и снова получаю полный KOL
Вроде он побольше, чем 64К будет.
Вывод: не морочь людям голову про 64К
И кстати, для для тех кто в бронепоезде:
размер аллокации квантуется по 4К
nesco писал(а):
типа, нужна общая проекция какого либо файла, присоединенного или созданного в памяти (
Вообще-то, типа нужен элемент, воспринимаемый пользователем так же как и MemoryStream/FileStream, но обладающий небольшими фишками:
1) Глобальной видимостью из других процессов
2) Возможностью (не обязательной) связать его с куском терабайтного файла
Один такой элемент, и все.
Не надо больше ничего.
Уже даже точки и св-ва ему написали....
И не надо сочинять за меня какие-то "протоколы обмена"
А какими терминами это у тебя в голове формулируется - пусть никто и не знает...
Ибо мне тоже уже трудно как-то понять набор слов, тобою произносимый.
Все, на самом деле, гораздо проще и понятней, чем оно у тебя в голове есть.