Lazarus stream read error

Stream read error - TMemoryStream

Topic: Stream read error — TMemoryStream  (Read 16722 times)

Hi,
I’ve problem with reading some file with TMemoryStream.LoadFromFile.
I can load files with size 8MB, 12MB, 15.8MB, but for example file with size > 22.7MB cause «stream read error» exception.
Is TMemoryStream has memory limitations?


Logged


It should go fine to at least 2 GB depending on if any variable is integer, otherwise 4 GB. Maybe small error in code?


Logged


It should go fine to at least 2 GB depending on if any variable is integer, otherwise 4 GB. Maybe small error in code?

the point is that the code is clear:

procedure RDFile;
var
 pp: TMemoryStream;
begin
 pp:=TMemoryStream.Create;
 pp.LoadFromFile('C:bigFile.rar');
end;   

smaller files read ok.


Logged


but if I use TFileStream with TMemoryStream then it’s ok

procedure RDFile;
var
 pp: TMemoryStream;
 oo: TFileStream; 
begin
 oo:=TFileStream.Create('C:bigFile.rar',fmOpenRead);
 pp:=TMemoryStream.Create;
 pp.LoadFromStream(oo);
end;

???


Logged


procedure TForm1.FormCreate(Sender: TObject);
var ms: TMemoryStream;
begin
  ms:=TMemoryStream.Create;
  ms.LoadFromFile('E:Nettitest.zip'); // This is 290Mb file
  ms.Free;
end;
This works just fine for me, no errors.

Maybe you’re forgetting to .Free your streams and they remain open on disk after program exits? Meaning it may have worked somehow for first time but not for the next. Freepascal carbage collection may not automatically free objects you leave open from procedures, right?

« Last Edit: October 06, 2011, 02:44:04 pm by User137 »


Logged


Free Pascal has no garbage collector at all.

strings and dynamic arrays are ref-counted, which is something different from garbage collection, but it also automatically frees these entities.

Objects like TMemoryStream are never automatically freed, you need to free them yourself.


Logged


OK. I found what is the problem.
In the example I gave not exactly real path. I use ‘Z:bigFile.rar’ where Z is mapped drive !!!
And that’s the problem. If I load file from C: then it’s ok, if I load from Z: (map net drive) I get error.

So my app, can crash in that situation. Bug in streams ?


Logged


Did you find any solution? I have the same problem with latest trunk. Loading stream from local drive works fie but loading from network drive or virtual under VirtualBox gives the error «Unable to open file…»


Logged

Debian Testing x64, XFCE 4.16 / Windows 10 PL — latest updates
Lazarus 2.2.0, FPC 3.2.2


1 / 1 / 0

Регистрация: 27.03.2018

Сообщений: 93

1

23.05.2020, 11:58. Показов 3480. Ответов 7


Подскажите, что делаю не так.
БД Firebird есть поле типа Blob Binary. В него загружаю фото сотрудников. На форму выводится фото через компонент TDBImage.
При открытии проекта появляется ошибка «stream read error» если файл фото около или больше 1 Мб.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32451 / 20945 / 8105

Регистрация: 22.10.2011

Сообщений: 36,213

Записей в блоге: 7

23.05.2020, 12:22

2

Как именно в БД загружаются изображения?



0



1 / 1 / 0

Регистрация: 27.03.2018

Сообщений: 93

23.05.2020, 12:33

 [ТС]

3

через Lazarus загрузку пока не реализовал. Загружаю через Firebird напрямую в таблицу



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32451 / 20945 / 8105

Регистрация: 22.10.2011

Сообщений: 36,213

Записей в блоге: 7

23.05.2020, 12:42

4

Вот отсюда и проблема. Когда будет загружено через Лазарус — будет работать.



0



1 / 1 / 0

Регистрация: 27.03.2018

Сообщений: 93

23.05.2020, 12:47

 [ТС]

5

ищу реализацию загрузки картинки по кнопке. может подскажите где посмотреть?



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32451 / 20945 / 8105

Регистрация: 22.10.2011

Сообщений: 36,213

Записей в блоге: 7

23.05.2020, 12:52

6

Лучший ответ Сообщение было отмечено salaev как решение

Решение



1



1 / 1 / 0

Регистрация: 27.03.2018

Сообщений: 93

23.05.2020, 14:56

 [ТС]

7

Спасибо огромное. Работает.
А как можно убрать ошибку из-за латинских символов в пути к файлу при добавлении?

Миниатюры

Ошибка stream read error
 



0



1 / 1 / 0

Регистрация: 27.03.2018

Сообщений: 93

23.05.2020, 15:25

 [ТС]

8

и еще…

1. От первого, после открытия проги, клика «Добавить фото» до открытия окна проходит примерно 15 секунд, последующие добавления — около 5 секунд.
2. При добавлении файла Tiff выдает ошибку «stream read error», но загружает его. Потом каждый раз, как курсор встает на человека с этой картинкой — снова ошибка «stream read error» .

Это решимо?



0



Модераторы: alexs, Модераторы

Виснет RxVersionInfo

Начиная с какого-то транка лазаря при запуске программы вылетает ошибка Stream read error
Ссылается на процедуру

Код: Выделить всё
procedure TRxVersionInfo.DoVersionInfo(V: TVersionResource);
var
  i,j:integer;
begin
  for i:=0 to V.StringFileInfo.Count-1 do
  begin
    for j:=0 to V.StringFileInfo[i].Count-1 do
      FValues.Values[V.StringFileInfo[i].Keys[j]]:=SysToUTF8(V.StringFileInfo[i].ValuesByIndex[j]);
  end;
end;

