Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/40: Рейтинг темы: голосов - 40, средняя оценка - 4.60
1 / 1 / 2
Регистрация: 05.12.2009
Сообщений: 20

Вывод в Memo...

12.12.2009, 08:45. Показов 7738. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вобщем ввожу матрицу СтрингГрид1 , и нада вывести сумму элементов в тех сторках,которые несодержат отрицательных элементов в Мемо..Незнаю ,что писать в procedure TForm1.Button2Click ,чтоб вывелось в мемо(в самом конце кода ).
зы:еще не компилится на моменте
NoOtr:=true;{нет}
for i:=1 to x do
if v[i]<0 then

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  type matr=array[0..100,0..100]of integer;
  var mt:matr;
  x:byte;
 
implementation
 
{$R *.dfm}
function Vvod(var mt:matr;var x:byte):integer ;
var i,j:byte;
begin
       for i:=0  to x-1 do
       for j:=0 to x-1 do
         mt[i,j]:=random(20)-2;
   end;
function Vivod(var mt:matr;x:byte;StringGrid1:TstringGrid):integer;
var i,j:integer;
begin
   for i:= 0 to x-1 do
     for j:=0 to x-1 do
        StringGrid1.Cells[j,i]:=FloatToStr(Mt[i,j]);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.ColCount:=StrToInt(Edit1.Text);
   StringGrid1.RowCount:=StrToInt(Edit1.Text);
    x:= strtoint(edit1.text);
    Vvod(Mt,x);
    Vivod(Mt,x,StringGrid1);
  end;
function NoOtr(v:matr;x:byte):boolean;
var i:byte;
begin
NoOtr:=true;{нет}
for i:=1 to x do
if v[i]<0 then
 begin
  NoOtr:=false;{есть}
  break;
 end;
end;
function SumStr(v:matr;x:byte):integer;{сумма в строке}
var i:integer;
    s:integer;
begin
s:=0;
for i:=1 to x do
s:=s+v[i];
SumStr:=s;
function VyvSumm(mt:matr;x:byte;):integer;{вывод сумм в строках без отрицательных}
var i,j:integer;
begin
for i:=1 to x do
if NoOtr(mt[i],x) then{если нет отрицательных}
writeln('Summa v stroke ',i,'=',SumStr(mt[i],x));
begin
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 
end;
end.
Добавлено через 1 час 53 минуты
помогите пожалусто
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2009, 08:45
Ответы с готовыми решениями:

Поменять вывод массива в stringgrid на вывод в memo
Помогите изменить код, чтобы вывод был в memo1 вместо stringgrid1 и в memo2 вместо stringgrid2. не получается procedure...

Вывод в memo
При выводе строки в memo строка выводится в другую строку(как на картинке). Как сделать чтобы строка выводилась всегда в первой? ...

Вывод кода в memo
Есть переменная типа string: s:='MoveFile(PChar(chosenDirectory+'_patch/animations/DarkElf.ukx'),...

6
 Аватар для BouH
54 / 54 / 43
Регистрация: 11.12.2009
Сообщений: 110
12.12.2009, 09:25
Цитата Сообщение от Ktylhy Посмотреть сообщение
зы:еще не компилится на моменте
NoOtr:=true;{нет}
for i:=1 to x do
if v[i]<0 then
В Delphi значение функций возвращается командой "Result", заведи переменную например "tmp" ей и присваивай значение "истина", "ложь", а потом перед последним ендом пиши "Result:=tmp;"

Добавлено через 28 минут
А что касается процедуры Button2Click в нейнадо написать то, что у тебя написано в функции VyvSumm. Примерно так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer; mystr,all:string;
begin
for i:=1 to x do
if NoOtr(mt[i],x) then{если нет отрицательных}
begin
str(SumStr(mt[i],x),mystr);//переводим число в строку
all:=all+mystr+' ';//формируем строку из сумм 
end;
form1.memo1.text:=all;//выводим в мемо строку сумм разделенных пробелами
end;
1
1 / 1 / 2
Регистрация: 05.12.2009
Сообщений: 20
12.12.2009, 10:27  [ТС]
Спасибо

Добавлено через 10 минут
всеравно тамже выдает ошибку
if v[i]<0 then
>Incompatible types
0
1 / 1 / 2
Регистрация: 05.12.2009
Сообщений: 20
15.12.2009, 06:22  [ТС]
Вобщем запустилась программа.Но одно но... В мемо в результате выводятся НУЛИ вместо суммы чисел в тех строк где нет отрицательных значений. ВОт код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  type
  mas=array[0..100] of integer;{строка матрицы}
  matr=array[0..100]of mas;
  var
  mt:matr;
  x:byte;
  v:mas;
 
implementation
 
{$R *.dfm}
function Vvod(var mt:matr;var x:byte):integer ;
var i,j:byte;
begin
       for i:=0  to x-1 do
       for j:=0 to x-1 do
         mt[i,j]:=random(20)-2;
   end;
function Vivod(var mt:matr;x:byte;StringGrid1:TstringGrid):integer;
var i,j:integer;
begin
   for i:= 0 to x-1 do
     for j:=0 to x-1 do
        StringGrid1.Cells[j,i]:=FloatToStr(Mt[i,j]);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.ColCount:=StrToInt(Edit1.Text);
   StringGrid1.RowCount:=StrToInt(Edit1.Text);
    x:= strtoint(edit1.text);
    Vvod(Mt,x);
    Vivod(Mt,x,StringGrid1);
  end;
function NoOtr(v:mas;x:byte):boolean;//определяем есть ли отрицательные в строке
var i:byte;
begin
NoOtr:=true; //нет
for i:=1 to x do
if v[i]<0 then
 begin
  NoOtr:=false; //есть
  break;
 end;
 end;
function SumStr(v:mas;x:byte):integer;{сумма в строке}
var i:integer;
    s:integer;
begin
s:=0;
for i:=1 to x do
s:=s+v[i];
SumStr:=s;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i,j:integer; mystr,all:string;
begin
for i:=1 to x do
if NoOtr(mt[i],x) then//если нет отрицательных
begin
str(SumStr(v,x),mystr);//переводим число в строку
all:=all+mystr+' ';//формируем строку из сумм
end;
form1.memo1.text:=all;//выводим в мемо строку сумм разделенных пробелами
end;
end.
0
115 / 114 / 22
Регистрация: 29.08.2009
Сообщений: 174
15.12.2009, 08:18
в обработчике Button2Click вы вызываете функцию SumStr с аргументом v, который нигде не инициализирован, он содержит нули, не стал вникать что там должно передаваться, но ошибка в этом
0
1866 / 1186 / 192
Регистрация: 27.03.2009
Сообщений: 4,603
15.12.2009, 09:45
Цитата Сообщение от Ktylhy Посмотреть сообщение
if NoOtr(mt[i],x) then
вот и ошибка. ты в функцию передаешь один элемент, а параметры функции
Цитата Сообщение от Ktylhy Посмотреть сообщение
function NoOtr(v:matr;x:byte):boolean;
вся матрица

Добавлено через 35 минут
вот тебе весь код с исправлениями
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  type matr=array[0..100,0..100]of integer;
  var mt:matr;
  x:byte;
 
implementation
 
{$R *.dfm}
function Vvod(var mt:matr;var x:byte):integer ;
var i,j:byte;
begin
randomize;
       for i:=0  to x-1 do
       for j:=0 to x-1 do
         mt[i,j]:=random(20)-2;
   end;
function Vivod(mt:matr;x:byte;StringGrid1:TstringGrid):integer;
var i,j:integer;
begin
   for i:= 0 to x-1 do
     for j:=0 to x-1 do
        StringGrid1.Cells[j,i]:=FloatToStr(Mt[i,j]);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.ColCount:=StrToInt(Edit1.Text);
   StringGrid1.RowCount:=StrToInt(Edit1.Text);
    x:= strtoint(edit1.text);
    Vvod(Mt,x);
    Vivod(Mt,x,StringGrid1);
  end;
 
function NoOtr(v:matr;x:byte;i:integer):boolean;
var j:integer;
begin
NoOtr:=true;{íåò}
for j:=0 to x-1 do
if v[i,j]<0 then
 begin
  NoOtr:=false;{åñòü}
  break;
 end;
end;
 
function SumStr(v:matr;x:byte;i:integer):integer;{ñóììà â ñòðîêå}
var j:integer;
    s:integer;
begin
s:=0;
for j:=0 to x-1 do
s:=s+v[i,j];
SumStr:=s;
end;
 
function VyvSumm(mt:matr;x:integer;i:integer):string;{âûâîä ñóìì â ñòðîêàõ áåç îòðèöàòåëüíûõ}
begin
if NoOtr(mt,x,i)=true then{åñëè íåò îòðèöàòåëüíûõ}
result:='Summa v stroke '+inttostr(i+1)+'='+inttostr(SumStr(mt,x,i))
else result:='';
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
memo1.Clear;
for i:=0 to x-1 do
if vyvsumm(mt,x,i)<>'' then
memo1.Lines.Add(vyvsumm(mt,x,i));
end;
end.
1
1 / 1 / 2
Регистрация: 05.12.2009
Сообщений: 20
15.12.2009, 11:49  [ТС]
Спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2009, 11:49
Помогаю со студенческими работами здесь

Вывод сообщение в Memo
у меня есть на форме memo и таймер и есть некая переменная которая имеет значение или 1 или 0 мне нужно сделать чтобы когда значение в...

Рандомный вывод в Memo
Добрый день. Сижу уже 3-й день,не получается... А,собственно,проблема в том,что мне нужно организовать рандомный вывод заданных мною слов...

Вывод строки в memo
Написал код ,но вот строку в memo не выводит. Можете подсказать ошибку. While min&gt;max do begin i:=i+1; min1:=min; min:=min+t; ...

Вывод результатов в Memo
Имеется код procedure lab1(k:integer); { 1. Вывод таблиц функций. | a | b ...

Вывод текста в memo
Помогите пж как вывести текст/значение в Memo


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru