Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kooos
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 10
#1

Непонятки с чаром - C++

29.11.2011, 00:17. Просмотров 330. Ответов 4
Метки нет (Все метки)

Хочу написать обычную программу для записи текста введённого из Edit Control в txt-файл.
C++
1
2
3
4
5
6
7
8
9
10
11
DWORD i;
    filename=TEXT("d:\\lalala.txt");
    NumOfBytes=m_Screen.GetWindowTextLength();
    char* buf= new char [NumOfBytes];
    
    m_Screen.GetWindowText((LPTSTR)buf,NumOfBytes);
 
    FilePath=CreateFile(filename,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    
    WriteFile(FilePath,buf,NumOfBytes,&i,NULL);
    CloseHandle(FilePath);
если ввожу 1234567890 в файле сохраняется 12345.

Делал ещё так, строку
C++
1
char* buf= new char [NumOfBytes];
менял на
C++
1
TCHAR buf[100]
, выводит также 12345.
WriteFile возращает правильное кол-во записанных байт i. значит проблема в буфере. объясните какая.

и ещё вопрос: что делает эта запись (LPTSTR)buf? преобразование типов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 00:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Непонятки с чаром (C++):

Что-то не то с чаром... - C++
Крыша едет, дом стоит... char bukva={a,b,c,d,e}; что не так?

Непонятная ошибка с фором и чаром - C++
Доброго времени суток. Не могу чего-то понять где у меня ошибка. Во первых for почему-то гонит (выполняет 2 раза printf), а во вторых идет...

Строки с Чаром (преобразовать заданную пользователем дату в формате «дд.мм.гг» в формат «месяц дд, год») - C++
Преобразовать заданную пользователем дату в формате «дд.мм.гг» в формат «месяц дд, год». Например, «10.02.10» превращается в "февраль 10...

непонятки с for - C++
Издавна мучает вопрос почему некоторые используют в цикле for ( int i = n; i < m ; i++), а другая часть населения for ( int i = n; i < m ;...

непонятки - C++
у меня есть прога которая берет дабл и разделяет его на две сост. целое и дробное this->z = int(d); this->p = ( d - int(d)...

Непонятки с выводом - C++
Задание гласит: Вычислить приближенное значение конечной суммы с точностью e:0.0005 ...

4
Сыроежка
Заблокирован
29.11.2011, 00:34 #2
Kooos,

У вас кодировка скорей всего многобайтная. И каждый символ у вас занимает два байта. Вам наверное надо в функции

C++
1
m_Screen.GetWindowText((LPTSTR)buf,NumOfBytes);
удвоить значение выражения NumOfBytes, или использовть что-то вроде NumOfBytes * sizeof( wchar_t )
1
Kooos
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 10
29.11.2011, 00:38  [ТС] #3
Спасибо. Заработало.
Кодировку можно как-то поменять?
0
Сыроежка
Заблокирован
29.11.2011, 00:43 #4
Цитата Сообщение от Kooos Посмотреть сообщение
Спасибо. Заработало.
Кодировку можно как-то поменять?
Если используете MS VC++, то проще всего ее поменять в свойствах проекта.
0
Kooos
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 10
29.11.2011, 02:21  [ТС] #5
ещё вопрос из той же области.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HANDLE FilePath;
 DWORD NumOfBytes;
DWORD i;
LPCTSTR filename=TEXT("d:\\lalala.txt");
FilePath=CreateFile(filename,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);  
NumOfBytes=GetFileSize(FilePath,NULL);
 
char* buff= new char [NumOfBytes];
    
ReadFile(FilePath,buff,NumOfBytes,&i,NULL);
  CString s,j;
    for (DWORD b=0; b<NumOfBytes;b++){
        j.Format(_T("%c"),*(buff+b)); s+=j;}
    m_Screen.SetWindowText(s);
    CloseHandle(FilePath);
так работает, но подскажите, можно вывести информацию на экран без перехода в CString?а то как-то совсем не красиво.
0
29.11.2011, 02:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 02:21
Привет! Вот еще темы с ответами:

непонятки с матрицой - C++
Найти сумму модулей элементов, расположенных выше главной диагонали у меня проблемы ваще всегда с этими блин матрицами , корчое...

Непонятки с указателями - C++
#include &lt;iostream&gt; using namespace std; int is_order(const int* array) { for(const int* z = array; z &lt; array +...

Непонятки по ссылкам - C++
Доброго времени суток! Помогите, пожалуйста разобраться. Изучаю ссылки и мне кое-что не понятно. Допустим мы объявили функцию: ...

Непонятки с синтаксисом - C++
В заголовочном файле мне встретилось такое описание класса: class source_mcast_reciever { uint16_t m_port; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru