Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Глюк, господа дельфияне :о

9.1K
07 января 2005 года
pika
2 / / 22.12.2004
:o Помогите !!! :o
Всем добрый вечер, у меня одна проблемка , что-то не могу найти ошибку, суть моей задачи такова есть бмп файл котрый я загружаю в image1, а далее мне надо вырезать буквы из pbbw:Timage,(буквы у меня нулевого,т.е. черного цвета, а фон белого 256*256*256-1) и копирую в ris20:Timage; а далее мне нужно получить матрицу нулей и единиц 20х20, т.е. если form1.canvas.pixels[j+ris20.left,i+ris20.top]=0 then a[i,j]:=0 else a[i,j]:=1, но проблема у меня в другом когда по одному , т.е. каждый раз нажимая кнопку, он вырезает букву и выдает правильный результат, который я заношу в текстовый файл, а если я пишу так чтобы он выполнил хотя бы для 4 букв ту же самую процедуру , которая нормально работает , он начинает глючить, т.е. он записывает в файл одни единицы, т.е. как будто бы нет букв помогите пожалуйста разобраться, ниже привожу отрывок этой проги :)
<code>
{========================================================}
procedure copyfrompbbw;
var i,j,i1,j1:integer;
begin
form1.ris20.Picture.Bitmap.Height:=dwn-up;
form1.ris20.Picture.Bitmap.Width:=rght-lft;
// up,dwn,lft,rght- границы буквы
for i:=up to dwn do
for j:=lft to rght do
form1.ris20.Canvas.Pixels[j-lft,i-up]:=form1.pbbw.Picture.Bitmap.Canvas.Pixels[j,i];
end;
{========================================================}
procedure clean;
var q,w:integer;
begin
// это процедура после того как мы скопировали в ris20
//очищает тот квадрат где буква
for q:=up to dwn do
for w:=lft to rght do
form1.pbbw.Picture.Bitmap.Canvas.Pixels[w,q]:=65536*256-1;
end;
{========================================================}
procedure TForm1.nextClick(Sender: TObject);
var i,j:integer;name:string;txt:textfile;
begin
updwn;
lftrght;
copyfrompbbw;
inc(_file_n_);
name:=inttostr(_file_n_)+'.txt';
assignfile(txt,name);
rewrite(txt);
for i:=1 to 20 do
begin
for j:=1 to 20 do
if form1.Canvas.Pixels[ris20.Left+j-1,ris20.Top+i-1]=0 then write(txt,'0')else write(txt,'1');
writeln(txt);
end;
closefile(txt);
clean;
end;

</code>
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог