Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
11-1266336914
michael
2010-02-16 19:15
2018.12.23
kol with delphi 2010


4-1290160827
Boatswain
2010-11-19 13:00
2018.12.23
Кат узнать флэшка или кард-ридер


2-1476258939
Алекс Серов
2016-10-12 10:55
2018.12.23
Delphi 2010, вкладка InterBase


2-1475106928
Arthur
2016-09-29 02:55
2018.12.23
чтение из файла и запись


15-1476172583
xteam777
2016-10-11 10:56
2018.12.23
Помогите переписать код C++ на Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский