Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Frodo4500
0 / 0 / 1
Регистрация: 19.12.2012
Сообщений: 93
1

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

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

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

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

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

Файл содержит количество столбцов матрицы. Создать файл той же структуры, содержащий произведение А*В
Задача: Даны два файла вещественных чисел с именами NameA и NameB, содержащие...

Поток не сохраняет в файл
Пишу загрузчик для одного из своих проектов. Но вот беда. Скачать файл,...

Не сохраняет в файл *.xls
begin RTime := Time; RDate := Date; ...

delphi не сохраняет в текстовый файл
Здраствуйте. Собственно хочу обратиться с просьбой помощи в моём коде. Проблема...

Запись в файл в правильной кодировке
у меня есть файл (блокнот), в него выводится информация. но вместо нормального...

4
Mawrat
12833 / 5741 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
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
northener
пофигист широкого профиля
3429 / 2328 / 631
Регистрация: 15.07.2013
Сообщений: 13,796
14.06.2015, 00:22 3
Цитата Сообщение от Frodo4500 Посмотреть сообщение
если открыть его любым текстовым редактором, в ответ видишь непонятные символы.
А нафига открывать нетекстовый файл в текстовом редакторе?
0
Frodo4500
0 / 0 / 1
Регистрация: 19.12.2012
Сообщений: 93
14.06.2015, 09:13  [ТС] 4
northener, Для универсальности, чтобы была возможность внести мелкие изменения в файл с данными
0
northener
пофигист широкого профиля
3429 / 2328 / 631
Регистрация: 15.07.2013
Сообщений: 13,796
15.06.2015, 12:09 5
Цитата Сообщение от Frodo4500 Посмотреть сообщение
northener, Для универсальности, чтобы была возможность внести мелкие изменения в файл с данными
Для универсальности существуют т.н. HEX-редакторы.
0
15.06.2015, 12:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2015, 12:09

Вывод информации в файл в кодировке unicode
Доброго времени суток! У меня такая проблема: Пишем с другом небольшой проект...

считать посимвольно txt файл в ANSi кодировке
Всем привет! Понимаю, что наверное вопрос о считывании посимвольно txt...

Программа не сохраняет данные в файл. Записи. Консольное приложение
Как и сказано в заголовке моя программа не сохраняет записи в файл. Сохранить...


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

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

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