Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 10

Чтение файла с русскими буквами в StringGrid

29.09.2013, 18:11. Показов 1852. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Столкнулся с такой проблемой: необходимо заполнить StringGrid данными из файла. Все хорошо происходит с числами, но Если в файле русские буквы выдаёт фигню всякую
часть кода
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
AnsiString FN1 = ExtractFilePath(Application->ExeName)+"\\Podpisi.txt";
    int k=1;
     setlocale (LC_ALL, "Russian");
 
    int FileHandle1 = FileOpen(FN1, fmOpenRead);  //подключение
    if(FileHandle1 == -1)
      {
        ShowMessage("Файл для чтения не удалось открыть!");
        return;
      }
 
    int FileLength1 = FileSeek(FileHandle1, 0, 2);
    FileSeek(FileHandle1, 0, 0);
 
    char *Buffer1 = new char[FileLength1 + 1];
    FileRead(FileHandle1, Buffer1, FileLength1);
    int m=1;
 
    for(int i = 0; i < FileLength1; i++)
      {
        if (Buffer1[i]=='\n')
        {
           k=k+1;
           if (k>22)
           {
              k=1;
              m=m+1;
           }
        }
        else
        Scenary->StringGrid1->Cells[m][k]=Scenary->StringGrid1->Cells[m][k] + Buffer1[i];
      }
 
    FileClose(FileHandle1);
    delete [] Buffer1;
и сам файл во вложении
Что можете подсказать? Заранее спасибо!
Вложения
Тип файла: txt Podpisi.txt (1.4 Кб, 5 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.09.2013, 18:11
Ответы с готовыми решениями:

Чтение файла с русскими буквами
не получается - при печати - русские буквы вообще не печатаются (даже вопросов нет вместо русских букв) assignFile(f,...

Проблема с кодировкой при выводе содержимого из файла 1.js (то что написано русскими буквами) на страницу браузера
https://metanit.com/web/nodejs/4.1.php Я делаю лабораторную все по порядку как написано на сайте выше. Но у меня вместо имеющейся...

Чтение файла с русскими символами
У меня задача прочитать файл с русскими символами. Можно ли это сделать с помощью библиотеки fstream? И если да, то как?

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,853
Записей в блоге: 12
29.09.2013, 18:29
Версия Билдера какая?
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 10
29.09.2013, 18:52  [ТС]
C++Builder XE5
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,853
Записей в блоге: 12
29.09.2013, 19:57
А, ну с XE и выше вообще не должно быть проблем. Прочитай все содержимое файла в StringList с заданной кодировкой, и потом оттуда пиши в грид:

C++
1
2
3
4
5
6
7
8
    String FN1 = ExtractFilePath(Application->ExeName)+"\\Podpisi.txt";
 
    std::auto_ptr<TStringList> Lst(new TStringList); // #include <memory>
    Lst->LoadFromFile(FN1, TEncoding::Unicode);
    for(int i = 0; i < Lst->Count; i++)
    {
        Scenary->StringGrid1->Cells[i%23][i/23] = Lst->Strings[i];
    }
1
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 10
29.09.2013, 20:24  [ТС]
Спасибо большое за помощь. А как можно теперь записать эту информацию, ну из TStringGrid, в файл в таком же порядке как и я выкладывал?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,853
Записей в блоге: 12
29.09.2013, 20:43
Записать еще проще:
C++
1
2
3
4
5
6
    String FN2 = ExtractFilePath(Application->ExeName)+"\\Podpisi2.txt";
 
    std::auto_ptr<TStringList> Lst(new TStringList);
    Lst->AddStrings(Scenary->StringGrid1->Rows[0]);
    Lst->AddStrings(Scenary->StringGrid1->Rows[1]);
    Lst->SaveToFile(FN2, TEncoding::Unicode);
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 10
29.09.2013, 21:25  [ТС]
Ну он же не запишет в файл в таком же порядке который был до этого, то есть каждый элемент с новой строки и нужны только элементы со столбцов 2 и 3

Добавлено через 14 минут
Разобрался сам) Спасибо большое, просто переделал исходный файл
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,853
Записей в блоге: 12
29.09.2013, 21:36
Цитата Сообщение от UfaFox Посмотреть сообщение
Ну он же не запишет в файл в таком же порядке который был до этого
Он запишет абсолютно в таком же порядке
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 10
29.09.2013, 22:13  [ТС]
Сейчас еще начал разбираться с другим файлов, где присутствуют числа, он почему то после каждого числа ставит пустую ячейку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AnsiString FN2 = ExtractFilePath(Application->ExeName)+"\\2013_2.txt";
    int k=1;
    int m=0;
    std::auto_ptr<TStringList> Lst1(new TStringList); // #include <memory>
    Lst1->LoadFromFile(FN2, TEncoding::Unicode);
    for(int j = 0; j < Lst1->Count; j++)
    {
        if (m>5)
        {
             m=0;
             k=k+1;
             Scenary->StringGrid2->Cells[m][k] = Lst1->Strings[j];
        }
        else
        {
            Scenary->StringGrid2->Cells[m][k] = Lst1->Strings[j];
        }
        m=m+1;
    }
Результат примерно такой:
1 | олваываоло|30,2| |30,2| |
30,2| |
а должно быть :
1 | олваываоло|30,2|30,2 |30,2|
Вложения
Тип файла: txt 2013_2.txt (1.1 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 10
29.09.2013, 22:26  [ТС]
Извините, разобрался, дело в файле
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,853
Записей в блоге: 12
29.09.2013, 22:27
Так у тебя и в файле после каждого числа стоит перевод строки, только не CR+LF, а CR, поэтому Блокнот их не видит. А вот Notepad++ видит:
Миниатюры
Чтение файла с русскими буквами в StringGrid  
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
30.09.2013, 00:08
Цитата Сообщение от UfaFox Посмотреть сообщение
Что можете подсказать?
Попробовать явно указать (char)Buffer1[i]. Русские буквы воспринимаются отрицательными значениями и это иногда вносит путаницу в обработку символов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.09.2013, 00:08
Помогаю со студенческими работами здесь

Чтение и отображение текстового файла с русскими символами
Все приемчики указанные в разделе русский текст в консоли не проходят SetConsoleCP(1251); SetConsoleOutputCP(1251); setlocale...

Дан файл, содержащий текст, записанный строчными русскими буквами. Получить в другом файле тот же текст, записанный заглавными буквами
Дан файл, содержащий текст, записанный строчными русскими буквами. Получить в другом файле тот же текст, записанный заглавными буквами.

Проблема с русскими буквами
Всем привет! Столкнулся с проблемой: по идее, когда вводишь русскую маленькую букву, то должен выходить плюсик, но так происходит только на...

Вывод русскими буквами
Вообщем в задачке нужно рассчитать всевозможные тройки ФИО. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstring&gt; ...

Отображение get русскими буквами.
http://my-site.org.ua/index.php?name=буквы &lt;?php $showw = $_GET; echo $showw; ?&gt; Выводит: Р±СѓРєРІС‹


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru