![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
опшипка
опшипка © (2012-05-15 21:05:00)
var
vBlob: TStream;
BmpDest: Tbitmap;
begin
BmpDest := Tbitmap.Create;
BmpDest.PixelFormat := pf24bit;
vBlob := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('Image'), bmRead);
try
vBlob.Seek(0, soFromBeginning); // sереход в начало потока BLOB
// Image1.Picture.Bitmap.LoadFromStream(vBlob);
BmpDest.LoadFromStream(vBlob);
finally
vBlob.Free;
end;
result := BmpDest;
First chance exception at $760ED36F. Exception class EOSError with message
'System Error. Code: 87.
Параметр задан неверно'.
vBlob.Free; //вот тут ошибка. как так?
sniknik (2012-05-16 08:16:00) [1]> а вы все не угомонитесь )
написано в правилах, не менять ники, не офтопить в чужих темах, не... а вы все не угомонитесь.
Ega23 (2012-05-16 08:04:00) [2]
> разве это корректно?
Ну как бы есть такой приём. только в случае чего надо nil возвращать, а там где используешь - проверять на <> nil.
> а зачем вообще BmpDest при наличии result: TBitmap?
Ну тут много чего таких вопросов вызывает.
> хех, я еще в 7 посте написал, что bmpDest уже освобождаю
> я, а вы все не угомонитесь )
Стиль Йоды написанья языком доступен мало мне
KilkennyCat (2012-05-16 03:23:00) [3]не знаю, но смущает. а зачем вообще BmpDest при наличии result: TBitmap?
Германн (2012-05-16 02:59:00) [4]
> KilkennyCat © (16.05.12 02:57) [19]
>
>
> > result := BmpDest;
>
> разве это корректно?
А почему бы и нет?
KilkennyCat (2012-05-16 02:57:00) [5]
> result := BmpDest;
разве это корректно?
KilkennyCat (2012-05-16 02:51:00) [6]BmpDest := Tbitmap.Create;
try
....
Германн (2012-05-16 02:34:00) [7]
> Нуилаги (16.05.12 02:02) [15]
>
> хех, я еще в 7 посте написал, что bmpDest уже освобождаю
> я, а вы все не угомонитесь )
Сначала покажи код, в котором ты сию функцию из [0] вызываешь и тот код, в котором ты "освобождаешь" bmpDest.
Нуилаги (2012-05-16 02:05:00) [8]хотя конечно есть вопрос относительно того, как это правильно делать...
Нуилаги (2012-05-16 02:02:00) [9]хех, я еще в 7 посте написал, что bmpDest уже освобождаю я, а вы все не угомонитесь )
Германн (2012-05-16 01:28:00) [10]
> А вот BmpDest - скорее всего нет
>
И я даже догадываюсь почему.
Ega23 (2012-05-16 00:34:00) [11]
> vBlob Пушкин будет память освобождать?
vBlob он освобждает. А вот BmpDest - скорее всего нет
Anatoly Podgoretsky (2012-05-16 00:20:00) [12]> опшипка (15.05.2012 21:05:00) [0]
vBlob Пушкин будет память освобождать?
Ega23 (2012-05-16 00:03:00) [13]
> ну память кончается, это факт. т.к. не все утечки отловлены.
Ну так отлови
Нуилаги (2012-05-16 00:00:00) [14]ну память кончается, это факт. т.к. не все утечки отловлены. Но в моем случае он ведь о каком то параметре пишет (
Ega23 (2012-05-15 23:19:00) [15]System Error. Code: 87. Out of system resources.
Ни о чём не говорит?
Inovet (2012-05-15 23:16:00) [16]> [7] Нуилаги (15.05.12 23:06)
> но в один и сотен прекрасных моментов вылетает по этой ошибке
Ошибка в другом месте.
Нуилаги (2012-05-15 23:06:00) [17]не как бы код работает, но в один и сотен прекрасных моментов вылетает по этой ошибке. Засунул vBlob := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('Image'), bmRead);
под try и исправил баг у освобождением картинки которую эта процедура возвращает и че то не ругается...
Ega23 (2012-05-15 22:59:00) [18]
var
bs: TBlobStream;
begin
bs := TBlobStream.Create(CDS.fields[0] as TBlobField, bmRead);
try
bs.Position := 0;
bmp.LoadFromStream(bs);
finally
bs.Free;
end;
end;
antonn (2012-05-15 22:35:00) [19]
vBlob.position:=0;
BmpDest.LoadFromStream(vBlob);
?
Inovet (2012-05-15 22:28:00) [20]> [3] Нуилаги (15.05.12 22:22)
Попробуй русский