Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790

Картинки в ini-file. Не верные чтение или запись?

20.11.2015, 09:45. Показов 1800. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При чтении предварительно записанных изображений из ini-файла в TImage картинка в формате BMP появляется в виде черного квадрата Малевича,
а в формате Jpeg читается частично.
Чтобы понятно было о чем речь можно взглянуть на небольшой тестовый проектик.
Проверка показала, что и в D7 и в D2010 эффект одинаков.

Может кому приходилось бороться с этакими артефактами.
Вложения
Тип файла: zip ImageAndIni.zip (341.7 Кб, 14 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2015, 09:45
Ответы с готовыми решениями:

Чтение ini-file в Dictionary
Мне нужно прочитать ini файл в Dictionary(Of String, String). Алгоритм для чтения есть, программа вроде рабочая - но файл считывать не...

Запись и чтение *.ini
Здравствуйте. Вот код записи в *.ini файл: //--------------------------------------------------------------------------- void...

Запись и чтение. ini файл
Делаю файл с настройками. При открытии программы создаю файл из Project1 //создание файла в директории программы Ini :=...

16
Эксперт .NET
 Аватар для Rius
13026 / 7591 / 1661
Регистрация: 25.05.2015
Сообщений: 23,091
Записей в блоге: 14
20.11.2015, 10:09
Переходите на формат XML, раз уж припёрло хранить изображения в файле настроек.
Ini-файлы для этого не предназначены. И по адекватности, и по ограничениям на длину.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
20.11.2015, 10:12  [ТС]
Хорошо бы получить ответ по существу вопроса.
0
Эксперт .NET
 Аватар для Rius
13026 / 7591 / 1661
Регистрация: 25.05.2015
Сообщений: 23,091
Записей в блоге: 14
20.11.2015, 10:20
Это и есть ответ по существу. Не ползуйтесь не по назначению этим древним костылём.

http://www.gmccomb.com/vault/edge/ini.html
INI files are ideal when the there is relatively little data (INI files have a 64K file size limit), and when it is in text-only format. INI files can be readily shared across a network simply by placing the file on a network drive. The main disadvantage to INI files is that the text for each key entry must be under 256 bytes (the example above limit the entry to 128 characters). Another disadvantage is that the data in an INI file can contain text only, no special formatting, tabs, hard returns, or extended formatting. INI files can be edited by any text editor or word processor.
Для совсем запущенных любителей дельфей есть TMemIniFile

Добавлено через 2 минуты
http://docwiki.embarcadero.com... naryStream
Note: When used with a Windows .ini file, ReadBinaryStream is limited to 1023 characters,
2
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
20.11.2015, 11:19
Цитата Сообщение от Скандербег Посмотреть сообщение
При чтении предварительно записанных изображений из ini-файла в TImage картинка в формате BMP появляется в виде черного квадрата Малевича,
а в формате Jpeg читается частично.
Сейчас проверил вот таким образом:
- Bitmap данные из файла загрузил в Image1;
- Из Image1 Bitmap данные поместил в поток.
---
- Содержимое потока поместил в ANSI строку S1.
- Содержимое потока сначала записал в INI файл, а потом прочитал из INI файла обратно в поток.
- Содержимое потока поместил в ANSI строку S2.
---
- Сравнил строки S1 и S2 - оказалось S1 <> S2 ! Вот в этом причина проблемы.
Delphi
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
48
49
procedure TForm1.Button3Click(Sender: TObject);
var
  Fs : TFileStream;
  Ms : TMemoryStream;
  Ini : TIniFile;
  S1, S2 : AnsiString;
  Path : string;
begin
  Fs := nil;
  Ms := nil;
  Ini := nil;
  try
    //1. Получаем поток с исходными данными (данные Bitmap).
 
    //Загружаем из файла исходные данные Bitmap в Image1.
    Path := ExtractFilePath(ExtractFilePath(ParamStr(0)));
    Image1.Picture.Bitmap.LoadFromFile(Path + '01.bmp');
    //Bitmap содержимое из Image1 переписываем в поток.
    Ms := TMemoryStream.Create;
    Image1.Picture.Bitmap.SaveToStream(Ms);
 
    //2. Данные исходного потока записываем в ANSI строку S1.
 
    SetLength(S1, Ms.Size);
    Ms.Position := 0;
    Ms.Read(S1[1], Ms.Size);
 
    //3. Данные исходного потока записываем в INI файл, затем читаем эти данные
    //   обратно в поток, а потом помещаем их в ANSI строку S2.
    Ini := TIniFile.Create(Path + 'project.ini');
    Ms.Position := 0;
    Ini.WriteBinaryStream('images', 'img1', Ms);
    Ms.Size := 0;
    Ini.ReadBinaryStream('images', 'img1', Ms);
    SetLength(S2, Ms.Size);
    Ms.Position := 0;
    Ms.Read(S2[1], Ms.Size);
 
    //4. Сравниваем строки S1 и S2.
    if S1 = S2 then
      ShowMessage('S1 = S2')
    else
      ShowMessage('S1 <> S2 !');
  finally
    FreeAndNil(Fs);
    FreeAndNil(Ms);
    FreeAndNil(Ini);
  end;
end;
Т. е., запись/чтение бинарных данных в INI файл, приводит к порче этих данных. Возможно, порча происходит в начале или (и) в конце этих данных (первый/последний байты). Это надо дополнительно проверить.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
20.11.2015, 11:27  [ТС]
Как и сказал Rius, ini ограничен по длине и отпадает однозначно.
"Порчи" данных нет. Записывается весь поток исправно, а вот читается, действительно, только 1023 байта. Маловато будет.
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
20.11.2015, 11:29
Цитата Сообщение от Скандербег Посмотреть сообщение
Как и сказал Rius, ini ограничен по длине и отпадает однозначно.
Да, всё верно. Сейчас посмотрел - в INI файл записываются только первые 1023 байта = (1024 - 1) байт.
0
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,244
20.11.2015, 20:48
блин, видал, как пытались забивать гвозди микроскопом, но чтоб рассматривали микробов через молоток, вижу впервые!

Как звучит оригинал задания?
0
21.11.2015, 01:51

Не по теме:

Цитата Сообщение от Verevkin Посмотреть сообщение
Как звучит оригинал задания?
Какой оригинал? Какого задания?
Верёвкин, успокойся. Всё всем уже ясно.

0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
21.11.2015, 01:54
Цитата Сообщение от Rius Посмотреть сообщение
Переходите на формат XML, раз уж припёрло хранить изображения в файле настроек.
зачем в XML хранить картинки и другие ресурсы? это текстовый файл. не целесообразнее было бы, хранить бинарные файлы и в бинарном виде, а не в текстовом??
0
21.11.2015, 02:58

Не по теме:

Цитата Сообщение от northener Посмотреть сообщение
Верёвкин, успокойся. Всё всем уже ясно.
эт чо ваще было-то?

0
Эксперт .NET
 Аватар для Rius
13026 / 7591 / 1661
Регистрация: 25.05.2015
Сообщений: 23,091
Записей в блоге: 14
21.11.2015, 08:51
Arcor, есть ситуации, в которых удобнее хранить данные в текстовом виде. Не касаясь здешнего случая.
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
21.11.2015, 12:24
Цитата Сообщение от Rius Посмотреть сообщение
Arcor, есть ситуации, в которых удобнее хранить данные в текстовом виде.
И какие же это ситуации? Приведите пример, мне интересно стало, где и когда мне, скажем, песню или кратинку храниить в текстовом формате ?
0
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,244
21.11.2015, 12:27
Цитата Сообщение от Arcor Посмотреть сообщение
И какие же это ситуации? Приведите пример, мне интересно стало, где и когда мне, скажем, песню или кратинку храниить в текстовом формате ?
на ум приходит только механизЬм прицепления файлов к e-mail сообщениям в кодировке base64.
0
Эксперт .NET
 Аватар для Rius
13026 / 7591 / 1661
Регистрация: 25.05.2015
Сообщений: 23,091
Записей в блоге: 14
21.11.2015, 12:57
Arcor, Вы ещё один местный тролль или правда интересуетесь?
Когда нужно сохранить в одном файле и текст, и массив байт. Известный пример - base64 для двоичных файлов в почте.
Или когда гибкость и наглядность xml выгоднее, чем меньший размер бинарного формата.

Добавлено через 15 минут
Пример dfm (файлы форм в Delphi)
https://github.com/leancloud/d... aSDemo.dfm

Guid, MD5 и пр. - типичные двоичные данные. Однако, очень широко распространено их хранение в текстовом виде.
0
21.11.2015, 13:13

Не по теме:

Цитата Сообщение от Rius Посмотреть сообщение
Arcor, Вы ещё один местный тролль
вроде как нормально спросил. откуда такая реакция то? нервы? - мне очень жаль тогда, извините

0
21.11.2015, 13:15

Не по теме:

Arcor, да мне уже 2 тролля тут попалось, придирающихся к мелочам, которые нормальные люди и сами могли бы додумать.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2015, 13:15
Помогаю со студенческими работами здесь

Чтение и запись файла ini
есть файл ini где хронятся настройке сайтика, считать получается а вот обнвоить параметры не удается. Прошу попомчь Заранее спасибо! ...

Не работает запись/чтение ini-файлов
Недавно изменил способ определения имени файла, и теперь программа не работает string ini; public INIManager(string name) ...

Чтение и запись в ini через combobox
Нужна помощь в C# Windows Forms, нужно сделать запись и чтение списка клиентов, из ini-файла в combobox. Примерный вид ini: ...

Запись из ListView в ini файл и чтение данных
Добрый день. Подскажите плиз. Есть форма, на которой ListView, необходимо сохранить данные в ini файл. Далее, если добавлять запись в...

Запись в INI файл значение Radiobutton и чтение значения
Доброго времени суток. У меня имеется программа с 7 формами, хочу сделать, чтобы при закрытии главной формы из 7-ой формы записывались...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru