Re[10]: Почему Delphi всё еще жив?!
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.10.10 21:02
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


g>> Примерно так:

g>>
g>> [DllImport("Kernel32.dll")]
g>> private static extern int GetWindowsDirectory(StringBuilder buffer, int cbSize);

g>> public static string GetWindowsDirectory()
g>> {
g>>     var sb = new StringBuilder();
g>>     var size = GetWindowsDirectory(sb, sb.Capacity);
g>>     if (size > sb.Capacity)
g>>     {
g>>         sb.Capacity = size;
g>>         GetWindowsDirectory(sb, size);
g>>     }
g>>     return sb.ToString();
g>> }
g>>


H>Сравни
Автор: hattab
Дата: 20.10.10

Нету в варианте делфи обработки ошибок, да и кто мешает почти также написать?
var sb = new StringBuilder(MAX_PATH);
GetWindowsDirectory(sb, sb.Capacity);
return sb.ToString();


Ну и ты же понимаешь что в .NET нету необходимости писать такой код
то есть в реальном проекте будет

Re[17]: Почему Delphi всё еще жив?!
От: hattab  
Дата: 19.10.10 21:02
Оценка:
Здравствуйте, gandjustas, Вы писали:

g> Вопрос твой крайне глуп по своей постановке. Большинство программистов пишущих на этом самом делфи 7 не знают что такое генерики и с трудом понимают что такое юникод.


Да-да, только передовые шарпеи знают о генериках, и даже не бояться слова юникод

g> Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде.


Генерики вообще полезны лишь в алгоритмических частях, в прочем от них мало пользы.
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[14]: Почему Delphi всё еще жив?!
От: Ночной Смотрящий Россия  
Дата: 19.10.10 21:04
Оценка:
Здравствуйте, hattab, Вы писали:

НС>> H> SetLength(s, GetWindowsDirectory(PChar(s), Length(s)));


H>function GetWindowsDirectory(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall;


А как, кстати, насчет того, что функция ждет юникод, а PChar вроде как однобайтный?
Re[18]: Почему Delphi всё еще жив?!
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.10.10 21:11
Оценка: +1
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


g>> Вопрос твой крайне глуп по своей постановке. Большинство программистов пишущих на этом самом делфи 7 не знают что такое генерики и с трудом понимают что такое юникод.


H>Да-да, только передовые шарпеи знают о генериках, и даже не бояться слова юникод

Слава богу о генериках многие знают, но среди делфистов таких меньшинство.
Ты вместе оперирования фактами, статистикой и другими более-менее объективными вещами начинаешь какой-то фигней заниматься.

g>> Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде.

H>Генерики вообще полезны лишь в алгоритмических частях, в прочем от них мало пользы.
И где ты такой бред прочитал.
Считай ты сказал что "контроль типов полезен только в алгоритмических частях".
Re[15]: Почему Delphi всё еще жив?!
От: hattab  
Дата: 19.10.10 21:15
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС> НС>> 2) Где обработка ошибок?


НС> H>Что там сложного If GetWindowDirectory(...) = 0 Then RaiseLastOSError;


НС> Ишь какой хитрый. Ты полностью пример приводи.



 SetLength(s, MAX_PATH);
 If GetWindowsDirectory(PChar(s), Length(s)) = 0 Then
  RaiseLastOSError;
 SetLength(s, StrLen(PChar(s)));


Этот код не учитывает, что размера буфера не хватит, как и твой.

НС> НС>> 3) Даже в таком виде дельфовый вариант все же посложнее выглядит.


НС> H>Не смеши мои тапки. Либо в Delphi — только строка и все, либо в шарпе всякие стринг-билдеры.


НС> В шарпе StringBuilder это точно так же просто mutable строка.


Это не важно, важно что сущность лишняя простоты не добавляет.

НС> H> Да потом еще и в строку переводить.


НС> Смотря что ты потом с результатом делать будешь.


Неважно что, просто на выходе нужна строка. А то ведь я тоже могу SetLength опустить
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[11]: Почему Delphi всё еще жив?!
От: hattab  
Дата: 19.10.10 21:15
Оценка:
Здравствуйте, gandjustas, Вы писали:

g> Нету в варианте делфи обработки ошибок, да и кто мешает почти также написать?


Да что вы с этими ошибками, сам-то не видишь, что пример демонстрирует совершенно другое?

g>
g> var sb = new StringBuilder(MAX_PATH);
g> GetWindowsDirectory(sb, sb.Capacity);
g> return sb.ToString();
g>


g> Ну и ты же понимаешь что в .NET нету необходимости писать такой код


Ну так взаимодействие с нативными модулями не ограничивается WinAPI.
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[19]: Почему Delphi всё еще жив?!
От: hattab  
Дата: 19.10.10 21:18
Оценка:
Здравствуйте, gandjustas, Вы писали:

g> g>> Вопрос твой крайне глуп по своей постановке. Большинство программистов пишущих на этом самом делфи 7 не знают что такое генерики и с трудом понимают что такое юникод.


g> H>Да-да, только передовые шарпеи знают о генериках, и даже не бояться слова юникод


g> Слава богу о генериках многие знают, но среди делфистов таких меньшинство.

g> Ты вместе оперирования фактами, статистикой и другими более-менее объективными вещами начинаешь какой-то фигней заниматься.

Да-да, давай уже статистику, а то ты только ла-ла и можешь

g> g>> Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде.


g> H>Генерики вообще полезны лишь в алгоритмических частях, в прочем от них мало пользы.


g> И где ты такой бред прочитал.

g> Считай ты сказал что "контроль типов полезен только в алгоритмических частях".

Генерики это не контроль типов
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[15]: Почему Delphi всё еще жив?!
От: hattab  
Дата: 19.10.10 21:18
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС> НС>> H> SetLength(s, GetWindowsDirectory(PChar(s), Length(s)));


