Форум: "Начинающим";
Текущий архив: 2018.12.23;
Скачать: [xml.tar.bz2];
Внизmemo. запись в строку Найти похожие ветки
← →
Arthur (2016-09-28 00:38) [0]вот часть кода...есть матрица и мемо...нужно вывести количество нечетных чисел в каждом столбе..как сделать чтобы в мемо числа выводились в одну строку(т.е. под каждым столбом)
← →
Arthur (2016-09-28 00:38) [1]procedure TForm1.Button2Click(Sender: TObject);
var x:array of array of integer;
i,j,Cod,counter:integer;
begin
SetLength(x,n,m);
counter:=0;
for j:=0 to m-1 do
begin
for i:=0 to n-1 do
begin
Val(StringGrid1.Cells[j,i],x[i,j],Cod);
if Cod<>0 then begin
ShowMessage("ошибка синтаксиса в матрице");
SetLength(x,0,0); Exit;
end;
if x[i,j] mod 2 = 1 then
counter:=counter+1;
end;
SendMessageA(Memo1.Handle,EM_SETHANDLE,LongInt(counter),0);
Memo1.Lines.Add(IntToStr(counter));
counter:=0;
end;
end;
← →
kilkennycat © (2016-09-28 02:51) [2]
> как сделать чтобы в мемо числа выводились в одну строку(т.
> е. под каждым столбом)
для этого главное: использовать моноширинный шрифт - где ширина у всех символов, в том числе пробелов, одинаковая.
> SendMessageA(Memo1.Handle,EM_SETHANDLE,LongInt(counter),0);
это зачем, да еще в цикле?
> Val
устарела.
← →
kilkennycat © (2016-09-28 02:55) [3]
> for j:=0 to m-1 do
> begin
> for i:=0 to n-1 do
> begin
> Val(StringGrid1.Cells[j,i]
небезопасное обращение к массиву ячеек, нет проверки и\или обработки выхода за пределы
← →
Игорь Шевченко © (2016-09-28 10:25) [4]
> > Val
>
> устарела.
Нифига. У этой функции есть полезное свойство - возвращать индекс первого нечислового символа.
← →
kilkennycat © (2016-09-28 15:24) [5]
> Игорь Шевченко © (28.09.16 10:25) [4]
да, забыл про это. но и вредное свойство тоже есть - сепараторы не поддерживаются.
← →
Arthur (2016-09-28 18:47) [6]> это зачем, да еще в цикле?
чтобы вывести количество нечетн чисел под каждым столбом, щас попробую
← →
Arthur (2016-09-28 18:51) [7]> kilkennycat © (28.09.16 02:51) [2]
а куда вставить эту строку?
← →
kilkennycat © (2016-09-29 00:53) [8]
> Arthur (28.09.16 18:47) [6]
> чтобы вывести количество нечетн чисел под каждым столбом,
> щас попробую
Да?
тогда что делает эта:
Memo1.Lines.Add(IntToStr(counter)); ?
← →
kilkennycat © (2016-09-29 00:56) [9]а вообще, я правильно понимаю, что это всё выглядит как стринггрид с расположенным под ним мемо??
← →
kilkennycat © (2016-09-29 01:01) [10]
> kilkennycat © (29.09.16 00:56) [9]
в этом случае почему бы просто не отрисовывать это всё в последней строке стринггрида?
если проблема связана с вертикальным скроллингом, то отрисовывать самому в TStringGrid.OnDrawCell, выводя в последнюю строку вместо "данных" стринггрида то самое кол-во чисел. Другим цветом. или на другом фоне.
← →
Arthur (2016-09-29 02:17) [11]> а вообще, я правильно понимаю, что это всё выглядит как стринггрид с расположенным под ним мемо??
да, правильно.
> в этом случае почему бы просто не отрисовывать это всё в последней строке стринггрида?
это слишком для меня)
← →
kilkennycat © (2016-09-29 15:53) [12]ну тогда как-то так:
procedure TForm1.Button2Click(Sender: TObject);
var
col,row,err,chislo,counter:integer;
s : string;
begin
counter:=0;
s = " "; //тут пробелами задается первый отступ
for row := 0 to StringGrid1.RowCount-1 do begin
for col := 0 to StringGrid1.ColCount-1 do begin
Val(StringGrid1.Cells[col,row],chislo,err);
if err<>0 then begin
ShowMessage("ошибка синтаксиса в матрице");
Exit;
end;
if chislo mod 2 = 1 then inc(counter);
end;
s := s + IntToStr(counter) + " "; //тут пробелами задается расстояние между числами
counter:=0;
end;
Memo1.Text = s;
end;
← →
kilkennycat © (2016-09-29 15:54) [13]
> s = " "; //тут пробелами задается первый отступ
двоеточие пропустил. s := " ";
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2018.12.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c