Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

Где ошибка? Подскажите....   Найти похожие ветки 

 
-=Germe$=- ©   (2006-08-09 10:47) [0]

При закрытии окна вылетает ошибка. Вот код

var Pic, Pic1: array of array of TColor;
   X, Y: Integer;
   f: File;
begin
 SetLength(Pic, Image1.Width);
 For Y:=0 to Image1.Height do
   SetLength(Pic[Y], Image1.Width);
 For X:=0 to Image1.Width-1 do
   For Y:=0 to Image1.Height-1 do
     Pic[Y, X]:=Image1.Picture.Bitmap.Canvas.Pixels[X, Y];
 SetLength(Pic1, Image1.Width);
 For Y:=0 to Image1.Height do
   SetLength(Pic1[Y], Image1.Width);
 AssignFile(F, "d:\Temp.temp");
 ReWrite(F);
 BlockWrite(F,Pic, SizeOf(Pic));
 CloseFIle(F);
 AssignFile(F, "d:\Temp.temp");
 Reset(F, 1);
 BLockRead(F, Pic1, SizeOf(Pic));
 CloseFile(F);
 For X:=0 to Image1.Width do
   For Y:=0 to Image1.Height do
     Image2.Canvas.Pixels[X, Y]:=Pic1[Y, X];
end;


 
clickmaker ©   (2006-08-09 10:53) [1]

во-первых
SetLength(Pic, Image1.Width);
For Y:=0 to Image1.Height do
длину массива ставишь равной ширине, а потом идешь по высоте. Ну если картинка квадратная, сработает

и потом: зачем читать и писать в файл попиксельно? Есть же TPicture.Load/SaveFromFile


 
Сергей М. ©   (2006-08-09 10:54) [2]

Какая ошибка-то ?)


 
-=Germe$=- ©   (2006-08-09 10:55) [3]


> и потом: зачем читать и писать в файл попиксельно? Есть
> же TPicture.Load/SaveFromFile

Так надо... Потом будет тип в котором много битмапов будет... Как их в один файл запихнуть?


 
-=Germe$=- ©   (2006-08-09 10:56) [4]


> Какая ошибка-то ?)

Access Violation at address...


 
Сергей М. ©   (2006-08-09 10:58) [5]

Ну и по какому адресу ? Что, слово за словом из тебя вытягивать информацию ?)
Или для тебя все ошибки на одно лицо ?)


 
clickmaker ©   (2006-08-09 10:59) [6]


> Как их в один файл запихнуть?

TBitmap.SaveToStream


 
Плохиш ©   (2006-08-09 10:59) [7]


> -=Germe$=- ©   (09.08.06 10:47)

Как думаешь, отладчик в делфи для кого встроили?


 
-=Germe$=- ©   (2006-08-09 11:01) [8]


> Ну и по какому адресу ? Что, слово за словом из тебя вытягивать
> информацию ?)
> Или для тебя все ошибки на одно лицо ?)

00401C3A in module "project1"  Write of address 0094BFFF


 
clickmaker ©   (2006-08-09 11:01) [9]

кстати,
For Y:=0 to Image1.Height-1 do
если уж на то пошло


 
-=Germe$=- ©   (2006-08-09 11:02) [10]


> Как думаешь, отладчик в делфи для кого встроили?

Явно не для меня.... Ну не помагает он....

Если убрать AssignFile(F, "d:\Temp.temp");
Reset(F, 1);
BLockRead(F, Pic1, SizeOf(Pic));
CloseFile(F);
то все работает


 
-=Germe$=- ©   (2006-08-09 11:04) [11]


> кстати,
> For Y:=0 to Image1.Height-1 do
> если уж на то пошло

Щас это мне саавсем не важно.... Это просто эксперименты... Дальше будет нормальный проект...


 
Сергей М. ©   (2006-08-09 11:04) [12]


> -=Germe$=- ©   (09.08.06 11:01) [8]


Собираешь проект с опциями отладки, запускаешь из-под среды, выбираешь меню Search -> Find Error .., вводишь там 00401C3A и получаешь инф-цию о строчке, выполнение которой привело к ошибке.


 
Romkin ©   (2006-08-09 11:05) [13]

Да что там думать, млин. Включи контроль границ! Вылезет где надо, а не когда уже поздно. За границу массива ты вылезаешь, уже сказали.
Установи Range checking & Owerflow checking ($R+ & $Q+)


 
clickmaker ©   (2006-08-09 11:05) [14]

у тебя каша полная... Мало того что попиксельно читаешь, так еще и криво.
Размерности путаешь, границы массивов переходишь, BlockRead одно, а Sizeof другого...


 
-=Germe$=- ©   (2006-08-09 11:07) [15]


> Собираешь проект с опциями отладки, запускаешь из-под среды,
>  выбираешь меню Search -> Find Error .., вводишь там 00401C3A
> и получаешь инф-цию о строчке, выполнение которой привело
> к ошибке.

Некто assembler - финкция DeleteFree... Я ее точно не юзаю...


 
Сергей М. ©   (2006-08-09 11:09) [16]


> Я ее точно не юзаю


Юзаешь. Но неявно.
Хотя тебе уже сказали - код твой никуда не годится, потому что в нем гора ошибок и несуразностей.
К тому же см. [6]


 
clickmaker ©   (2006-08-09 11:09) [17]

Bmp := TBitmap.Create;
Bmp.Width := Width1;
Bmp.Height := Height1;
BlockRead(F, Bmp.ScanLine, Width1 * Height1);

если уж так хочется с сырым форматом работать


 
Slym ©   (2006-08-09 11:12) [18]

Тормоза нереальные плодишЪ... Скока по времени код выполняется? помнож на твои -=Germe$=- ©   (09.08.06 10:55) [3] много битмапов будет и будет 100% CPUtime долго-долго


 
Slym ©   (2006-08-09 11:14) [19]

clickmaker ©   (09.08.06 11:09) [17]
Ты забыл привести код загрузки :)


 
Slym ©   (2006-08-09 11:18) [20]

Slym ©   (09.08.06 11:14) [19]
загрузки

Туплю это она и есть, только без контроля цветности


 
-=Germe$=- ©   (2006-08-09 11:19) [21]

Всем спасибо... Особенно Slym(Главный флудер...), остальным ПАСИБО... Все работает


 
ORMADA ©   (2006-08-09 12:14) [22]

блин 100 пудова в 13 строке!:)



Страницы: 1 вся ветка

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.065 c
3-1152614214
Lexxxx
2006-07-11 14:36
2006.09.17
поиск пропущеных данных


15-1156456327
SkyRanger
2006-08-25 01:52
2006.09.17
Онлайн игры и истиная сущность человека


3-1152168026
antoxa2005
2006-07-06 10:40
2006.09.17
Есть комп. DSL линия , постоянный IP, установленный FBServer база


2-1156596138
ZipFolder
2006-08-26 16:42
2006.09.17
Прочитать из "массива" в "массив"


3-1152610471
DVM
2006-07-11 13:34
2006.09.17
False/True заменить более осмысленным в DBGrid