НС> H>function GetWindowsDirectory(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall;


НС> А как, кстати, насчет того, что функция ждет юникод, а PChar вроде как однобайтный?


Этот код универсальный. На анси-версиях Delphi это будет анси-строка, на юникод — юникод. PChar аналогично, на анси — PAnsiChar, на юникод PWideChar.
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[16]: Почему Delphi всё еще жив?!
От: Ночной Смотрящий Россия  
Дата: 19.10.10 21:21
Оценка:
Здравствуйте, hattab, Вы писали:

H>Этот код не учитывает, что размера буфера не хватит, как и твой.


Его не может не хватить, MAX_PATH это константа ОС.

НС>> В шарпе StringBuilder это точно так же просто mutable строка.


H>Это не важно, важно что сущность лишняя простоты не добавляет.


Она не лишняя. И уж про количество типов строк я бы, в случае Дельфи, помолчал бы.

НС>> Смотря что ты потом с результатом делать будешь.


H>Неважно что, просто на выходе нужна строка.


Важно. StringBuilder, повторюсь, это не специальнохитрый класс, а базовая часть библиотеки. И, кстати, если уж так хочется, можно и иммутабельный string использовать.

H> А то ведь я тоже могу SetLength опустить


И получить глюки в коде, который будет читать длину из заголовка, а не нулевой байт искать.
Re[17]: Почему Delphi всё еще жив?!
От: hattab  
Дата: 19.10.10 21:33
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС> H>Этот код не учитывает, что размера буфера не хватит, как и твой.


НС> Его не может не хватить, MAX_PATH это константа ОС.


Я просто уточнил, а то вдруг ты снова прикопаться решишь, как с обработкой ошибок.

НС> НС>> В шарпе StringBuilder это точно так же просто mutable строка.


НС> H>Это не важно, важно что сущность лишняя простоты не добавляет.


НС> Она не лишняя. И уж про количество типов строк я бы, в случае Дельфи, помолчал бы.


Конечно лишняя В Delphi то она нафиг не упрелась, а мы тут как бы о простоте. На счет типов строк... Это называется гибкость, к тому же они все совместимы по присваиванию.

НС> НС>> Смотря что ты потом с результатом делать будешь.


НС> H>Неважно что, просто на выходе нужна строка.


НС> Важно. StringBuilder, повторюсь, это не специальнохитрый класс, а базовая часть библиотеки. И, кстати, если уж так хочется, можно и иммутабельный string использовать.


Я же сказал — на выходе строка. Что непонятного? т.е. от .ToString(0, len) ты никуда не денешься.

НС> H> А то ведь я тоже могу SetLength опустить


НС> И получить глюки в коде, который будет читать длину из заголовка, а не нулевой байт искать.


А со стринг билдером так не будет Ты уж давай адекватно сравнивай.
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[30]: Почему Delphi всё еще жив?!
От: std.denis Россия  
Дата: 19.10.10 21:41
Оценка: +2
SD>>Есть еще Named folders
SD>>Другая мощная штука — AltHistory
SD>>Есть ли для Тотала такие плюшки?

I>Для тотала вагоны плагинов если ты не в курсе.

Вопрос был не достаточно конкретный? Мне не нужны вагоны с плагинами. Я писал о вполне конкретных двух фичах, которые я активно использую.
Кстати, какие там есть полезные плагины к Тоталу, кроме плагинов файловой системы, отображателей для Lister'a?

I>Например есть плагин, в котором на панели тотала будет консоль с фаром.

I>А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ?
Про свистнуть жопой CreatorCray уже ответил, разделяю мнение. Т.е. плюс Тотала в том, что его юзерям может понадобиться FAR в панели? Мне Тотал как-то вообще не нужен в панели FAR.

I>Это у тебя хрен знает где. У меня — только там где мне надо.

Ок. Расскажи про опцию, которая заставляет окошки (того же Lister'а) открываться ровно над окошком Тотала? Т.е. позиция подправится, если я перетяну Тотал в другое место или разверну на весь экран.

I>Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ?

Потому что он удобный, функциональный и лёгкий. И да, FAR поддерживает многооконность. Если использовать Conemu, то они даже отображаются так тобою любимым тулбаром.

I><...>

I>Перечисли, что из этого умеет фар ?
Условно не умеет on top, to tray, transparent. Ибо это можно реализовать плагином, или даже сторонней софтиной.
Фолдинг я вроде видел, но точно не уверен. Ну и шрифт задается глобально для консоли. Что такое в данном контексте "reuse window" я не знаю.
Как минимум встроенный редактор на 99% покрывает мои нужды. Если что-то не хватает, всегда можно настроить запуск внешнего.

Ассоциации можно настроить не только на запуск (Enter), но и на Ctrl-PgDn (вход в файл-архив), на F3, Alt-F3, F4, Alt-F4. Можно выставить глобальные альтернативные вьювер и редактор.
Re[18]: Почему Delphi всё еще жив?!
От: Ночной Смотрящий Россия  
Дата: 19.10.10 21:43
Оценка:
Здравствуйте, hattab, Вы писали:

H>Конечно лишняя В Delphi то она нафиг не упрелась


В Дельфи точно так же уперлась, там все строки мутабельные. А вот то что там нет иммутабельной строки, Дельфи совсем не красит.

H>Это называется гибкость


Т.е. наличие отдельно мутабельной и иммутабельной строк это избыточность, а пучек исключительно мутабельных строк это гибкость?

НС>> Важно. StringBuilder, повторюсь, это не специальнохитрый класс, а базовая часть библиотеки. И, кстати, если уж так хочется, можно и иммутабельный string использовать.


H>Я же сказал — на выходе строка. Что непонятного?


StringBuilder это и есть строка. Что непонятного?

H> т.е. от .ToString(0, len) ты никуда не денешься.


И длину указывать не надо, маршаллер об этом сам позаботится. Достаточно просто ToString без параметров.

НС>> И получить глюки в коде, который будет читать длину из заголовка, а не нулевой байт искать.


H>А со стринг билдером так не будет


Нет, не будет.
Re[19]: Почему Delphi всё еще жив?!
От: hattab  
Дата: 19.10.10 22:01
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС> H>Конечно лишняя В Delphi то она нафиг не упрелась


НС> В Дельфи точно так же уперлась, там все строки мутабельные. А вот то что там нет иммутабельной строки, Дельфи совсем не красит.


Есть константные параметры

НС> H>Это называется гибкость


НС> Т.е. наличие отдельно мутабельной и иммутабельной строк это избыточность, а пучек исключительно мутабельных строк это гибкость?


Тот пучек для совершенно разных вещей. Там где .net будет маршалить, в Delphi достаточно использовать конкретный тип.

НС> НС>> Важно. StringBuilder, повторюсь, это не специальнохитрый класс, а базовая часть библиотеки. И, кстати, если уж так хочется, можно и иммутабельный string использовать.


НС> H>Я же сказал — на выходе строка. Что непонятного?


НС> StringBuilder это и есть строка. Что непонятного?


Проходили уже.

This class represents a string-like object whose value is a mutable sequence of characters.


ToString у строки... ну-да, ну-да.

НС> H> т.е. от .ToString(0, len) ты никуда не денешься.


НС> И длину указывать не надо, маршаллер об этом сам позаботится. Достаточно просто ToString без параметров.


Еще и маршалер включается в работу... то-то ганджустас распевался об эффективности .net'а

НС> НС>> И получить глюки в коде, который будет читать длину из заголовка, а не нулевой байт искать.


НС> H>А со стринг билдером так не будет


НС> Нет, не будет.


Ну да, коли уже кто-то правит размер так оно конечно, только в таком случае и мне никто не мешает
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[15]: Почему Delphi всё еще жив?!
От: CreatorCray  
Дата: 19.10.10 22:03
Оценка: -1
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>>> H> SetLength(s, GetWindowsDirectory(PChar(s), Length(s)));

H>>function GetWindowsDirectory(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall;
НС>А как, кстати, насчет того, что функция ждет юникод, а PChar вроде как однобайтный?

Начнём с того что функции GetWindowsDirectory не существует вовсе.
В kernel32.dll есть только GetWindowsDirectoryA и GetWindowsDirectoryW
Один работает с ANSI буфером, другой с UTF16LE (вернее с UCS2)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: Почему Delphi всё еще жив?!
От: CreatorCray  
Дата: 19.10.10 22:03
Оценка: :))
Здравствуйте, gandjustas, Вы писали:

G>Примерно так:

G>
G>[DllImport("Kernel32.dll")]
G>private static extern int GetWindowsDirectory(StringBuilder buffer, int cbSize);
G>


Вот жеж незадача, в kernel32.dll нет экспорта с именем GetWindowsDirectory
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[16]: Почему Delphi всё еще жив?!
От: hattab  
Дата: 19.10.10 22:15
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC> НС>>> H> SetLength(s, GetWindowsDirectory(PChar(s), Length(s)));


CC> H>>function GetWindowsDirectory(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall;


CC> НС>А как, кстати, насчет того, что функция ждет юникод, а PChar вроде как однобайтный?


CC> Начнём с того что функции GetWindowsDirectory не существует вовсе.


Да ладно, понятно же, что он проецируется на W в случае .NET'а. У дельфей в анси версии на A, в юникод на W. Но есть и декларация без спецификатора, для универсальности.

CC> В kernel32.dll есть только GetWindowsDirectoryA и GetWindowsDirectoryW

CC> Один работает с ANSI буфером, другой с UTF16LE (вернее с UCS2)

По моему, с w2k все же UTF-16.
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[31]: Почему Delphi всё еще жив?!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.10.10 00:24
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Был плагин который на панели FAR просмотр картинок делал.

CC>Так что можно всё.

Можно, но не все. Буквально то что я сказал еще ни один плагин не делает

I>>Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ?

CC>Там вообще то между окнами (редактор/просмотр/панели) можно переключаться. И соотвественно редакторов и просмотров может быть много.

Ога, круто — переключаться между редакторами, когда можно обойтись без этого.
Re[11]: Почему Delphi всё еще жив?!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.10.10 00:29
Оценка: -1
Здравствуйте, gandjustas, Вы писали:

G>>>http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx

G>>>И никаких проблем

I>>Т.е. париться все таки надо ?

G>Нет.

var docs = Application.Documents;
var currentDoc = docs.Current;
var someObjects = currentDoc.SomeObjects;


За каким хреном нужно писать код выше вместо

Application.Documents.Current.SomeObjects

Можешь сходу сказать ?

Лично мне не нравится писать десять строчек вместо одной и я называю это "париться", потому что не дай бог забудешь, косяки может понадобиться искать неделями.

I>>Без этого стоит раз вызвать примерно такое Application.Documents.CurrentDocument и прога не закроется когда надо.

G>Закроется. Хотя может ты что-то другое имеешь ввиду.

Я начинаю сомневаться в твоих регалиях

Кто по твоему закроет Эксель если счетчи ссылок на него нулю не равен ?

Ввести дополнительную фичу "Эксель остается запущеным после того как наши репорты отработали" ?
Re[31]: Почему Delphi всё еще жив?!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.10.10 01:00
Оценка: -2
Здравствуйте, std.denis, Вы писали:

I>>Для тотала вагоны плагинов если ты не в курсе.

SD>Вопрос был не достаточно конкретный? Мне не нужны вагоны с плагинами. Я писал о вполне конкретных двух фичах, которые я активно использую.

Если тебе нужн делать нечто постоянно, удобно, быстро, то попробуй погуглить.

А если ты хочешь, что бы Тотал работал точь в точь как Фар то это к доктору.

Ты заметил, что перечисляешь не потребности и даже не юзкейсы, а какие то огрызки ?

"фичи" которые ты перечислил, есть в тотале "искаропки".

SD>Кстати, какие там есть полезные плагины к Тоталу, кроме плагинов файловой системы, отображателей для Lister'a?


Если в гугле забанили то помочь конечно сложно. Всего 4 вида плагинов.

I>>А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ?

SD>Про свистнуть жопой CreatorCray уже ответил, разделяю мнение. Т.е. плюс Тотала в том, что его юзерям может понадобиться FAR в панели? Мне Тотал как-то вообще не нужен в панели FAR.

Это не свистнуть жопой. Это консоль в панели тотала, что бы не надо было дурью маяться. В некоторых случаях очень удобно — получаешь как бы консольное ГУИ приложение, что бы не надо было запускать доп инстанцы всякой дряни.

Как в тотале, так это свистнуть жопой, а как фича для фара(сonemu), так это круто.

Консольщики такие консольщики

I>>Это у тебя хрен знает где. У меня — только там где мне надо.

SD>Ок. Расскажи про опцию, которая заставляет окошки (того же Lister'а) открываться ровно над окошком Тотала? Т.е. позиция подправится, если я перетяну Тотал в другое место или разверну на весь экран.

Не интересовался. Расскажи, как это делается для Фара ?

I>>Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ?

SD>Потому что он удобный, функциональный и лёгкий. И да, FAR поддерживает многооконность. Если использовать Conemu, то они даже отображаются так тобою любимым тулбаром.

Они просто табами отображаются, а не тулбаром.

Conemu это сильно для консольщиков, только нахрена нужно, не ясно, если у меня консольных прог то не осталось

SD>Фолдинг я вроде видел, но точно не уверен.


Фолдинг в консольном редакторе ? Круто, круто Я как бы тоже видел, но дерьма стараюсь не употреблять.

>Ну и шрифт задается глобально для консоли. Что такое в данном контексте "reuse window" я не знаю.


reuse window — это когда у тебя одно и то же окно используется для разных файлов. Это как раз то ради чего может быть нужен внешний редактор. Цель этой фичи — избежать большого кол.ва окон когда ты просматриваешь много файлов.

SD>Как минимум встроенный редактор на 99% покрывает мои нужды. Если что-то не хватает, всегда можно настроить запуск внешнего.


Твои — возможно. Мои — давно уже как не покрывает.

SD>Ассоциации можно настроить не только на запуск (Enter), но и на Ctrl-PgDn (вход в файл-архив), на F3, Alt-F3, F4, Alt-F4. Можно выставить глобальные альтернативные вьювер и редактор.


Можно, я в курсе. Только я не про это говорил.

Собственно, видно что ты тотала вобщем то не видел и не пробовал толком, но мнение имеешь
Re[12]: Почему Delphi всё еще жив?!
От: Head Ache  
Дата: 20.10.10 01:02
Оценка: :)
Здравствуйте, пыщьх, Вы писали:

П>Здравствуйте, BlackEric, Вы писали:


П>>>Ну вот, C# — Delphi 4:0. А что нужное есть в Delphi, чего нет в C#?


BE>>1. Работает на голом Win32.

П>0.0001% юзкейсов, где это действительно нужно
BE>>2. Ручное управление памятью.
П>IDisposable

IDisposable не имеет прямого отношения к управлению памятью. Что угодно там писать можно.
Главное — КАК реализовано! Допускается появление "полумертвых" объектов, которые очищены, но не ушли из области видимости,
и на эту чушь надо ветки ставить в каждой реализации интерфейса!
Казалось бы, что мешало сделать базовый класс с дефолтной реализацией — нет, нада интерфейс зачем-то.
Интересный эффект, если при реализации (очередной версии) класса понадобилось добавить поддержку IDisposable (а вдруг возникла необходимость дернуть неуправляемый код)
Это ВО ВСЕХ зависимых приложениях как минимум надо понавтыкать using,
а уж если класс был вложен в другой, то и тому другому классу тоже надо прикрутить IDisposable и тоже в его использовании понавтыкать using.
А если зависимых классов много, совсем весело становится.
То же — в случае отказа от IDisposable.
Итого злостное, корявое нарушение принципов ООП: изменение внутренней реализации влечет переделку пользователей открытого интерфейса класса.
Добавим к этому, что для сборщика мусора вообще нет никаких хинтов в IDisposable,
соответсвенно, сборка мусора возбудится, только когда прилетит ошибка ОС о нехватке свободной памяти или о еще какой ж... в ресурсах.
( Это если я забил и не стал переделывать зависимые приложения или не знал, что где-то в зависимой компоненте вдруг добавили вызов неуправляемого кода (о ужас! всех надо срочно поставить в известность!!!)

Ведь у нас один волшебный IDisposable на все виды ресурсов, да?
Нет специального по сокетам, окнам, временным файлам?

BE>>3. И там где нужны первые 2 пункта гораздо проще в работе чем C++

П>COM/PInvoke

COM/PInvoke проще в работе? Вместо объявления сигнатуры функций писать какую-то муть, чтобы ручками копировать память туда-сюда?
Этот аккаунт покинут.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.