Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение стандартного потока вывода, FILE to System::IO::Stream? 
:(
    Опции темы
AxelWind
Дата 29.11.2010, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Переделываю одну консольную программку (точнее библиотеку). Там есть функция, на вход которой поступает переменная типа FILE *. Возможно ли каким-то образом получить строку, которая как раз и записывается в эту переменную без вывода в файл? С файлом-то получается, но уж очень не хочется создавать что-то левое... Вывод на консоль соответственно тоже не вариант...
PM MAIL   Вверх
Экскалупатор
Дата 29.11.2010, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



AxelWind, ну очевидно что эта переменная где то инициализируется(именем файла) там и можно.
PM MAIL ICQ   Вверх
AxelWind
Дата 29.11.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Сейчас объясню чуть подробнее! smile
Есть код
Код

FILE *stream = fopen("c:\\1", "w+");
write_to_stream(stream);
fclose( stream );


Соответственно, я могу вывести результат работы функции либо на консоль, задав в качестве параметра stdout, либо в файл. Сама функция зашита в либе! Есть ли возможность не выводить это файл, а преобразовать к какому-либо виду, например, в строку (что в принципе является её результатом), или байтовый массив, или .Netовский поток? 
PM MAIL   Вверх
Экскалупатор
Дата 29.11.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



мне кажется что проще всего написать эту функцию самому. (так пара строк всего будет) и не парится...
PM MAIL ICQ   Вверх
Экскалупатор
Дата 29.11.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



кстати, забыл спросить, а почему в разделе .NET этот вопрос? а не в разделе по Си/С++?
PM MAIL ICQ   Вверх
jonie
Дата 29.11.2010, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



Цитата(AxelWind @  29.11.2010,  11:03 Найти цитируемый пост)
Есть ли возможность не выводить это файл, а преобразовать к какому-либо виду, например, в строку (что в принципе является её результатом), или байтовый массив, или .Netовский поток?  

нет, вы не сможете напрямик конвертнуть FILE* в нечто .NET-кое, или "строку". Потому что как минимум FILE* в разных реализациях CRT разный.

Но, возможно, вы сможете указать что FILE* на самом деле именованый пайп, который вы будете читать уже .NET, общая идея тут: http://codeguru.earthweb.com/forum/showthread.php?t=361431

Ну, или вы можете сделать отдельную консольную утилиту, вывод которой на stdout будете читать через перенаправление ввода-вывода...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
AxelWind
Дата 29.11.2010, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Цитата(Экскалупатор @ 29.11.2010,  13:05)
мне кажется что проще всего написать эту функцию самому. (так пара строк всего будет) и не парится...

Дело в том, что функция производит вычисления... А реализации того, что она делает нет... Поэтому надо её использовать..
Цитата(Экскалупатор @ 29.11.2010, 13:52)
кстати, забыл спросить, а почему в разделе .NET этот вопрос? а не в разделе по Си/С++?

Библиотека на си, а переделать надо в .Netовскую программу с использованием Windows Forms...  smile 
Цитата(jonie @ 29.11.2010, 20:55)
нет, вы не сможете напрямик конвертнуть FILE* в нечто .NET-кое, или "строку". Потому что как минимум FILE* в разных реализациях CRT разный.

Но, возможно, вы сможете указать что FILE* на самом деле именованый пайп, который вы будете читать уже .NET, общая идея тут: http://codeguru.earthweb.com/forum/showthread.php?t=361431

Ну, или вы можете сделать отдельную консольную утилиту, вывод которой на stdout будете читать через перенаправление ввода-вывода...

Спасибо огромное! буду разбираться! smile


Это сообщение отредактировал(а) AxelWind - 29.11.2010, 22:32
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.