Вопрос № 109696: Всем добрый день! Вопрос - как можно определить объем оперативной памяти занимаемый приложением (внутри этого приложения)? Заранее спасибо....Вопрос № 109738: Товарищи эксперты помогите очень нада. Мне нужен работоспособный просмоторщик файлов ( браузер ). Пишу на WTL. Только нужно что бы все действия были в контролах типа CTreeViewCtrl, CListViewCtrl,...
Искал в инете не нашол - может плохо искал. Пом...Вопрос № 109770: Здравствуйте, ув. эксперты. У меня к вам два вопроса.
1) Если в файле n строчек.
Почему данный цикл выполняется n+1 раз?
while(!fin.eof()) {
fin >> var;
avrval += var;
count++;
}
В итоге в переменную avrv...Вопрос № 109791: Здравствуйте, эксперты!
Как исправить следующую программу (по возможности только конструктор копии и деструктор), чтобы деструктор освобождал память.
Нужно сделать так чтобы память очищалась в классе, а не int main() программе....Вопрос № 109812: Здрасте. Как правильно в C++ Builder программно создать массив TImage. Делал так:
TImage *Im[5];
Im[0]->Picture->LoadFromFile("2.gif");
При компиляции выдает ошибку.
Обязательно ли указывать Parent этого массива? И как...Вопрос № 109844: Здрасте!!Я не пойму для чего нужны бинарные деревья???неужели только для сортировки???И я вообще не могу понять как они работают... программным путем...ни в одной из книг,которые я читаю не приведено даже валюсенького кусочка кода....
вразумите п...
Вопрос № 109.696
Всем добрый день! Вопрос - как можно определить объем оперативной памяти занимаемый приложением (внутри этого приложения)? Заранее спасибо.
Неплохо было бы в первую очередь обратиться к MSDN за вопросом;)
Ну да ладно, подскажу. Получить инфо об использовании памяти процессом (как в менеджере задач) можно с помощью стандартной ф-ии GetProcessMemoryInfo().
Описание:
BOOL WINAPI GetProcessMemoryInfo(
HANDLE Process, //Дескриптор нужного нам процесса
PPROCESS_MEMORY_COUNTERS ppsmemCounters, // Указатель на структуру, в которую будет возвращена инфо
DWORD cb //размер передаваемой структуры
);
Из всех полей, вам нужно WorkingSetSize - размер занимаемой процессомпамяти в БАЙТАХ. Описание остальных полей вы легко найдете в MSDN.
Пример функции, возвращающей объем занимаемой памяти текущего процесса в приложении...
P.S. Не забудьте подключить к проекту psapi.h и прилинковать psapi.lib
Успехов!
Приложение:
Ответ отправил: Лучников Ю.В. (статус: 1-ый класс)
Ответ отправлен: 16.11.2007, 21:06
Вопрос № 109.738
Товарищи эксперты помогите очень нада. Мне нужен работоспособный просмоторщик файлов ( браузер ). Пишу на WTL. Только нужно что бы все действия были в контролах типа CTreeViewCtrl, CListViewCtrl,...
Искал в инете не нашол - может плохо искал. Помогите.
Отправлен: 16.11.2007, 19:19
Вопрос задал: Abdyla_v (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Лясин Александр Владимирович
Здравствуйте, Abdyla_v!
Я почти не работаю в Windows, но тема заинтересовала, да и в интернет я искать умею - посмотрите здесь, возможно это вам поможет Link...
Здравствуйте, ув. эксперты. У меня к вам два вопроса.
1) Если в файле n строчек.
Почему данный цикл выполняется n+1 раз?
while(!fin.eof()) {
fin >> var;
avrval += var;
count++;
}
В итоге в переменную avrval последнее число (из файла) записывается два раза.
2) Не подскажите ли функцию на с++ с помощью, которой можно начать считывание файла заново. А то уже надоело открывать и закрывать файл по несколько раз.
Отвечает: CruelHity
Здравствуйте, Никитаев Константин Александрович!
1) ненаю все правильно у вас написано
вы показываете не весь код может там ошибка??
у мя все работает см приложения
2)с помощью функции seekg(позиция файла), см приложения!!!!
Приложение:
Ответ отправил: CruelHity (статус: 5-ый класс)
Ответ отправлен: 17.11.2007, 01:16 Оценка за ответ: 4 Комментарий оценки: "вы показываете не весь код может там ошибка?" Я же в своём вопросе указывал, что данный цикл работает некорректно, причём здесь остальной код.
Ещё хотелось бы видеть комментарии в коде.
Отвечает: Лясин Александр Владимирович
Здравствуйте, Никитаев Константин Александрович!
Попробуйте следующим образом
for (;;) {
fin>>var;
if (fin.eof()) break;
avrval+=var;
count++;
}
Вы используете STL, эта библеотека
может иметь несколько различные (несильно отличающиеся) реализации
у разных производителей. Видимо вы работаете с ifstream классом, который при считывании
файла "не знает", что файл закончился - пока не считает из потока сам символ EOF и
"не заглянет" за конец файла.
Для того, чтбы начать чтение файла сначала - можете использовать метод
того же класса seekg
Ответ отправил: Лясин Александр Владимирович (статус: 2-ой класс)
Ответ отправлен: 17.11.2007, 13:56 Оценка за ответ: 4 Комментарий оценки: Из файла считывается неизвестное количество строчек (чисел), а переменная count в моем примере является счетчиком. Не совсем понимаю как можно это реализовать через цикл for().
Отвечает: kool
Здравствуйте, Никитаев Константин Александрович!
1) Скорее всего последняя строка пустая
2) fseek() - позиционирует указатель файла куда нужно
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 17.11.2007, 14:15 Оценка за ответ: 4 Комментарий оценки: Проверял, последняя строчка в файле точно не пустая.
Отвечает: Ross
Здравствуйте, Никитаев Константин Александрович!
Видимо вы используете компилятор, в котором немного своебразно реализован класс ifstream (Turbo C++ или Borland C++), т.к у меня ваш код работает без проблем. Могу предложить такое решение:
while(!(fin >> var).eof())
{
avr_val += var;
++count;
}
--------- Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 19.11.2007, 15:51
Вопрос № 109.791
Здравствуйте, эксперты!
Как исправить следующую программу (по возможности только конструктор копии и деструктор), чтобы деструктор освобождал память.
Нужно сделать так чтобы память очищалась в классе, а не int main() программе.
Приложение:
Отправлен: 17.11.2007, 07:05
Вопрос задал: Tito (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: V1s0r
Здравствуйте, Tito!
Страшные вещи у вас происходят... особенно в Long::Long(const Long &ob), Long :: operator + (Long &op2)
Советую почитать в книге Страуструпа "Язык С++" про реализацию класса String и всё встанет на свои места.
Ответ отправил: V1s0r (статус: 4-ый класс)
Ответ отправлен: 17.11.2007, 12:50 Оценка за ответ: 4
Отвечает: CruelHity
Здравствуйте, Tito!
Как я понял вам надо удалить содержимое объектов х и y до завершения программы! тогда деструтктор вам не полдходит потомучто деструктор вызываеться только в конце тела! вам нужно создать две функции удаления памяти и резервирования!
И вообще у вас очень много ошибок! вызабыли перегрузить оператор =, и много другого!
См приложения! Я переделал вашу програму!
Удачи!
Разбирайте и спрашивайте что не понятно!
Приложение:
Ответ отправил: CruelHity (статус: 5-ый класс)
Ответ отправлен: 17.11.2007, 13:16 Оценка за ответ: 5
Вопрос № 109.812
Здрасте. Как правильно в C++ Builder программно создать массив TImage. Делал так:
TImage *Im[5];
Im[0]->Picture->LoadFromFile("2.gif");
При компиляции выдает ошибку.
Обязательно ли указывать Parent этого массива? И как правильно указать для массива?
Отправлен: 17.11.2007, 10:12
Вопрос задал: RussianGM
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лучников Ю.В.
Здравствуйте, RussianGM!
Ну еще б не выдавал ошибку:)) Вы создали массив указателей объектов TImage и пытаетесь к этим объектам обратиться) Предварительно НЕ создав ни один из них))
Грубо говоря адресуемся туда, не знаем куда)
Предварительно вам все таки нужно эти 5 объектов создать и присвоить им владельца (хотя тут не обязательно) ;)
Второй шаг, раз TImage являются визуальными объектами, им само собой следует присвоить родителя (Parent), чтобы эти компоненты отрисовались, иначе вы их нигде не увидите;)
Ну а далее - стандартные манипуляции...
З.Ы. Освобождать память из под них (delete) НЕ нужно, т.к. родитель их сам удалит, при уничтожении самого себя. (особенности VCL).
Пример в приложении...
Успехов!
Приложение:
Ответ отправил: Лучников Ю.В. (статус: 1-ый класс)
Ответ отправлен: 17.11.2007, 12:16 Оценка за ответ: 5
Отвечает: kool
Здравствуйте, RussianGM!
Можно попробывать так
TImage Im[5];
Im[0].Picture->LoadFromFile("2.gif");
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 17.11.2007, 14:15 Оценка за ответ: 3
Отвечает: Лясин Александр Владимирович
Здравствуйте, RussianGM!
Не зависимо от того, с помощью какого инструментария вы собираете программу на C++,
все массивы в С++ объявляются одинаково. Массив вы указали совершенно правильно,
указав тип, идентификатор и размер массива. И компилятор "ругается" не по этому.
Вы объявили массив указателей на класс TImage. Но не создали сами объекты данного
типа. Специфика библиотеки VCL (основная библиотека BCB) в том, что компилятор не
размещает в памяти статические объекты этой библиотеки. Вы можете объявлять
только указатели на типы (классы) и затем выделять под них память с помощью оператора
new. Вот так может выглять ваш рабочий пример:
TImage *Im[5];
// выделяем память под все объекты типа TImage
for (int i=0; i<sizeof(Im)/sizeof(Im[0]); i++) {
// здесь в конструкторе указываем указатель на объект класса - "oтветственного"
Im[i]= new TImage(Form1);
// за уничтожение объекта TImage
Im[i]->Parent=Form1; // если хотим - чтобы картинка показалась на форме Form1
... // здесь можно вставить код, в котором укажем координаты картинки // и др.
}
Im[0]->Picture->LoadFromFile("2.gif");
А вообще настоятельно посоветовал бы вам почитать любую литературу по C++, в том числе и по работе в Builder.
Ответ отправил: Лясин Александр Владимирович (статус: 2-ой класс)
Ответ отправлен: 17.11.2007, 14:27 Оценка за ответ: 5
Вопрос № 109.844
Здрасте!!Я не пойму для чего нужны бинарные деревья???неужели только для сортировки???И я вообще не могу понять как они работают... программным путем...ни в одной из книг,которые я читаю не приведено даже валюсенького кусочка кода....
вразумите пожалуйста мою неграмотность)))
Отправлен: 17.11.2007, 14:23
Вопрос задала: lyubkin (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: V1s0r
Здравствуйте, lyubkin!
Можно и для сжатия данных - поищи в интернете что-нибудь типа "сжатие по хаффману", сразу же найдёшь его классический алгоритм с бинарным деревом и, конечно же, программный код. Можешь почитать про бинарные деревья в любой книге по алгоритмам.
Ответ отправил: V1s0r (статус: 4-ый класс)
Ответ отправлен: 17.11.2007, 14:34 Оценка за ответ: 3