Если внутренность процедуры закомментарить, то программа нормально стартует, но версию свою есссссссно не кажет.
Такая же бяка и с примером из папки demos. :(

Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 632
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Виснет RxVersionInfo

Сообщение alexs » 27.10.2017 16:12:51

Lazarus 1.9.0 r56213M FPC 3.1.1 i386-win32-win32/win64
Нормально
Пример сам себя верно определяет.

Аватара пользователя
alexs
долгожитель
 
Сообщения: 4009
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
  • Профиль
  • Сайт
  • ICQ

Re: Виснет RxVersionInfo

Сообщение Little_Roo » 27.10.2017 17:16:51

Методом быстрого художественного тыка —
если в параметрах проекта — Сведения о версии — Comments есть русские символы, то номер версии не выводится —
B CompanyName кириллица — stream read error

Убрал из проекта все, кроме FileVersion — взлетело :D

Lazarus 1.9.0 r56180 FPC 3.1.1 i386-win32-win32/win64

Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 632
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Виснет RxVersionInfo

Сообщение alexs » 27.10.2017 17:37:14

Всё работает

Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  if RxVersionInfo1.Valid then
  begin
    Memo1.Lines.Add('FileName = ' + RxVersionInfo1.FileName);
    Memo1.Lines.Add('FileLongVersion = '+RxVersionInfo1.FileLongVersion);
    Memo1.Lines.Add('ProductLongVersion = '+RxVersionInfo1.ProductLongVersion);
    Memo1.Lines.Add('VersionLanguage = '+RxVersionInfo1.VersionLanguage);
    Memo1.Lines.Add('VersionCharSet = '+RxVersionInfo1.VersionCharSet);
    Memo1.Lines.Add('VersionNum = '+RxVersionInfo1.VersionNum.ToString);
    Memo1.Lines.Add('Comments = '+RxVersionInfo1.Comments);
    Memo1.Lines.Add('CompanyName = '+RxVersionInfo1.CompanyName);
    Memo1.Lines.Add('FileDescription = '+RxVersionInfo1.FileDescription);
    Memo1.Lines.Add('FileVersion = '+RxVersionInfo1.FileVersion);
    Memo1.Lines.Add('InternalName = '+RxVersionInfo1.InternalName);
    Memo1.Lines.Add('LegalCopyright = '+RxVersionInfo1.LegalCopyright);
    Memo1.Lines.Add('LegalTrademarks = '+RxVersionInfo1.LegalTrademarks);
    Memo1.Lines.Add('OriginalFilename = '+RxVersionInfo1.OriginalFilename);
    Memo1.Lines.Add('ProductVersion = '+RxVersionInfo1.ProductVersion);
    Memo1.Lines.Add('ProductName = '+RxVersionInfo1.ProductName);
    Memo1.Lines.Add('SpecialBuild = '+RxVersionInfo1.SpecialBuild);
    Memo1.Lines.Add('PrivateBuild = '+RxVersionInfo1.PrivateBuild);
  end
  else
    Memo1.Lines.Add('Ошибка чтения');
end;     
Вложения
aaa.png
aaa.png (9.92 КБ) Просмотров: 8200
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4009
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
  • Профиль
  • Сайт
  • ICQ

Re: Виснет RxVersionInfo

Сообщение Little_Roo » 27.10.2017 17:57:09

Мистика :(

Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 632
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Виснет RxVersionInfo

Сообщение alexs » 30.10.2017 09:31:18

Рекомендую проверить целостность всех данных. Ресурсы не битые?
Ну и я проверял на последних сборках FPC и Lazarus

Аватара пользователя
alexs
долгожитель
 
Сообщения: 4009
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
  • Профиль
  • Сайт
  • ICQ

Re: Виснет RxVersionInfo

Сообщение Little_Roo » 01.11.2017 14:30:18

Даже на пустом проекте (с одной строкой)

Код: Выделить всё
Label1.Caption:=RxVersioninfo1.CompanyName;

в конце выводится квадрат :shock:
На незаполненном поле — только квадрат….Это касается и, к примеру, FileVersion…

Все транковое — Rx svn 6050
Lazarus 1.9.0 r56244 FPC 3.1.1 i386-win32-win32/win64


Блин, это почему-то только на ХР… на Вынь7 все корректно

Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 632
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург


Вернуться в RxLib

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

#1 29 марта 2021 09:58:31

  • Dyaka
  • Участник
  • Неактивен
  • На форуме с 29 марта 2021
  • Сообщений: 5

Тема: Ошибка Stream Read Error

Добрый день! Не нашел решения проблемы по данному вопросу. При входе в программу и выполнении любого действия у пользователя вылетает ошибка Stream read error. У остальных пользователей все нормально. Переустановка не помогает.

#2 Ответ от Олег Зырянов 29 марта 2021 10:07:56

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,183

Re: Ошибка Stream Read Error

Здравствуйте! Запустите конфигурацию TechnologiCS с ключом /skipreg или удалите вручную *.cfg файлы https://help.technologics.ru/7.9/TCSHelp/_876.htm

Больше всего похожена это. Хотя. Что значит при выполнении любого действия? Программа то работает в итоге?

#3 Ответ от Dyaka 29 марта 2021 10:58:21

  • Dyaka
  • Участник
  • Неактивен
  • На форуме с 29 марта 2021
  • Сообщений: 5

Re: Ошибка Stream Read Error

Олег Зырянов пишет:

Здравствуйте! Запустите конфигурацию TechnologiCS с ключом /skipreg или удалите вручную *.cfg файлы https://help.technologics.ru/7.9/TCSHelp/_876.htm

Больше всего похожена это. Хотя. Что значит при выполнении любого действия? Программа то работает в итоге?

Работает, пользователь логинится, но после каждого действия вылетает данная ошибка. Запуск с ключом и удаление .cfg файлов не помогло

#4 Ответ от Олег Зырянов 29 марта 2021 11:06:08

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,183

Re: Ошибка Stream Read Error

А можно точную версию TechnologiCS , и более подробное описание того что просходит, послеlовательно по шагам.
В идеале чтобы шаги эти повторялись, а не были случайными. То есть делаем — ошибка. Еще раз делаем — та же ошибка. Перезапустили TCS, повторяем -снова ошибка эта.

#5 Ответ от Dyaka 29 марта 2021 11:17:06

  • Dyaka
  • Участник
  • Неактивен
  • На форуме с 29 марта 2021
  • Сообщений: 5

Re: Ошибка Stream Read Error

Олег Зырянов пишет:

А можно точную версию TechnologiCS , и более подробное описание того что просходит, послеlовательно по шагам.
В идеале чтобы шаги эти повторялись, а не были случайными. То есть делаем — ошибка. Еще раз делаем — та же ошибка. Перезапустили TCS, повторяем -снова ошибка эта.

У пользователя версия 5.7.0.0. Я не большой эксперт этой программы, опишу, как могу. Пользователь логинится, программа загружается, пишет о новых сообщениях, закрываем окно, и вылетает окошко с ошибкой Stream read error. Пользователь его закрывает, делает любой отчет, макрос, ошибка снова вылетает, но действие выполняется. В целом, все работает, просто после каждого действия пользователя с момента входа вылетает окошко с ошибкой.

#6 Ответ от Олег Зырянов 29 марта 2021 11:28:08

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,183

Re: Ошибка Stream Read Error

Можно еще скриншот ошибки.

И… Если пользователье ничего не делает,  просто откроет справочник на просмотр, ну и допустим просто иногда открывает форму редактирования, ничего не меняет, закрывает (то есть режим просмотр). Ошибка будет?

#7 Ответ от Dyaka 29 марта 2021 11:39:40 (изменено: , 29 марта 2021 11:39:40)

  • Dyaka
  • Участник
  • Неактивен
  • На форуме с 29 марта 2021
  • Сообщений: 5

Re: Ошибка Stream Read Error

Олег Зырянов пишет:

Можно еще скриншот ошибки.

И… Если пользователье ничего не делает,  просто откроет справочник на просмотр, ну и допустим просто иногда открывает форму редактирования, ничего не меняет, закрывает (то есть режим просмотр). Ошибка будет?

Извиняюсь за качество, как прислали мне. После закрытия окна ошибки и простого просмотра форм ошибка не возникает. Когда пользователь подписывает какой-то документ она снова появляется. При этом документ подписывается (последнее со слов пользователя).

Олег Зырянов пишет:

Можно еще скриншот ошибки.

И… Если пользователье ничего не делает,  просто откроет справочник на просмотр, ну и допустим просто иногда открывает форму редактирования, ничего не меняет, закрывает (то есть режим просмотр). Ошибка будет?

Post’s attachments

image0011.jpg
image0011.jpg 27.33 Кб, 6 скачиваний с 2021-03-29 

You don’t have the permssions to download the attachments of this post.

#8 Ответ от Олег Зырянов 30 марта 2021 08:11:54

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,183

Re: Ошибка Stream Read Error

А скажите еще полную версию. До билда.

В 5.7 была нехорошая ошибка,правда вряд ли она бы так проявлялась, но все же.

#9 Ответ от Dyaka 30 марта 2021 14:29:37

  • Dyaka
  • Участник
  • Неактивен
  • На форуме с 29 марта 2021
  • Сообщений: 5

Re: Ошибка Stream Read Error

Олег Зырянов пишет:

А скажите еще полную версию. До билда.

В 5.7 была нехорошая ошибка,правда вряд ли она бы так проявлялась, но все же.

10968

#10 Ответ от Олег Зырянов 30 марта 2021 15:32:51

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,183

Re: Ошибка Stream Read Error

Есть новее на сайте, но не критично наверное http://www.technologics.ru/download/addition/v5.html.

Давайте еще версию операционной системы и содержимое файла csdn.ini (тот что в папке программы и тот что в профиле пользователя — точно не подскажу, 5.7 старая и как она точно работает уже мало кто помнит)

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

I’m getting this error message under heavy load. Here is code abstract and message from my error log.
I tried everything I could think of. Any suggestion would be greatly appreciated.

Procedure tCacheInMemory.StreamValue(Name: String; IgnoreCase: Boolean; Var Stream:     TStringStream);
Var
  i: Integer;
Begin
  i := 0;
  Try
    If Not active Then
      exit;
    arrayLock.BeginRead;
    Try
      i := Search(Name);
      If i > -1 Then Begin
        If fItems[i].value = Nil Then
          exit;
        fItems[i].value.Position := 0;
        Stream.Position := 0;
        Stream.CopyFrom(fItems[i].value, fItems[i].value.Size);
      End;
    Finally
      arrayLock.EndRead;
    End;
  Except { ...execution jumps to here }
    On E: Exception Do Begin
      x.xLogError('LogErrorCacheInMemory.txt', 'StreamValue:' + E.Message + ' ItemsCount:' + IntToStr( High(fItems)) + 'Memory:' + IntToStr(x.GetMemoryInfoMemory) + endLn + 'StreamSize : ' + IntToStr(fItems[i].value.Size) + ' i=' + IntToStr(i) + 'Name: ' + Name);
      Clear;
    End
  End;
End;

Log Entries:

 3/10/2011 10:52:59 AM: StreamValue:Stream read error ItemsCount:7562 Memory:240816
   StreamSize : 43 i=7506 Name: \xxxxxxxxWebRoot\images1x1.gif
3/10/2011 12:39:14 PM: StreamValue:Stream read error ItemsCount:10172 Memory:345808
   StreamSize : 849 i=10108 Name: \xxxxxxxxWebRoot\cssscreen.add.css
3/10/2011 3:45:29 PM: StreamValue:Stream read error ItemsCount:11200 Memory:425464
   StreamSize : 3743 i=11198 Name: \xxxxxxxxWebRoot\JSArtWeb.js

P.S.

arrayLock: TMultiReadExclusiveWriteSynchronizer;
 fItems: Array Of rCache;
Type
  rCache = Record
    Name: String;
    value: TStringStream;
    expired: TDateTime;
  End;

And calling function:

Function tCacheInMemory.CacheCheck(cName: String; Out BlobStream: TStringStream):   Boolean;
Begin
Result := False;
   If Not IfUseCache Then
      exit;
    BlobStream.SetSize(0);
    BlobStream.Size := 0;
    StreamValue(trim(cName), True, BlobStream);
    If BlobStream.Size > 0 Then
    Result := True;
End;

`

Wolf's user avatar

Wolf

9,4847 gold badges62 silver badges105 bronze badges

asked Mar 15, 2011 at 21:34

Yuriy's user avatar

6

You’re not using correct locking. You’re acquiring a read lock on the array of cache entries, but once you find the item you want, you modify it. First, you explicitly modify it by assigning its Position property, and then you implicitly modify it by reading from it, which modifies its Position property again. When other code attempts to read from that same cache item, you’ll have interference. If the source stream’s Position property changes between the time the destination stream calculates how many bytes are available and the time it actually requests to read those bytes, you’ll get a stream-read error.

I have a couple pieces of advice related to this:

  • Don’t use streams as a storage device in the first place. You’re apparently holding the contents of files. You’re not going to change those, so you don’t need a data structure designed for making sequential changes. Instead, just store the data in simple arrays of bytes: TBytes. (Also, use of TStringStream in particular introduces confusion over whether those strings’ encodings are important. A simple file cache shouldn’t be concerned with string encodings at all. If you must use a stream, use a content-agnostic class like TMemoryStream.)
  • Don’t quell an exception that you haven’t actually handled. In this code, you’re catching all exception types, logging some information, clearing the cache, and then proceeding as though everything is normal. But you haven’t done anything to resolve the problem that triggered the exception, so everything is not normal. Since you’re not really handling the exception, you need to make sure it propagates to the caller. Call raise after to call Clear. (And when you log the exception, make sure you log the exception’s ClassName value as well as its message.)

answered Mar 15, 2011 at 23:19

Rob Kennedy's user avatar

Rob KennedyRob Kennedy

161k21 gold badges276 silver badges463 bronze badges

2

It looks like something external is blocking your stream files.

You could try to use Process Monitor to see what blocks it.

Another thing you can try is to open the stream in read-deny-write mode (please show us how you open the stream).

Something like this:

Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite) ;

Edit 1: Disregard the strike through part: you are using TStringStream.
I’ll keep the answer just in case anyone ever gets this kind of error when using TFileStream.

Edit 2: Yuriy posted this interesting addendum, but I’m not sure it will work, as the BlobStream is not initialized, just like Robert Love suspected:

Function TCacheInMemory.CacheCheck(cName: String; Out BlobStream: TStringStream): Boolean; 
Begin 
  Result := False; 
  Try 
    If Not IfUseCache Then 
      exit; 
    BlobStream.SetSize(0);  
    BlobStream.Size := 0;  
    StreamValue(trim(cName), True, BlobStream);  
    If BlobStream.Size > 0 Then  
      Result := True;  
  Except  
    On E: Exception Do  
    Begin  
      x.xLogError('LogErrorCacheInMemory.txt', 'CheckCacheOutStream:' + E.Message + ' ItemsCount:' + IntToStr( High(fItems)) + 'Memory:' + IntToStr(x.GetMemoryInfoMemory));  
    End;  
  End;  
End; 

—jeroen

Community's user avatar

answered Mar 15, 2011 at 21:55

Jeroen Wiert Pluimers's user avatar

5

IPB

> ВНИМАНИЕ!

> Stream read error, возникает ошибка

сообщение 25.11.2011 19:34

Сообщение
#1


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +



Доброго дня ув. форумчане. Сталкнулся с такой проблемой — моя Delphi программа работает с файлом и при каждом своём запуске считывает информацию с него (формат .bmp). В рандомном порядке я получаю ошибку Stream read error, которая обычно возникает, когда какое-либо другое приложение так же пользуется этим файлом. Но я проверил и ни 1 из приложений не может использовать этот файл — так же просто перезагружал компьютер и первым делом запускал программу — тоже самое, хотя на автозапуске системы никаких лишних программ нету. Буду рад любым мыслям и идеям.

———————

Цитата

Imagination is more important than knowledge.

Albert Einstein

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

IUnknown

сообщение 25.11.2011 22:41

Сообщение
#2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +



Цитата

Но я проверил и ни 1 из приложений не может использовать этот файл — так же просто перезагружал компьютер и первым делом запускал программу — тоже самое, хотя на автозапуске системы никаких лишних программ нету.

Значит, предположение о том, что что-то держит файл — неверное. Показывай код, выдающий ошибку, либо обращайся к телепатам за помощью. Без исходника ничего сказать невозможно.

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

Tan

сообщение 25.11.2011 22:47

Сообщение
#3


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +



Cпасибо за ответ. Есть картинка 256 x 256, переменная TexFileName содержит название файла, что находится в корневой директории проекта.

const
TexWidth = 256;
TexHeight = 256;
...
TexSizeX := TexWidth;
TexSizeY := TexHeight;
bitmap := TBitmap.Create;
bitmap.LoadFromFile(TexFileName);
For i := 0 to TexSizeX - 1 do // вот сюда кидает программу когда выдаётся ошибка
For j := 0 to TexSizeY - 1 do
begin
bits [i, j, 0] := GetRValue(bitmap.Canvas.Pixels[i,j]);
bits [i, j, 1] := GetGValue(bitmap.Canvas.Pixels[i,j]);
bits [i, j, 2] := GetBValue(bitmap.Canvas.Pixels[i,j]);
end;

———————

Цитата

Imagination is more important than knowledge.

Albert Einstein

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

IUnknown

сообщение 25.11.2011 22:53

Сообщение
#4


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +



Картинка чем создавалась? Фотошопом? Попробуй ее пересохранить другим редактором, GIMP-ом, или ACDSee, к примеру. На RSDN как-то была тема, что сохраненные фотошопом битмапы не грузятся через LoadFromFile, а пересохраненные (их размер — на 2 байта меньше, чем у фотошопленных) — прекрасно грузятся.

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

Tan

сообщение 26.11.2011 2:48

Сообщение
#5


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +



Да Photoshop. Тупо пересохранил через Paint, на мой взгляд проблема исчезла, никогда в жизни бы не подумал, что виноват редактор, ведь формат .bmp в теории не должен менять своей структуры в зависимости от редактора. Большое спасибо за помощь.

Сообщение отредактировано: Tan — 26.11.2011 2:48

———————

Цитата

Imagination is more important than knowledge.

Albert Einstein

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)

Пользователей: 0

500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают

Связь с администрацией: bu_gen в домене octagram.name

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Lazarus error identifier idents no member
  • Layout mismatch forestry как исправить
  • Layout error перевод
  • Lavenderbeard sea of thieves как исправить steam на русском
  • Lavenderbeard error sea of thieves

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии