Вопрос № 28226: Уважаемые Эксперты! Подскажите какими средствами из приложения можно послать ping и проконтролировать соединение ? ...Вопрос № 28256: Уважаемые эксепрты! Дайте пожалуйста ответ на глупый вопрос. Решил познакомиться с C++ и поставил Visual C++ 6. При запуске простейшего консольного приложения вместо кирилицы отбражается какая-то билиберда. Что надо сделать, чтобы русские символы рис...Вопрос
№ 28273: Здравствуйте! Подскажите есть ли в С++ какие-нибудь функции перехода на новую строку,
перевода каретки?...
Вопрос № 28.226
Уважаемые Эксперты! Подскажите какими средствами из приложения можно послать ping и проконтролировать соединение ?
Отправлен: 24.10.2005, 14:54
Вопрос задала: Karakurt (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Bob Johnson
Здравствуйте, Karakurt!
В нете лежит немало исходников, пингующих требуемый хост. Ну а самым простым вариантом является запуск обычного ping.exe и фильтрация его результатов )
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 24.10.2005, 21:20
Отвечает: estiGi
Здравствуйте, Karakurt!
Нужно создать pipe, потом CreateProcess и далее через ReadFile читать данные, которые выдает обычно консоль.
Так слонжо описать, это не две строчки кода. Если хочешь, стукнись ко мне, я
когда то писал функцию, которая запускает консольное приложение и перехватывает вывод. Именно так я и перехватывал ping в ГУИшной программе.
Ответ отправил: estiGi (статус: 3-ий класс)
Отправлен: 25.10.2005, 23:56
Вопрос № 28.256
Уважаемые эксепрты! Дайте пожалуйста ответ на глупый вопрос. Решил познакомиться с C++ и поставил Visual C++ 6. При запуске простейшего консольного приложения вместо кирилицы отбражается какая-то билиберда. Что надо сделать, чтобы русские символы рисовались правильно? В самой IDE все нормально. А также подскажите, где в этой среде найти командную строку запуска компилятора. К сожалению книги по Visual C++ пока не смог найти. Ваще проблема:(
Приложение:
Отправлен: 24.10.2005, 23:01
Вопрос задал: Domian (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 1)
Ответ отправил: azat (статус: 4-ый класс)
Отправлен: 24.10.2005, 23:28
Отвечает: igor87
Здравствуйте, Domian!
Все потому что в Visual C++ кодировка ср1251, а в консоли 866-я. Самое простое взять редактор с 866 кодировкой и переписать в нем все, что на русском, а потом скомпилировать в Visual.
Ответ отправил: igor87 (статус: 4-ый класс)
Отправлен: 25.10.2005, 10:35
Ответ отправил: Sager (статус: 10-ый класс)
Отправлен: 25.10.2005, 18:34
Отвечает: Bob Johnson
Здравствуйте, Domian!
вариантов несколько:
1. Выводить в консоль в юникоде (WriteConsoleW или WriteFileW, например).
2. Перекодировать символы перед выводом в кодировку 866 (CharToOem).
3. Писать только на английском.
Функция SetConsoleOutputCP у меня почему-то не работает, так что ее использовать смысла нет.
VC++ использует компилятор cl.exe. Простейший его запуск:
cl.exe 1.cpp
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 25.10.2005, 22:32
Отвечает: estiGi
Здравствуйте, Domian!
Насчет консоли посмотри здесь, проблема описывается достаточно подробно:
http://www.rsdn.ru/article/qna/ui/concp.xml
Насчет второго непонятно. Ты имеешь в виду как передать агрументы в приложение в дебаге? В свойствах проекта - Debugging -> Command Arguments.
Если просто запустить компилятор через консоль - находишь cl.exe и запускаешь...
Параметры можно найти в МСДН
Ответ отправил: estiGi (статус: 3-ий класс)
Отправлен: 26.10.2005, 00:03
Вопрос № 28.273
Здравствуйте! Подскажите есть ли в С++ какие-нибудь функции перехода на новую строку,
перевода каретки?
Отправлен: 25.10.2005, 12:47
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Rusland
Здравствуйте, Rewer8!
Функций не знаю, но можно просто прибавить к строке два символа "
".
Приложение:
--------- Пресловутое недостающее звено между обезьяной и цивилизованным человеком - это как раз мы. (Конрад Лоренц)
Ответ отправил: Rusland (статус: Практикант)
Отправлен: 25.10.2005, 12:52 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: igor87
Здравствуйте, Rewer8!
Тебе нужны не функции, а ESC-последовательности:
- переход на новую строку
- возврат каретки
и т.д.
Использовать их нужно примерно таким образом:
cout << "
"; или printf("
");
Ответ отправил: igor87 (статус: 4-ый класс)
Отправлен: 25.10.2005, 13:00
Отвечает: Jadd
Здравствуйте, Rewer8!
дык есть, но не функции, а спец байты. Например в байт 0D - возврат каретки, а 0A - перевод строки. Для удобства используются символьные представления типа
и
соответственно. Т.е. когда выводишь строку куда-то (в файл или на экран), то просто добавляешь эти символы. Например, следующий код даст такой вот вывод:
printf("Some string");
printf("Some string");
Вывод:
some stringSome string
А этот код:
printf("Some string
");
printf("Some string");
Вот такой:
Some string
Some string
В справочнике по языку все это есть.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 25.10.2005, 13:03
Отвечает: Ерёмин Андрей
Здравствуйте, Rewer8!
В строках можно использовать такие последовательности:
- возврат каретки,
- новая строка. Комбинация
даст новую строку.
--------- Бог создал мир за семь дней и до сих пор система работает, не требуя перезагрузки, потому что у него не было необходимости поддерживать совместимость с предыдущими версиями...
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 25.10.2005, 16:39
Отвечает: Sager
Здравствуйте, Rewer8!
Можно ставить символы
, либо числами 1013
Ответ отправил: Sager (статус: 10-ый класс)
Отправлен: 25.10.2005, 18:34
Отвечает: estiGi
Здравствуйте, Rewer8!
хы, даже не знаю, как сказать... Существует два символа -
, которые, когда идут вместе, то переводят строку. Напрмиер:
MessageBox ("Top line
Bottom line");
используется при бинарном чтении текста. Можно просто
- текстовый режим.
А функцию. чесно говоря знаю всего одну - endl из стандартной библиотеки. Но она используется только в консоли, да и то не рекомендуют ее юзать:
cout << "Top line" << endl << "Middle line" << "
" << "Bottom line" << endl;
но вот так предпочтительней:
printf ("Top line
Middle line
Bottom line
");
Ответ отправил: estiGi (статус: 3-ий класс)
Отправлен: 25.10.2005, 23:50 Оценка за ответ: 4 Комментарий оценки: Когда я пишу код: AnsiString str="текст "; str=str+"
"+"текст2" StringGrid1->Cells[0][0]=str; То в результате его выполнения получается какая то фигня типа "текст||текст2" а мне нужно чтобы текст2 был записан под текст, то есть "текст" "текст2"