С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для XoPToN
1 / 2 / 0
Регистрация: 20.01.2017
Сообщений: 52

Сохранение текстового файла

02.05.2017, 10:01. Показов 2115. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю текстовый редактор на подобии Блокнота.Есть проблема с сохранением файла,а именно файл не сохраняется как текстовый,хотя тип файла выбран как текстовый .В итоге файл сохраняется типом "файл".Как это исправить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
                case ID_SAVE:
                {
                    DWORD dwCharsToWrite;
                    DWORD dwBytesToWrite;
                    DWORD dwBytesWritten;
                    HANDLE hTxtBuf;
                    PTCHAR npTextBuffer;
                    HANDLE hf = OpenSaveFile(hWnd);
 
                    if (hf == INVALID_HANDLE_VALUE)
                        break;
 
                    dwCharsToWrite = GetWindowTextLength(hEdit);
 
                    hTxtBuf = (HANDLE)SendMessage(hEdit, EM_GETHANDLE, 0, 0);
                    npTextBuffer = (PTCHAR)LocalLock(hTxtBuf);
 
                    dwBytesToWrite = WideCharToMultiByte(CP_UTF8, 0, npTextBuffer, dwCharsToWrite, NULL, 0, NULL, NULL );
                    LPSTR lpMultiByteStr = new CHAR[dwBytesToWrite];    
                    WideCharToMultiByte(CP_UTF8, 0, npTextBuffer, dwCharsToWrite, lpMultiByteStr, dwBytesToWrite, NULL, NULL );         
 
                    CloseHandle(hf);
                    delete []lpMultiByteStr;
                    LocalUnlock(hTxtBuf);
                    break;
                }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2017, 10:01
Ответы с готовыми решениями:

Сохранение текстового файла .txt из Memo1.lines и.т.д , задавая название файла в Edit1
Добрый вечер ! Подскажите пожалуйста, сохраняю текстовой файл в Memo1 задавая имя файлу в Edit1, как только начинаю писать текст в Edit1,...

Сохранение текстового файла
Здравствуйте уважаемые программисты, у меня возникла такая проблема: Есть textarea в которой выводится текстовый документ, а ниже кнопка...

Сохранение текстового файла
Я делаю так: SaveFileDialog1.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*" If...

4
Заблокирован
02.05.2017, 12:34
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
               case ID_SAVE:
               {
                    DWORD dwCharsToWrite;
                    DWORD dwBytesToWrite;
                    DWORD dwBytesWritten;
                    HANDLE hTxtBuf;
                    PTCHAR npTextBuffer;
                    
                    //HANDLE hf = OpenSaveFile(hWnd);
                    //if (hf == INVALID_HANDLE_VALUE)
                    //    break;
 
           HANDLE hf = CreateFileW(TEXT("1.txt"), GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
           if( INVALID_HANDLE_VALUE == hf )
                break;
                    
                    dwCharsToWrite = GetWindowTextLength(hEdit);
 
                    hTxtBuf = (HANDLE)SendMessage(hEdit, EM_GETHANDLE, 0, 0);
                    npTextBuffer = (PTCHAR)LocalLock(hTxtBuf);
 
                    dwBytesToWrite = WideCharToMultiByte(CP_UTF8, 0, npTextBuffer, dwCharsToWrite, NULL, 0, NULL, NULL );
                    LPSTR lpMultiByteStr = new CHAR[dwBytesToWrite];    
                    WideCharToMultiByte(CP_UTF8, 0, npTextBuffer, dwCharsToWrite, lpMultiByteStr, dwBytesToWrite, NULL, NULL );
 
            SetFilePointer(hf, 0, NULL, FILE_END);
            DWORD NumberOfBytesWritten;
            WriteFile(hf, lpMultiByteStr, dwBytesToWrite, &NumberOfBytesWritten, NULL);
 
                    CloseHandle(hf);
                    delete []lpMultiByteStr;
                    LocalUnlock(hTxtBuf);
                    break;
                }
0
 Аватар для XoPToN
1 / 2 / 0
Регистрация: 20.01.2017
Сообщений: 52
02.05.2017, 13:34  [ТС]
stamp, не работает ваш вариант,вообще
0
Заблокирован
02.05.2017, 17:13
Цитата Сообщение от XoPToN Посмотреть сообщение
не работает ваш вариант
XoPToN, как говорит Mikl___,
я на стеклянном шаре предугадываю - ваши вопросы и т.п., чтобы получить ответ на вопрос без лишней болтовни,
нужно оформить вопрос так, чтобы было понятно, что-там у вас за-эдакая функция.
0
 Аватар для XoPToN
1 / 2 / 0
Регистрация: 20.01.2017
Сообщений: 52
03.05.2017, 09:47  [ТС]
stamp, Суть в чем,чтобы набранный текст сохранить в текстовый файл,приходится обязательно указывать расширение .txt в имени,хотя есть вкладка выбора типа сохраняемого файла. Если этого не сделать ,наш текст сохраниться в файл без формата,открыть его можно будет...но это не то,нужно чтобы наш набранный текст сохранился как текстовый файл без указания формата txt в имени сохраняемого файла.
Вот еще диалог сохранения файла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Диалог сохранения файла
HANDLE OpenSaveFile(HWND hWnd)
{
    IFileSaveDialog *pFileSaveDialog;
    
    HRESULT hr = CoCreateInstance(CLSID_FileSaveDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pFileSaveDialog));
    HANDLE hf;
 
    if (SUCCEEDED(hr))
    {
        COMDLG_FILTERSPEC rgSpec[] =
        { 
            { L"Text Files (*.txt)", L"*.txt" },
            { L"All Files (*.*)", L"*.*" }
        };
 
        hr = pFileSaveDialog -> SetFileTypes(2, rgSpec);
 
        if (SUCCEEDED(hr))
        {
            hr = pFileSaveDialog -> Show(NULL);
 
            if (SUCCEEDED(hr))
            {
                IShellItem *psiCurrent = 0;
                hr = pFileSaveDialog -> GetResult(&psiCurrent);
 
                if (SUCCEEDED(hr))
                {
                    LPTSTR pszPath = 0;
                    hr = psiCurrent -> GetDisplayName(SIGDN_FILESYSPATH, &pszPath);
 
                    if (SUCCEEDED(hr))
                    {
                        hf = CreateFile(pszPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                        CoTaskMemFree(pszPath);
                        return hf;
                    }
                    
                    psiCurrent -> Release();
                }
            }
        }
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2017, 09:47
Помогаю со студенческими работами здесь

Сохранение текстового файла
void __fastcall TForm2::N4Click(TObject *Sender) { dot *T; int n; dot *Q; int m; int i; FILE*f;

Изменение и сохранение текстового файла
Дан текстовый файл, содержащий 100 строк. Программа запрашивает у пользователя, что необходимо сделать: a) удалить каждую четную строку ...

Открытие и сохранение текстового файла
Форма должна состоять их Textbox и 2 кнопок: сохранить и открыть. При нажатии на кнопке сохранить набранные в компоненте TextBox символы...

Запрос на сохранение текстового файла
Всем здравствуйте. Пишу текстовый редактор с RichEdit'ом. Как сделать, чтобы по закрытию программы выдавался запрос на сохранение...

Сохранение и считывания списка с текстового файла
Всем привет! Ребята я делаю программу по работе со списками и она уже почти готова, по сути всё сделал! Вот только не знаю как сохранить...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru