Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 715
от 19.04.2007, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 473, Экспертов: 81
В номере:Вопросов: 4, Ответов: 15


Вопрос № 82477: Здравствуйте, уважаемые эксперты! Вопрос мой задан с глубокого отчаяния, думаю, вы сможете объяснить, почему все ТАК происходит. Раньше я все думал, что программы, сделанные на С++ круче, чем на Delphi. В первую очередь своим размером. Но те...
Вопрос № 82486: Как возможно удаление и сохранение отдельных строк при работе с БД?...
Вопрос № 82511: Здраствуйте!!! начел работу с файлами на Visual Studio. еще с turbo с++ привык к fstream но но ни как не могу найти как пользоваться на Visual Studio вроде исходник есть но стандартные методы реализации не работают?? Может лучше работать с каким...
Вопрос № 82557: Добрый день! Подскажите уважаемые эксперты, где здесь закралась ошибка. Только учусь поэтому перебивал с самаучителя, вроде все один в один с учебником, но не работает, т.е не получается буквы вводить, пишет сразу "Введена неправильная букве...

Вопрос № 82.477
Здравствуйте, уважаемые эксперты!
Вопрос мой задан с глубокого отчаяния, думаю, вы сможете объяснить, почему все ТАК происходит.
Раньше я все думал, что программы, сделанные на С++ круче, чем на Delphi. В первую очередь своим размером. Но теперь, когда я узнал, каким способом этот результат достигается, я больше так не думаю. Любой экзешник, откомпилированный на С++, работает только на машине, где он был создан. Если скинуть прогу на флешку и записать на другой компьютер, то там она НЕ ЗАПУСТИТЬСЯ!!! Пишет, что не хватает каких-либо компонентов (*.bpl). КАК избавиться от такого ерунды? Вот прога, откомпилированная под Delphi, весит хороших 300Кб (а если ее еще упаковать - и то на 60% меньше), зато запуститься на любом компе. Но ведь в опциях компилятора в Delphi тоже можно отключить множество модулей, если быть уверенным, что они установлены на данном компьютере, и тогда размеры программы во много раз уменьшаться. То есть в С++ это стоит как бы по умолчанию. Теперь скажите, можно ли сделать в C++, чтобы прога весила МАЛО и работала ВЕЗДЕ?
Отправлен: 13.04.2007, 20:26
Вопрос задал: Win2k (статус: Посетитель)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Ross
Здравствуйте, Win2k!

Лично у меня ВСЕ написанные программы работают ВЕЗДЕ. Пишу на Visual C
Ответ отправил: Ross (статус: 7-ой класс)
Ответ отправлен: 13.04.2007, 20:39
Оценка за ответ: 4
Комментарий оценки:
Да, тут другой разговор. У меня стоит C++ Builder. Но хотел бы я знать, сколко занимает одна такая программа (стоит мне изучать Visual C++)?

Отвечает: Mitya86
Здравствуйте, Win2k!

Ты наверное пишешь на Borland C++ или на С++ Builder и у не установлена статическая линковка необходимых библиотек.
Ответ на твой вопрос: можно, если использовать грамотно настроенный компилятор. и это касается любого языка программирования.
Ответ отправил: Mitya86 (статус: 3-ий класс)
Ответ отправлен: 13.04.2007, 20:44
Оценка за ответ: 4
Комментарий оценки:
Хорошо, что можно. Но КАК это сделать?

Отвечает: Lomer
Здравствуйте, Win2k!
Скачайте книги Румянцева по WINAPI. Я, например, пишу приложения на Visual C++ 6.0 Их размер зачастую не превышает 5 кб(!). Пример простейшего окошка на чистом WINAPI привожу ниже. Попробуйте откомпилить и зацените размер ;)

Приложение:

Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 13.04.2007, 21:01
Оценка за ответ: 5
Комментарий оценки:
Спасибо за исходный код. Но это немного не то. Писать на WinApi я бы мог и на Delphi, и результат был бы почти такой же. Я хочу использовать уже готовые компоненты, а не переписывать их содержимое. Но примерчик мне тоже не помешает.

Отвечает: Thread
Здравствуйте, Win2k!
Пиши на Visual C++ будут тебе экзешники круче, чем на делфи. Тока писать их сложнее чем на билдере, т.к. придется писать под WinAPI или MFC. На мой взгляд билдер годится только для обучения С++, если писать по-серьезному, то лучше уж писать на делфи, чем не нем.
Ответ отправил: Thread (статус: 5-ый класс)
Ответ отправлен: 13.04.2007, 21:49
Оценка за ответ: 5
Комментарий оценки:
Спасибо, я так скорее всего и сделаю.

Отвечает: kool
Здравствуйте, Win2k!
Везде будет работать только трактор.
В C++ ничего делать не надо.
Надо грамотно выбирать среду разработки и компилятор.
Знать для чего предназначены опции компиляции
и уметь их использовать, а не просто уметь нажимать кнопку Run.
Если приложение требует какие-то файлы для
своей работы их нужно ему подсунуть.
Простота создания проги в Билде компенсируется таким гемором.
Выход - не использовать те компоненты, которые требуют
дополнительные модули.
Как вариант - переход на Визуал или gcc.


---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 13.04.2007, 22:40
Оценка за ответ: 4
Комментарий оценки:
Это все и без того понятно. Все говорят, настрой компилятор, а где копать, что настраивать - догадайся сам. Не использовать компоненты ( то есть делать консольное приложение) я тоже не могу.
Буду пробовать Visual C.

Отвечает: Ilkras
Здравствуйте, Win2k!
можно написать прогу которая будет мало весить и бежать на всех компьютерах с одной и той же операционкой. при этом надо пользоваться только теми функциями, которые есть в стандартной установке (функции = dll). В Windows надо пользоваться только WinAPI. Скажем вместо fopen пользоваться FileOpen и т.д. Тогда ваш exe будет содержать только ваш код, а все вызываемые функции будут присутствовать на любом компьютере с Windows. При этом прога будет очень эффективной. Для примера функция fopen на Windows в библиотеке стандартного ввода-вывода реализована через ту же FileOpen и содержит дополнительный код для преобразования параметров, создания объекта потока и обработки ошибок. Весь этот код исполняется и требует процессорного времени.
Круче это или нет - не знаю. Программирование это прикладная специальность и качество результата можно оценивать только в соответствии с заданием.
Ответ отправил: Ilkras (статус: 7-ой класс)
Ответ отправлен: 14.04.2007, 09:49
Оценка за ответ: 5

Отвечает: DragonTusk
Здравствуйте, Win2k!
Пишите на WinAPI, либо используя какую либо библиотеку правда придется тягать ее за собой, например MFC, FOX-TOLKIT. Вот например на последнем можно написать прогу вообще под несколько ОС на Дельфи это не сделаешь.
Ответ отправил: DragonTusk (статус: 3-ий класс)
Ответ отправлен: 14.04.2007, 11:02
Оценка за ответ: 4

Отвечает: ramok
Здравствуйте, Win2k!

что бы не требовало ничего смотри ответ на вопрос номер 5
http://www.cyberguru.ru/programming/borland-cpp/borland-cpp-faq-8.html

а размер не так уж и важен.. можно просто upx пожать если что http://upx.sourceforge.net/

PS
в VС проги тоже быстро распухают если использовать вкусные библиотеки всякие..
я бы лично не менял привычную среду программирования только потому что кто то сказал что где то проги меньше по размеру с тем же фунционалом что требуется.
размер давно уже не аргумент. во главу угла ставится удобство использования, простота сопровождения и так далее и тому подобное
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 15.04.2007, 04:06
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Я с Вами полностью согласен.


Вопрос № 82.486
Как возможно удаление и сохранение отдельных строк при работе с БД?
Отправлен: 13.04.2007, 21:26
Вопрос задал: Avoti (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: DragonTusk
Здравствуйте, Avoti!
UPDATE ИмяТабл SET Поле1=Знач1, Поле2=Знач2, ...... WHERE Условие
DELETE FROM ИмяТабл WHERE Условие
Если отдельные строки, то в условии проверяется ключ.
Ответ отправил: DragonTusk (статус: 3-ий класс)
Ответ отправлен: 14.04.2007, 10:55


Вопрос № 82.511
Здраствуйте!!!
начел работу с файлами на Visual Studio. еще с turbo с++ привык к fstream но но ни как не могу найти как пользоваться на Visual Studio вроде исходник есть но стандартные методы реализации не работают?? Может лучше работать с какимито другими функциями или объектами для работы с файлами??? Если есть какая то инфа о работе с фалом скинте пожалусто!!!
Отправлен: 14.04.2007, 01:35
Вопрос задал: HITY (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Ilkras
Здравствуйте, HITY!
должно работать. включайте <fstream> и пишите. iostreams, если не ошибаюсь, часть стандарта, так что интерфейс должен быть таким-же.
Ответ отправил: Ilkras (статус: 7-ой класс)
Ответ отправлен: 14.04.2007, 09:55
Оценка за ответ: 3
Комментарий оценки:
Та нет не совсем такой!!!

Отвечает: DragonTusk
Здравствуйте, HITY!
Данная библиотека стандартна, поэтому все должно работать возможно нет директивы using namespace std.
Ответ отправил: DragonTusk (статус: 3-ий класс)
Ответ отправлен: 14.04.2007, 10:43
Оценка за ответ: 5

Отвечает: Mystic
Здравствуйте, HITY!
Библиотека для работы с файлами fstream стандартна, поэтому есть в любых компиляторах (только не очень старых). Подключение: #include "fstream". Использование: std::ofstream file("file.txt") для вывода, std::ifstream file("file.txt") для ввода. Остальные опции можно легко найти в МСДН (такие, как работа с двоичными файлами).
Ответ отправил: Mystic (статус: 6-ой класс)
Ответ отправлен: 14.04.2007, 10:52
Оценка за ответ: 4


Вопрос № 82.557
Добрый день!
Подскажите уважаемые эксперты, где здесь закралась ошибка. Только учусь поэтому перебивал с самаучителя, вроде все один в один с учебником, но не работает, т.е не получается буквы вводить, пишет сразу "Введена неправильная буквенная оценка".
С уважением Евгений.

Приложение:

Отправлен: 14.04.2007, 14:42
Вопрос задал: МИТРОФАНОВ Е.В. (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ross
Здравствуйте, МИТРОФАНОВ Е.В.!

Ваша ошибка была в том, что вы написали case '/n': вместо case ' '. И поскольку я не знаю, как ввести EOF с клавиатуры, то заменил его на q

Приложение:

Ответ отправил: Ross (статус: 7-ой класс)
Ответ отправлен: 14.04.2007, 17:31
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: Sov
Здравствуйте, МИТРОФАНОВ Е.В.!
Вы ошибаетесь, по окончании ввода пользователь вводит символ конца строки,а не EOF.
Вам нужно писать так:
while ( (grade = cin.get() ) != 10)
Ответ отправил: Sov (статус: 1-ый класс)
Ответ отправлен: 14.04.2007, 22:21
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: Unreal2004
Здравствуйте, МИТРОФАНОВ Е.В.!
Все прекрасно работает, если в операторе while заменить EOF на ' '
А EOF описан в stdio.h как -1, наверное его сложно ввести с клавиатуры. Скорее всего пример был написан для работы с входным файлом, а потом переделан ввод со стандартного потока

Вот этот такой исходник я проверял в CBuilder 6.0
int main(int argc, char* argv[])
{
int grade;
int aCount = 0, bCount = 0, cCount = 0,
dCount = 0, fCount = 0;

cout << "Введите буквенную оценку." << endl
<< "Введите символ EOF по окончанию ввода." << endl;

while ( (grade = cin.get() ) != ' ') {
switch (grade) {
case 'A': case 'a':
++aCount;
break;
case 'B': case 'b':
++bCount;
break;
case 'C': case 'c':
++cCount;
break;
case 'D': case 'd':
++dCount;
break;
case 'F': case 'f':
++fCount;
break;
case ' ':
break;

default:
cout << "‚Введена неправильная буквенная оценка."
<< "Введите новую оценку." << endl;
break;
}
}
cout << endl << "Количество введенных оценок:"
<< endl << "A: " << aCount << endl << "B: " << bCount
<< endl << "C: " << cCount << endl << "D: " << dCount
<< endl << "F: " << fCount << endl;

char STOP;
cout << "Введите любой символ и нажмите ENTER";
cin >> STOP;
cout << endl;

return 0;
}
Ответ отправил: Unreal2004 (статус: 2-ой класс)
Ответ отправлен: 15.04.2007, 08:57
Оценка за ответ: 5
Комментарий оценки:
Спасибо.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.50 (beta) от 15.04.2007
Яндекс Rambler's Top100

В избранное