Текущий архив: 2006.08.27;
Скачать: CL | DM;
Вниз
Обмен данными между процессами Найти похожие ветки
← →
Сергей_С (2006-07-12 09:19) [0]Господа, подскажите, каким образом можно обмениваться данными меджу процессами, запущенными одновременно в одной ОС. Какой-нибудь простой и стабильный способ.
Варианты через файловую систему, DDE, OLE, COM - просьба не рассматривать.
Данные имеют бинарный формат.
Заранее спасибо.
← →
Сергей М. © (2006-07-12 09:34) [1]см. WM_COPYDATA
← →
Юрий Зотов © (2006-07-12 10:15) [2]Еще вариант - CreateFileMapping.
← →
Сергей М. © (2006-07-12 10:16) [3]Еще вариант - NamedPipes.
← →
han_malign © (2006-07-12 10:38) [4]Socket, MailSlot, семафоры и мутанты
← →
GrayFace © (2006-07-12 14:15) [5]А еще Event"ы
← →
Юрий Зотов © (2006-07-12 15:00) [6]Эта... мож, я че не понимаю, но какое отношение семафоры, мутанты (мьютексы?) и Event"ы имеют к обмену данными между процессами?
← →
DrPass © (2006-07-12 15:17) [7]
> какое отношение семафоры, мутанты (мьютексы?) и Event"ы
> имеют к обмену данными между процессами?
Ну, один процесс может чего-нибудь написать в файл и установить... мм...мутанта :D. Второй - определить наличие мутанта и после этого считать из файла. Чем не обмен? :)))
← →
Rial © (2006-07-12 15:39) [8]
> Юрий Зотов © (12.07.06 15:00) [6]
>
> Эта... мож, я че не понимаю, но какое отношение семафоры,
> мутанты (мьютексы?) и Event"ы имеют к обмену данными между
> процессами?
А что в этом такого ?
У меня как то 2 приложения Event-ами 2 МБ данных передавали друг другу...
Правда, с остальными 2-мя сложнее уже.
← →
Игорь Шевченко © (2006-07-12 15:47) [9]
> но какое отношение семафоры, мутанты (мьютексы?) и Event"ы
> имеют к обмену данными между процессами?
Косвенное
← →
Медвед (2006-07-12 15:48) [10]>Rial © (12.07.06 15:39) [8]
>У меня как то 2 приложения Event-ами 2 МБ данных передавали друг другу...
Messagaми ?
← →
Сергей М. © (2006-07-12 15:49) [11]
> DrPass © (12.07.06 15:17) [7]
> DrPass © (12.07.06 15:17) [7]
Мьютексы, семафоры и ивенты - не более чем объекты интра/интерпроцессной синхронизации. К интерпроцессному инф.обмену они не имеют отношения.
← →
han_malign © (2006-07-12 15:51) [12]
> Эта... мож, я че не понимаю
Ну, на трех Event-ах можно организовать "полноценный" бинарный поток. Изврат конечно, но возможность то есть... :)
← →
Юрий Зотов © (2006-07-12 15:53) [13]> DrPass © (12.07.06 15:17) [7]
К синхронизации передачи данных все это, конечно, относится. А как это относится к самой передаче данных? Никак. А она не обязана быть синхронной, да и вопрос вовсе не о синхронизации.
> Rial © (12.07.06 15:39) [8]
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCTSTR lpName
);
Не понимаю, куда здесь можно запихнуть 2 метра данных. В чем я неправ?
← →
DrPass © (2006-07-12 15:53) [14]
> Сергей М. © (12.07.06 15:49) [11]
Смайлики видел?
← →
han_malign © (2006-07-12 16:56) [15]
> Не понимаю, куда здесь можно запихнуть 2 метра данных.
while(WaitForSingleObject(hReceiveReadyEvent, INFINITE) = WAIT_OBJECT_0)do begin
if(...)then SetEvent(hBitStateEvent) else ResetEvent(hBitStateEvent);
SetEvent(hDataReadyEvent);
end;
SetEvent(hReceiveReadyEvent);
while(WaitForSingleObject(hDataReadyEvent, INFINITE) = WAIT_OBJECT_0)do begin
if(WaitForSingleObject(hBitStateEvent, 0) = WAIT_OBJECT_0)
then ...
else ...;
SetEvent(hReceiveReadyEvent);
end;
битовый(булевый) поток :)))
← →
Чапаев © (2006-07-12 17:38) [16]А почему о именованных каналах никто не вспомнил?
← →
Rial © (2006-07-12 17:52) [17]
> han_malign © (12.07.06 16:56) [15]
>
>
> > Не понимаю, куда здесь можно запихнуть 2 метра данных.
>
Фактически, телепатия.
> Медвед (12.07.06 15:48) [10]
>
> Messagaми ?
А можно и так. Тут аж по несколько байт передается, в lWaram и wParam!
Можно еще передавать информацию, передавая сообщения с
WM_USER по WM_USER + $100. Еще байтик...
Бред все это, но мне пригождалось.
И скорость у второго способа не такая уж и низкая.
О подводных камнях не буду уж говорить ...
← →
DVM © (2006-07-12 18:15) [18]
> Какой-нибудь простой и стабильный способ.
ИМХО сокеты самое лучшее. И универсальное.
← →
DrPass © (2006-07-12 18:19) [19]
> Чапаев © (12.07.06 17:38) [16]
> А почему о именованных каналах никто не вспомнил?
Вспомнили еще в третьем посте этой ветки
> DVM © (12.07.06 18:15) [18]
>
> > Какой-нибудь простой и стабильный способ.
>
> ИМХО сокеты самое лучшее. И универсальное.
Ты не прав. Интересно, как ты будешь работать через сокеты, если на машине нет TCP/IP? Уж лучше по нуль-модему :)
← →
han_malign © (2006-07-12 18:25) [20]
> если на машине нет TCP/IP
127.0.0.1
← →
DVM © (2006-07-12 18:30) [21]
> Интересно, как ты будешь работать через сокеты, если на
> машине нет TCP/IP
Трудно найти такую машину. К тому же сокеты это не только TCP/IP и даже IP
← →
DrPass © (2006-07-12 21:20) [22]
> han_malign © (12.07.06 18:25) [20]
И что?
> DVM © (12.07.06 18:30) [21]
Да всяко бывает. Видел бы ты, сколько юзеров сидят еще под Win9x... В любом случае, сетевые технологии должны использоваться для сетевых приложений. Гонять данные из одной программы в другую через весь стек сетевых протоколов туда и обратно - плохое занятие, если есть альтернативные 100% работающие и при этом более эффективные и простые технологии.
← →
MikProg © (2006-07-12 21:25) [23]
> Юрий Зотов © (12.07.06 10:15) [2]
Прав однако! :)
← →
Leonid Troyanovsky © (2006-07-12 22:02) [24]
> han_malign © (12.07.06 15:51) [12]
> Ну, на трех Event-ах можно организовать "полноценный" бинарный
> поток. Изврат конечно, но возможность то есть... :)
А, почему, собс-но, не на двух?
Изврат, конечно, но возможность-то есть.
--
Regards, LVT.
← →
Сергей_С (2006-07-13 06:57) [25]ого, сколько насоветовали :)
Всем спасибо!
← →
DVM © (2006-07-13 10:09) [26]
> В любом случае, сетевые технологии должны использоваться
> для сетевых приложений
Как ни странно изначально сокеты предназначались вовсе не для сетевых приложений.
← →
GrayFace © (2006-07-13 11:38) [27]Leonid Troyanovsky © (12.07.06 22:02) [24]
А, почему, собс-но, не на двух?
Изврат, конечно, но возможность-то есть.
Как?
← →
DrPass © (2006-07-13 11:49) [28]
> Как ни странно изначально сокеты предназначались вовсе не
> для сетевых приложений
Странно. А для чего, когда, и на какой платформе? И где об этом можно прочитать?
← →
Игорь Шевченко © (2006-07-13 12:18) [29]
> А для чего, когда, и на какой платформе?
Для межпроцессного взаимодействия, на платформе unix
← →
Evgeny V © (2006-07-13 13:21) [30]
> GrayFace © (13.07.06 11:38) [27]
Изврат конечно - но можно, именованные события - одно для сигнала о том, что данные установлены, а второе собственно бит данных - но изврат.
Второй вариант, более корректный на мой взгляд, но тоже изврат, те же события - взвод одного означает бит 0, другого бит 1.
LOL
Не думаю, что возникнет необходимость пользоваться такими способами...
← →
GrayFace © (2006-07-13 14:01) [31]Нет, смотри как с 3:
E1 - принимающий принял данные
E2 - бит данных = 0
E3 - бит данных = 1
0) Все E = 0
1) Принимающий:
for i:=1 to размер do
E1 = 1
Wait for E2 или E3
В зависимости от результата ожидания ставит очередной бит
2) Отправляющий:
for i:=1 to размер do
E1 = 0
E2 или E3 = 1 в зависимости от бита данных
Wait for E1
3) goto 1)
Как обойтись без E1?
← →
GrayFace © (2006-07-13 14:04) [32]0) и 3) - это я забыл убрать.
← →
Сергей_С (2006-07-13 14:30) [33]Господа, тысячу извинений, что прерываю жаркую дискуссию.
Выбрал вариант с использованием CreateFileMapping.
С закладкой данных проблем не возникло.
Возникли непонятки с извлечением:FpoBaseAddress := MapViewOfFile(FhFileMapObj, FILE_MAP_WRITE, 0, 0, 0);
После вызова этой функции я получаю указатель на начальный адрес данных объекта файлового отображения.
Но, скажите мне, что мне дальше делать с этим указателем? Если бы я знал размер блока, который там лежит, то все понятно. Но я его не знаю! Получаю только адрес. Данные бинарные, поэтому никакие stValue := PChar(FpoBaseAddress) - не подойдут.
Или я что-то неправильно понимаю?
← →
Игорь Шевченко © (2006-07-13 14:48) [34]
> Если бы я знал размер блока, который там лежит, то все понятно.
> Но я его не знаю! Получаю только адрес
А в первые два(четыре) байта положить размер блока ?
← →
Evgeny V © (2006-07-13 14:51) [35]
> GrayFace © (13.07.06 14:01) [31]
Посигналь обратно неустановленным Event (по твоему примеру один из E2 или Е3), отправляющий знает какой это эвент и будет ждать его, как синхронизацию. Вообще это не метод на мой взгляд, ни с двумя ни с тремя ...так что лучше стандртными способами воспользоваться.
> Сергей_С (13.07.06 14:30) [33]
Пример есть для дельфи 6 в директории DEMOS в IPCDEMOS.
← →
Сергей_С (2006-07-13 15:01) [36]2Игорь Шевченко © (13.07.06 14:48) [34]
А в первые два(четыре) байта положить размер блока ?
Положить не проблема.
Другого способа нет что-ли?
← →
Игорь Шевченко © (2006-07-13 15:06) [37]
> Другого способа нет что-ли?
Есть. http://www.delphimaster.ru/articles/named_pipes/index.html
← →
Сергей_С (2006-07-13 15:08) [38]2 Игорь Шевченко © (13.07.06 15:06) [37]
Я имел в виду другой способ определения размера буфера, без его передачи вместе с буфером :). Не уходя от использования FileMapping.
← →
Игорь Шевченко © (2006-07-13 15:11) [39]Сергей_С (13.07.06 15:08) [38]
> Я имел в виду другой способ определения размера буфера,
> без его передачи вместе с буфером :). Не уходя от использования
> FileMapping.
Нету. FileMapping - это просто кусок памяти. А сколько туда положено, знает только положивший на момент положения и если он никому об этом явно не скажет, то размер положенного останется тайной.
← →
Сергей_С (2006-07-13 15:13) [40]2 Игорь Шевченко © (13.07.06 15:11) [39]
ясно
← →
Юрий Зотов © (2006-07-13 19:07) [41]> Сергей_С (13.07.06 15:08) [38]
> другой способ определения размера буфера, без его передачи вместе с
> буфером :). Не уходя от использования FileMapping.
Например, после закладки данных в буфер послать сообщение, а через его параметр(ы) передать размер буфера. Это же сообщение послужит уведомлением о том, что данные готовы и их можно брать. А если еще и посылать его через SendMessage, то получаем полную синхронизацию работы с данными.
При использовании WM_COPYDATA получим практически тот же механизм.
← →
Verg © (2006-07-13 19:20) [42]Обменивайся через сокеты. Поверь, это решение никогда тебя не разочарует.
Ты окажешься
вне привязки к хосту,
вне привязки к платформе, и, практически,
вне ... к ОС.
← →
MikProg © (2006-07-13 19:27) [43]
> FileMapping - это просто кусок памяти.
HANDLE CreateFileMapping(
HANDLE hFile,
LPSECURITY_ATTRIBUTES lpAttributes,
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
LPCTSTR lpName
);
Это файловый объект (как дисковый файл, пайп и пр.) и с ним можно работать как с файлом, а значит можно выполнять Read пока не EOF.
Почемуто в хелпе к 2005 студии не написано, что если в качестве хендля использовать FFFF... то файл будет создан в составе своп файла, т.е. абсолютно незаметно.
← →
Сергей_С (2006-07-13 21:28) [44]2 Юрий Зотов © (13.07.06 19:07) [41]
Например, после закладки данных в буфер послать сообщение, а через его параметр(ы) передать размер буфера.
Этот путь понятен :) Я до последнего надеялся, что механизм с FileMapping несет в себе также и информацию о размере буфера.
Все-таки "кусок", как его обозвал Игорь - это нечто, имеющее конечные размеры. Но, как выяснилось, это не "кусок", а просто начало пирога. А жаль.
2 Verg © (13.07.06 19:20) [42]
Поверь, это решение никогда тебя не разочарует
Не силен в сетевых технологиях, но что-то мне подсказывает, что механизм с сокетами не будет работать при отсутствии хотя бы одного активного сетевого интерфейса.
Да и вообще, как-то рука не поднимается использовать механизм сетевого обмена для межпроцессного взаимодействия. Поживем - увидим.
← →
GrayFace © (2006-07-13 23:12) [45]Evgeny V © (13.07.06 14:51) [35]
Посигналь обратно неустановленным Event (по твоему примеру один из E2 или Е3), отправляющий знает какой это эвент и будет ждать его, как синхронизацию. Вообще это не метод на мой взгляд, ни с двумя ни с тремя ...так что лучше стандртными способами воспользоваться.
Ээ. А как ждать Reset-анья Event"а?
← →
Verg © (2006-07-14 09:38) [46]
> Да и вообще, как-то рука не поднимается использовать механизм
> сетевого обмена для межпроцессного взаимодействия. Поживем
> - увидим.
Вам виднее. Однако, применение более общих методов всегда являлось предпочитителнее применению частных.
> Не силен в сетевых технологиях, но что-то мне подсказывает,
> что механизм с сокетами не будет работать при отсутствии
> хотя бы одного активного сетевого интерфейса.
Да, по крайней мере loopback интерфейс должен быть активен.
← →
Slym © (2006-07-14 10:09) [47]Demos\Ipcdemos\
← →
Игорь Шевченко © (2006-07-14 10:33) [48]MikProg © (13.07.06 19:27) [43]
> Это файловый объект (как дисковый файл, пайп и пр.) и с
> ним можно работать как с файлом, а значит можно выполнять
> Read пока не EOF.
Пробовал ? Результаты в студию.
← →
MikProg © (2006-07-14 22:50) [49]
> Игорь Шевченко © (14.07.06 10:33) [48]
Автору вопроса бесплатно. А вам даш на даш! Обещаете навсегда оставить менторский тон?
← →
Leonid Troyanovsky © (2006-07-14 22:53) [50]
> MikProg © (14.07.06 22:50) [49]
> Автору вопроса бесплатно. А вам даш на даш! Обещаете навсегда
> оставить менторский тон?
Ты не умничай - просто рукой укажи (с)
--
Regards, LVT.
← →
Ketmar © (2006-07-15 00:14) [51]>MikProg © (14.07.06 22:50) [49]
не раньше, чем участники форумов пообещают не писать ерунды.
← →
atruhin © (2006-07-15 10:06) [52]> [46] Verg © (14.07.06 09:38)
Да, по крайней мере loopback интерфейс должен быть активен.
Это с чего бы? Если на компьютере нет сетевой карты, то и TCP/IP не установлен. Знаю точно, потому что приходилось в подобном случае ручками устанавливать Microsoft loopback adapter. (название могу переврать)
← →
Ketmar © (2006-07-15 11:19) [53]хм. раньше у меня карты не было. TCP/IP -- был. я снова что-то сделал не так?
← →
GrayFace © (2006-07-15 18:06) [54]<offtopic>
Игорь Шевченко ©
Не подскажите мыло?
</offtopic>
← →
MikProg © (2006-07-15 21:56) [55]
> не раньше, чем участники форумов пообещают не писать ерунды.
Очевидно одного из нас вводят в заблуждение слова хелпа или вы пробовали и не получилось?
MS Studio 2005:
Windows Me/98/95: File handles that are used to create file mapping objects must not be used in subsequent calls to file I/O functions, such as ReadFile and WriteFile. In general, if a file handle is used in a successful call to the CreateFileMapping function, do not use that handle until you close the corresponding file mapping object.
В то время как MS Help к D7 зарпещает оное действие только для:
Windows 95: File handles that have been used to create file-mapping objects must not be used in subsequent calls to file I/O functions, such as ReadFile and WriteFile. In general, if a file handle has been used in a successful call to the CreateFileMapping function, do not use that handle unless you first close the corresponding file-mapping object.
← →
Игорь Шевченко © (2006-07-15 22:05) [56]MikProg © (13.07.06 19:27) [43]
> > FileMapping - это просто кусок памяти.
>
> HANDLE CreateFileMapping(
> HANDLE hFile,
> LPSECURITY_ATTRIBUTES lpAttributes,
> DWORD flProtect,
> DWORD dwMaximumSizeHigh,
> DWORD dwMaximumSizeLow,
> LPCTSTR lpName
> );
> Это файловый объект (как дисковый файл, пайп и пр.) и с
> ним можно работать как с файлом, а значит можно выполнять
> Read пока не EOF.
> Почемуто в хелпе к 2005 студии не написано, что если в качестве
> хендля использовать FFFF... то файл будет создан в составе
> своп файла, т.е. абсолютно незаметно.
> Очевидно одного из нас вводят в заблуждение слова хелпа
> или вы пробовали и не получилось?
> MS Studio 2005:
> Windows Me/98/95: File handles that are used to create
> file mapping objects must not be used in subsequent calls
> to file I/O functions, such as ReadFile and WriteFile. In
> general, if a file handle is used in a successful call to
> the CreateFileMapping function, do not use that handle until
> you close the corresponding file mapping object.
> В то время как MS Help к D7 зарпещает оное действие только
> для:
> Windows 95: File handles that have been used to create file-
> mapping objects must not be used in subsequent calls to
> file I/O functions, such as ReadFile and WriteFile. In general,
> if a file handle has been used in a successful call to
> the CreateFileMapping function, do not use that handle unless
> you first close the corresponding file-mapping object.
"Беда в том, Шариков, что вы несете чушь, и, что самое страшное, несете ее безапелляционно"
← →
MikProg © (2006-07-15 23:47) [57]Дешевые понты. Фраза из документации или пример кода спасет вашу репутацию. А пока видно что вы о файлмаппинге знаете понаслышке.
← →
Игорь Шевченко © (2006-07-16 00:41) [58]MikProg © (15.07.06 23:47) [57]
Нет, дорогой друг, это ты приведи пример кода чтения по filemapping handle до eof, согласно своему утверждению
> Это файловый объект (как дисковый файл, пайп и пр.) и с
>
> ним можно работать как с файлом, а значит можно выполнять
>
> Read пока не EOF.
Вот когда приведешь, тогда продолжим дискуссию. Еще Рихтера почитай, который Джеффри. Он про файлмаппинг много интересного писал, а главное, доходчиво.
← →
MikProg © (2006-07-16 09:19) [59]http://www.soft32.ru/literature.shtml?topic=visual&book=1&page=head17.htm
"Пальцем покажи" ©
Ну и? Пересказ хелпа для не знающих ангельского вижу, но не боле.
← →
Игорь Шевченко © (2006-07-16 19:25) [60]MikProg © (16.07.06 09:19) [59]
Где код чтения из FileMapping до Eof ?
← →
MikProg © (2006-07-16 22:08) [61]Трындец!!! Полный!!! Этож не Библия! Это макулатурка для начинающих!
← →
Игорь Шевченко © (2006-07-16 23:46) [62]MikProg © (16.07.06 22:08) [61]
Дорогой друг, я по-прежнему жду твоего кода чтения до Eof с помощью Handle, полученного по CreateFileMapping.
← →
Суслик © (2006-07-17 00:08) [63]о детский сад продолжается
ЗЫ.
Игорь, сам знаешь, что не всех можно научить :)
Некоторых просто не берут в 9 класс, а отправляют в техникум, можно клинарный.
← →
Игорь Шевченко © (2006-07-17 00:11) [64]Суслик © (17.07.06 00:08) [63]
Дима я был бы тебе крайне признателен, если бы свое мнение ты выражал бы не столь публично, а, например, по аське.
← →
Ketmar © (2006-07-17 03:40) [65]MikProg, неуважаемый, а не пошли бы вы читать мануалы? прежде чем давать "советы космического масштаба и космической же глупости"...
поверьте (проверить вы не можете по понятной причине), что здесь собрались далеко не дилетанты... и уж Игорь -- однозначно не дилетант. и если он говорит -- то знает...
← →
tButton © (2006-07-17 04:56) [66]не, я может глупость скажу... но разве "буфер обмена" (который clipboard) он не для обмена данными между приложениями? =)
← →
Юрий Зотов © (2006-07-17 07:32) [67]> tButton © (17.07.06 04:56) [66]
Да, но он для пользователя. Вряд ли кому понравится программа, которая затирает буфер обмена.
"The clipboard is user-driven. A window should transfer data to or from the clipboard only in response to a command from the user. A window must not use the clipboard to transfer data without the user"s knowledge".
Цитата - из MSDN. Скопирована через буфер обмена. Это удалось сделать потому, что у меня таких программ, к счастью, не установлено...
:о)
← →
tButton © (2006-07-17 08:06) [68]хм. оно конечно понятно.
но ведь ситуация самая типичная.
* бэкапим буфер
* пишем в него свои данные
* сигналим второе программе, чтоб приняла данные
* вторая программа принимает данные и сигналит первой что всё путём
* первая программа возвращает содержимое буфера на место
для красоты можно либо запретить пользователю что либо делать, либо предупредить его
ну и если программы обмениваются довольно часто и работают в фоне, то наверное такой способ не подойдёт.
ПыСы
я бы вообще не выпендривался, а сделал обмен данными через сокеты
← →
MikProg © (2006-07-17 08:55) [69]The MapViewOfFile function returns a pointer to the file view. By dereferencing a pointer in the range of addresses specified in MapViewOfFile, an application can read data from the file and write data to the file. Writing to the file view results in changes to the file mapping object. The actual writing to the file on disk is handled by the system. Data is not actually transferred at the time the file mapping object is written to. Instead, much of the file input and output (I/O) is cached to improve general system performance. Applications can override this behavior by calling the FlushViewOfFile function to force the system to perform disk transactions immediately.
Специально для корифеев болдом
Data is not actually transferred at the time the file mapping object is written to Instead, much of the file input and output (I/O) is cached to improve general system performance. Applications can override this behavior by calling the FlushViewOfFile function to force the system to perform disk transactions immediately
Специально для корифеефилов
by calling the FlushViewOfFile function to force the system to perform disk transactions immediately
← →
Юрий Зотов © (2006-07-17 08:57) [70]> tButton © (17.07.06 08:06) [68]
Еще можно передавать данные, например, через Excel. По той же схеме.
:о)
← →
Юрий Зотов © (2006-07-17 09:05) [71]> MikProg © (17.07.06 08:55) [69]
Не вмешиваясь в вашу дискуссию, все же замечу, что 20 строчек кода были бы в 20 раз убедительнее, чем 20 строчек текста. ИМХО.
:о)
← →
tButton © (2006-07-17 09:12) [72]
> Еще можно передавать данные, например, через Excel. По той
> же схеме.
> :о)
метод универсален в своей примитивности =)
← →
Ketmar © (2006-07-17 10:23) [73]>MikProg © (17.07.06 08:55) [69]
код где? рабочий код?
← →
evvcom © (2006-07-17 10:32) [74]
> [73] Ketmar © (17.07.06 10:23)
> >MikProg © (17.07.06 08:55) [69]
> код где? рабочий код?
Да он, похоже, только баснями кормить умеет. Крылов наш. :)
← →
Игорь Шевченко © (2006-07-17 10:32) [75]MikProg © (17.07.06 08:55) [69]
Где код Read до Eof ? Если сказал ерунду, то хоть признайся в этом, а не пости цитаты из help"а, не относящиеся к твоему заявлению.
← →
MikProg © (2006-07-17 10:33) [76]Там же где и ваш и Суслика и Шевченко. Теореетики. :)
← →
tButton © (2006-07-17 10:40) [77]<offtop>
> Теореетики. :)
хорошая опечатка =)
ещё вариант - "Теоеретики" =)
</offtop>
← →
Игорь Шевченко © (2006-07-17 10:45) [78]MikProg © (17.07.06 10:33) [76]
LMD
← →
Fay © (2006-07-17 11:11) [79]2 MikProg © (17.07.06 10:33) [76]
Ступай и не греши. Твой бред тянет на орешник, только читать его грустно.
← →
sniknik © (2006-07-17 11:20) [80]краткая аллегорическая стенограмма спора ;), для тех кому всю ветку влом читать. суть так сказать.
- угадаю мелодию с шести нот!
- я, с пяти!
- с четырех!
- трех!
- двух!
- с одной!!!
- это невозможно. угадывай!!!
- нет это возможно. сам угадывай!!! теоретик.
последние две строчки повторяются в периоде. ноты по количеству это методы решений.
p.s. тоже неохота "встревать", но всетаки кажется логичным показать как это делается тому кто говорит, что это возможно, а не тому кто говорит невозможно (ему то и показывать нечего. если решения нет. то его нет.).
← →
MikProg © (2006-07-17 11:48) [81]
> хорошая опечатка =)
> ещё вариант - "Теоеретики" =)
Мда опечатался. Д.б. "Теореееетики" :)
Уговорили. Код будет. Но послезавтра (перевод с С).
BTW. Прошу отметится здесь тех кто пробовал и не получилось. Этих будем считать заблуждающимися, остальных же теореееетиками :)
← →
Игорь Шевченко © (2006-07-17 11:52) [82]MikProg © (17.07.06 11:48) [81]
> Но послезавтра (перевод с С).
Можно не переводить, тут С тоже понимают...
← →
Fay © (2006-07-17 12:05) [83]На C даже лучше...
Страницы: 1 2 3 вся ветка
Текущий архив: 2006.08.27;
Скачать: CL | DM;
Память: 0.69 MB
Время: 0.031 c