Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 19.12.2012
Сообщений: 108
1

Сохраняет файл не в той кодировке

13.06.2015, 23:40. Показов 1593. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, надеюсь именно ВЫ мне сможете помочь
Суть проблемы в том, что файл сохраняется, НО если открыть его любым текстовым редактором, в ответ видишь непонятные символы. Как сделать так, чтобы сохраняла в нормальной кодировке (проще говоря, на русском языке).

Язык программирования : Delphi
Файл сохраняю с помощью TFileStream и SaveDialog
модуль с нужным кодом "MAI"
За загрузку файла отвечают строки с 770-863
За сохранение файла отвечают строки 880-955 и/или (в зависимости, что выбрали "Сохранить" или "Сохранить как" ) с 957 - 1015

Надеюсь, вы мне сможете помочь
Заранее ОГРОМНОЕ СПАСИБО !
Вложения
Тип файла: rar МАИ - копия.rar (1.21 Мб, 3 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2015, 23:40
Ответы с готовыми решениями:

Действительно ли файл содержит такой текст и в той ли кодировке?
Проверьте, записана ли в файле, который валяется в этом архиве, стока "2,8.TreePict" в кодировке...

Задача: считать xml-файл в DOM, кое-что там подправить, записать результат обратно в той же кодировке.
Задача: считать xml-файл в DOM, кое-что там подправить, записать результат обратно в той же...

Переиндексировал не в той кодировке
После сегоднешнего апа появилась такая вот проблема.. вот что яша сделал с одним моим сайтом: ...

Char* не в той кодировке
Я читая память процесса игры и пытаюсь получить имя нужного мне обьекта, проблем найти нужный адрес...

4
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
14.06.2015, 00:17 2
Лучший ответ Сообщение было отмечено Frodo4500 как решение

Решение

Там дело не в кодировке. В ряде случаев записывается мусор, где-то - двоичные данные (не текстовые).
Например:
Delphi
1
SvFile.write(opt,sizeOf(opt));
Здесь переменная opt принадлежит типу:
Delphi
1
2
3
4
5
6
7
8
9
10
11
TMyFile=Record
  c:byte;{0- TrackBar, 1-Bar,2-None(Unit2)}
  e:boolean;{Показывает, есть ли ошибка в текущий момент}
  MaxTrk,{MOptions.MaxTrk}
  Changemax:integer;{MOptions.Changemax}
  Elem:boolean;//Вписывать или нет фразу 'Название Элемента'
  IerhLev:Boolean;//Выделять или нет уровни ирерархий
  Col:(one,all,none);//Выделять или нет вертикали в конечной матрице
  Autsv:Boolean;//Автосохранение
  Resurs:Boolean;//Режим сберегания ресурсов
end;
Запись (Record) этого типа не является упакованной. Поэтому может содержать байты выравнивания, не несущие полезной информации и предназначенные для того, чтобы выровнять поля записи по границам 4-ёх или 8-ми байтных слов. Если запись предназначена для записи/чтения из файлов, то её тип лучше объявить упакованным - packed record. В этом случае переменные этого типа не будут содержать байтов выравнивания.
Пояснения: Упакованные и неупакованные структуры. Байты выравнивания.

Кроме этого, тип TMyFile содержит, например, логического типа. Такие значения будут записаны в виде байта со значением 0 или -1. Причём, значение -1 приведённое к типу AnsiChar будет представлено кодом: AnsiChar(255 - 1) = AnsiChar(254) = "■". Подобное будет происходить и с другими двоичными (не текстовыми) данными. Чтобы такие данные записать в виде, пригодном для чтения человеком, надо выполнить соответствующие преобразования с помощью вызовов: BoolToStr(), IntToStr(), FloatToStr() и т. д.

Вместо такого кода:
Delphi
1
2
3
4
5
  st:=Memos[2,i1].text;
  vr:=length(st);
  SvFile.write(vr,sizeof(integer));
  for i2:=1 to vr do
    SvFile.write(st[i2],sizeof(char));
следует писать так:
Delphi
1
2
  st:=Memos[2,i1].text;
  SvFile.write(st[1], Length(st) * SizeOf(Char));
И т. д.
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
14.06.2015, 00:22 3
Цитата Сообщение от Frodo4500 Посмотреть сообщение
если открыть его любым текстовым редактором, в ответ видишь непонятные символы.
А нафига открывать нетекстовый файл в текстовом редакторе?
0
0 / 0 / 1
Регистрация: 19.12.2012
Сообщений: 108
14.06.2015, 09:13  [ТС] 4
northener, Для универсальности, чтобы была возможность внести мелкие изменения в файл с данными
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
15.06.2015, 12:09 5
Цитата Сообщение от Frodo4500 Посмотреть сообщение
northener, Для универсальности, чтобы была возможность внести мелкие изменения в файл с данными
Для универсальности существуют т.н. HEX-редакторы.
0
15.06.2015, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2015, 12:09
Помогаю со студенческими работами здесь

Магнитола не сохраняет последний воспроизведённый файл (с флешки), а позицию сохраняет
Во общем в машине есть магнитола JVC, в ней есть CD диск, USB flash накопитель и радио... Так вот:...

Из grid текст записывается не в той кодировке?
Таблица в utf8. Текстовые данные - на русском. Завожу новую запись в grid. После ввода русского...

Как сохранить html-страницу в кодировке ANSI (сохраняет только в UTF-8)?
Добрый день! Нужно сохранить страницу в файл в кодировке ANSI. Если открыть страницу в...

Чтение и запись файла в одной и той же кодировке
Всем привет. Столкнулся с такой проблемой: есть файл в формате exe. Нужно чтобы программа его...

Кодировка sublime, случайно сохранил сайт в не той кодировке и не могу вернуть обратно
Здрастие, случайно сохранил сайт в не той кодировке и не могу вернуть обратно, сейчас все выглядит...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru