Вопрос № 131612: Есть edit, созданный процедурой
hEditWnd=CreateWindowExW(0,L"Edit",0,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,
10,10,200,20,hWnd,0,hInstance,0);
Далее в него засылается текст и ставится Setfocus:
SendMessage(hEditWnd,WM_SETTEXT...Вопрос № 131720: Здравствуйте, уважаемые эксперты! Помогите, пожалуйста, составить программу на языке программирования С для решения следующей задачи: " Пусть дан текстовый файл. Удалите строку с заданным номером. Если строки с указанным номером нет, сообщите об...Вопрос № 131762: Здравствуйте, Уважаемые Эксперты! Помогите справится с проблемой, мучаюсь, ничего не могу сделать. Borland
Builder 6. Пытаюсь в файл записать строку типа AnsiString
f << Auto[N].model;
выдает ошибку
[C++ Error] Lab06_1.cpp(135): E2...Вопрос № 131776: Уважаемы эксперты, необходимо срочно решить 3 задачи.
1. Дана действительная матрица размера m x m . Определить числа b0, b1, ..., bm равные соответственно: разностям наибольших и наименьших значений элементов строк. Работу с массивом органи...
Вопрос № 131.612
Есть edit, созданный процедурой
hEditWnd=CreateWindowExW(0,L"Edit",0,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,
10,10,200,20,hWnd,0,hInstance,0);
Далее в него засылается текст и ставится Setfocus:
SendMessage(hEditWnd,WM_SETTEXT,0,(LPARAM)szFile);
SetFocus(hEditWnd);
Теперь нужно поставить курсор на последнюю позицию, сделать это можно например кодом
SendMessage(hEditWnd, EM_SETSEL, strlen(hEditWnd->Text), strlen(hEditWnd->Text));
но здесь студия находит ошибку error C2039: 'Text' : is not a member of 'HWND__'
Собственно, таких ошибки 2, т. к. strlen вызывается 2 раза. Как исправить?
Отправлен: 11.04.2008, 00:53
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Сандров Алекс
Здравствуйте, Blackie!
Не нужно путать хэндлы окон с классами.
Хэндл это хэндл и не больше (32-битная переменная), не указатель.
Если работаете с MFC, тогда надо сразу работать с EDIT-ом как с классом, через CEdit или CWnd.
Если чезер Win32API - тогда надо сначала получить текст в отдельную строчку
Ответ отправил: Сандров Алекс (статус: 7-ой класс)
Ответ отправлен: 11.04.2008, 07:34 Оценка за ответ: 5
Вопрос № 131.720
Здравствуйте, уважаемые эксперты! Помогите, пожалуйста, составить программу на языке программирования С для решения следующей задачи: " Пусть дан текстовый файл. Удалите строку с заданным номером. Если строки с указанным номером нет, сообщите об этом."
Отправлен: 11.04.2008, 17:01
Вопрос задал: Vesel4 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Терсков Сергей
Здравствуйте, Vesel4! Задача не такая простая, как может показаться на первый взгляд. Ее можно решить копируя файл без "удаленной" строки либо в память либо в другой файл. В моем варианте используется память. Сначала подсчитывается кол-во строк в файле. Затем вводится номер удаляемой строки. На этом этапе отсекается ввод неверного номера строки. Затем файл построчно копируется в память с пропуском "удаляемой". После этого файл снова открывается (только теперь в режиме перезаписи) и строки
из памяти переписываются обратно в файл. При этом главное не забывать освобождать выделенную ранее память. Текст программы в приложении. Язык С, компилятор MS VS 2005.
Приложение:
Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 16.04.2008, 06:41 Оценка за ответ: 5 Комментарий оценки: Спасибо огромное! Всё работает!
Вопрос № 131.762
Здравствуйте, Уважаемые Эксперты! Помогите справится с проблемой, мучаюсь, ничего не могу сделать. Borland Builder 6. Пытаюсь в файл записать строку типа AnsiString
f << Auto[N].model;
выдает ошибку
[C++ Error] Lab06_1.cpp(135): E2094 'operator<<' not implemented in type 'ofstream' for arguments of type 'AnsiString'
Я так понял, что потоковая операция не рабоатет с типом AnsiString. Порывшись в справке, нашел, что для того чтобы работало все, т.е. были инициализированы потоковые операции (<< и >>) необходимо подключить вначале #include <iostream> или #define VCL_IOSTREAM перед #include <dstring.h>. Мол, это автоматически перегрузит << и >>:
ostream& operator << (ostream& os, const AnsiString& arg);
istream& operator >> (istream& is, AnsiString& arg);
Но все равно пишет ту же самую ошибку....
Подскажите, где я ошибся, или может есть еще способы, как можно записать ПОТОКОВО в файл переменную типа AnsiString.
Заранее всем спасибо.
Отправлен: 11.04.2008, 21:13
Вопрос задал: Djec (статус: 8-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Dr_Andrew
Здравствуйте, Djec!
А почему бы не попробовать записать так:
f << Auto[N].model.c_str();
P.S. Функция-член класса AnsiString c_str() возвращает указатель на строку, заканчивающуюся нулём, содержащую те же символы, что и строка AnsiString. А для char* оператор << определён.
Ответ отправил: Dr_Andrew (статус: 9-ый класс)
Ответ отправлен: 12.04.2008, 01:29 Оценка за ответ: 5 Комментарий оценки: Спасибо, вполне правильный и понятный ответ. Работает.
Вопрос № 131.776
Уважаемы эксперты, необходимо срочно решить 3 задачи.
1. Дана действительная матрица размера m x m . Определить числа b0, b1, ..., bm равные соответственно: разностям наибольших и наименьших значений элементов строк. Работу с массивом организовать с выделением динамической памяти.
2. Реализовать класс: "Геометрический вектор". Данными-членами класса представить координаты вектора. Используя механизм перегрузки операций реализовать:
a. Конструктор по умолчанию, устанавливающий данные в ноль
б. Конструктор инициализации
в. Перегрузить операции: ++(постфикс),++(префикс),+,=
г. Методы ввода-вывода на экран координат вектора
д. Деструктор
3. Используя механизм наследования написать программу, реализующую иерархию
A->C<-B
У классов A, B, C присутствуют методы: конструктор инициализации, деструктор, вывод данных, (для класса A - a, для класса B - b т.д.) У классов A и B конструктор с 1 параметром, у класса С - с двумя параметрами (взятыми у классов A и B).
Заранее благодарю!
Отправлен: 11.04.2008, 23:02
Вопрос задал: Sticka (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Терсков Сергей
Здравствуйте, Sticka! Решения ваших трех задач смотрите в приложении.
В первой массив b формируется проходом по строкам матрицы и сложением максимальных и минимальных элементов. Задача по нахождению таких элементов вынесена в отдельные функции.
Во второй задаче проблемы могут возникнуть при перегрузке постфиксных и префиксных операторов.
Для префиксных это: T& operator ++ () {}
Для префиксных: T operator ++ (int) {}
Параметр во втором случае не используется, а служит
лишь для различия версий оператора. Предпочтительней использовать первую версию, т.к. в ней не используются никакие временные объекты.
Третья задача - это иллюстрация множественного наследования в C++. В любом учебнике по С++ можно найти пример подобный этому.
Приложение:
Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 15.04.2008, 09:05 Оценка за ответ: 5 Комментарий оценки: спасибо! очень помогли, эти решения пригодятся не только мне))