rttgedt Все получилось. Неправильное изъятие теста из edit'a было. Проблема тут-же образовалась. Как подсчитать количество символов в строке и добавить в конце нулевой символ?
Если я не ошибаюсь (прочитал) это ARRAYSIZE? Вот с ним. Только при исполнении программы идет ошибка. Код (Text): char message[100]; GetDlgItemTextA( hwnd, ID, message, sizeof(message) ); int i = ARRAYSIZE(message); i = i + 1; message[i] = '\0';
Короче есть строка, размером 100 ячеек. В ней сохраняется текст из текстового поля. Измеряют количество символов вроде ARRAYSIZE'ом. Я так понимаю у меня, если массив длинной 100 ячеек то результат измерения всегда 100?
Ezrah Вот. Из поля берется текст в буфер, создается файл, в него пишется нужный текст а потом крокозябры. Код (Text): char message[100]; GetDlgItemTextA( hwnd, ID, message, sizeof(message) ); // ------------------------------Тут должен ставиться нулевой символ чтобы не записывались крокозябры. char f[] = {"C:\\Zametky.txt"}; HANDLE hFile = CreateFileA( f, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL ); WriteFile(hFile, message, ARRAYSIZE(message), &dwBytesWritten, NULL); CloseHandle(hFile);
Ну и ничего не получается. Я так понял надо посчитать количество введенных символов в текстовое поле, плюсовать 1 и по этому индексу в ячейку буфера (в котором храниться текст из edit) записать нулевой символ. Поможете?
Почитаете? http://msdn.microsoft.com/en-us/library/windows/desktop/ms645489%28v=vs.85%29.aspx Код (Text): Return value Type: UINT If the function succeeds, the return value specifies the number of characters copied to the buffer, not including the terminating null character. Догадаетесь, что делать дальше?
Не получилось. Сохраняется бред. ((( Код (Text): char message[100]; UINT p = GetDlgItemTextA( hwnd, ID, message, sizeof(message) ); message[p] = '0';
moderhi Нулевой символ есть, нужный текст записывается, а потом весь мусор который храниться в пустых ячейках
Mark Так дальше дело твое не пойдет. Если не научишся находить свои ошибки, то зачем это тебе все нужно?
А где вы вычитали, что после 0х0 в файл не пишется. Это верно только для текстовых файлов, а по CreateFile и WriteFile тебе придется самому все обрабатывать. Батенька не издевайтесь - у вас бессистемная каша в голове. Проги иногда у вас работают не потому, что вы умный, а потому что это все придумали умные люди, чтобы тупые, но дисциплинированные индусы и китайцы могли писать Винду и иже с ней
valterg Да, это я понял. Я создал доп. массив, который имеет размер по количеству введенных символов. Создал цикл, который будет крутиться столько раз, сколько символов. И там происходит это: Код (Text): hop[y] = message[y]; То есть, нужные нам символы закладываются в доп массив. З. Ы. Вы зря думаете что я такой тупой. Я сомневаюсь, что по крайней мере из нашего класса кто-нить это понял (( Kaimi Спасибо за то, что подсказали про возвращаемое значение.
Mark, никто не говорит, что ты тупой, просто ты движешься в противоположном направлении и не хочешь слушать, что тебе говорят люди гораздо опытнее тебя
Еще. Вот значит Открыл файл, сохранил содержимое в строке и вывел в текстовое поле. Файла в директории не было, а вывелся бред. Код: Код (Text): char pp[] = "Zametky.txt"; char bufi[200]; HANDLE yp = CreateFileA( pp, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ); DWORD dwBytesRead; ReadFile( yp, bufi, sizeof(bufi), &dwBytesRead, NULL ); CloseHandle(yp);