Вопрос № 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
Добрый день!
Подскажите уважаемые эксперты, где здесь закралась ошибка. Только учусь поэтому перебивал с самаучителя, вроде все один в один с учебником, но не работает, т.е не получается буквы вводить, пишет сразу "Введена неправильная буквенная оценка".
С уважением Евгений.
Ваша ошибка была в том, что вы написали 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;