|
Вопрос # 5 354/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Помогите переделать на Дельфи.
Приложение: Переключить в обычный режим- Program proc;
- const
- n=15;
- type
- mas=array[0..n-1] of Integer;
- procedure ra(var x:mas);
- var
- ind:integer;
- begin
- for ind:=low(x) to high(x) do
- x[ind]:=random(50)-25;
- end;
- procedure printmas(const x:mas);
- var
- ind:integer;
- begin
- for ind:=low(x) to high(x) do
- write(x[ind]:4);
- writeln;
- end;
- procedure ex(var x:mas; var ch:integer);
- var
- ind:integer;
- begin
- ch:=0;
- for ind:=low(x) to high(x) do
- if x[ind]<0 then
- x[ind]:=-x[ind];
- inc(ch);
- end;
- var
- x:mas;
- ch:integer;
- begin
- randomize;
- Ra(x);
-
- printmas(x);
- ex(x,ch);
-
- printmas(x);
- readln;
- end.
-
 |
Вопрос задал: Силиванов (статус: Посетитель)
Вопрос отправлен: 1 июня 2011, 10:47
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: ierihon1
Здравствуйте, Силиванов!
Кинь на форму Компонент Memo и кнопку, и вот весь юнит.
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- const
- n=15;
-
- type
- mas=array[0..n-1] of Integer;
- type
- TForm1 = class(TForm)
- Memo1: TMemo;
- Button1: TButton;
- procedure printmas(const x:mas; lnl:integer);
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
- x:mas;
- ch:integer;
-
- implementation
-
- {$R *.dfm}
-
- procedure ra(var x:mas);
- var ind:integer;
- begin
- randomize;
- for ind := low(x) to high(x) do
- x[ind]:=random(50)-25;
- end;
-
- procedure ex(var x:mas; var ch:integer);
- var
- ind:integer;
- begin
- ch:=0;
- for ind:=low(x) to high(x) do
- if x[ind]<0 then
- x[ind]:=-x[ind];
- inc(ch);
- end;
-
- procedure TForm1.printmas(const x: mas; lnl:integer);
- var
- ind:integer;
- begin
- for ind:=low(x) to high(x) do
- memo1.Lines[lnl]:=Memo1.Lines[lnl] + IntToStr(x[ind])+' '
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- ra(X);
- printmas(X,0);
- ex(X,ch);
- printmas(X,1);
- end;
-
- end.
-
 |
Ответ отправил: ierihon1 (статус: 1-ый класс)
Время отправки: 1 июня 2011, 12:08
|
Мини-форум вопроса
Всего сообщений: 34; последнее сообщение — 2 июня 2011, 11:28; участников в обсуждении: 5.
Страницы: [1] [2] [Следующая »]
|
min@y™ (статус: Доктор наук), 1 июня 2011, 10:54 [#1]:
После "Program proc;" вставь строку вот такую:
Program proc;
{$APPTYPE CONSOLE}
const
n=15;
Надписи на русском языке замени на английские или транслит.
Смени расширение у файла из *.pas в *.dpr.
Открывай файл в Delphi, компилируй, запускай.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Силиванов (статус: Посетитель), 1 июня 2011, 11:07 [#2]:
дак нужна форма, что бы на ней были размещены компоненты((
|
|
min@y™ (статус: Доктор наук), 1 июня 2011, 11:18 [#3]:
Цитата (Силиванов):
дак нужна форма, что бы на ней были размещены компоненты((
А почему я этого условия не вижу в тексте вопроса?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
1 июня 2011, 11:24: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Лабораторный практикум » Delphi модератором min@y™
|
bugmenot (статус: 3-ий класс), 1 июня 2011, 12:04 [#4]:
Цитата (min@y™):
Надписи на русском языке замени на английские или транслит. ЛОЛ, брутальненько, особенно транслит
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
ierihon1 (статус: 1-ый класс), 1 июня 2011, 12:20 [#5]:
Силиванов: ну а для красоты обработчик нажатия кнопки можно записать и так:
ra(X);
memo1.Lines[0]:='Исходный массив:';
printmas(X,1);
ex(X,ch);
memo1.Lines[2]:='Конечный массив:';
printmas(X,3);
|
|
min@y™ (статус: Доктор наук), 1 июня 2011, 12:57 [#6]:
Цитата (ierihon1):
ну а для красоты обработчик нажатия кнопки можно записать и так:
Сначала исправь ошибки у себя в ответе, красоту потом наводить будешь.
Сделал бы уж тогда не с TMemo, а с TDrawGrid.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ierihon1 (статус: 1-ый класс), 1 июня 2011, 14:26 [#7]:
min@y™: если не секрет где?)
|
|
min@y™ (статус: Доктор наук), 1 июня 2011, 14:40 [#8]:
Цитата (ierihon1):
если не секрет где?
procedure TForm1.printmas(const x: mas; lnl:integer);
var
ind:integer;
begin
for ind:=low(x) to high(x) do
memo1.Lines[lnl]:=Memo1.Lines[lnl] + IntToStr(x[ind])+' ' // <-- Access violation
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ierihon1 (статус: 1-ый класс), 1 июня 2011, 14:51 [#9]:
это я так понимаю потому что для строк сначала память выделять? так я это не в самом коде делал, просто хотел чтобы он сам до этого дошёл: работа с VCL... ну у меня иногда страные методы бывают)
|
|
min@y™ (статус: Доктор наук), 1 июня 2011, 15:12 [#10]:
Цитата (ierihon1):
это я так понимаю потому что для строк сначала память выделять?
Ясен пень!
Цитата (ierihon1):
так я это не в самом коде делал, просто хотел чтобы он сам до этого дошёл
Я б хрен додумался до такого дикого брейнфакинга.
Цитата (ierihon1):
страные
Ты здесь букву пропустил или лишнюю вставил?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ierihon1 (статус: 1-ый класс), 1 июня 2011, 15:16 [#11]:
пропустил конечно) кстати я это в той книжке про строковые переменные вычитал) сам сначала разобраться не мог что за ошибка а потом вспомнил)
|
|
Силиванов (статус: Посетитель), 1 июня 2011, 20:25 [#12]:
memo1.Lines[lnl]:=Memo1.Lines[lnl]+IntToStr(x[ind])+' ';
почему ошибка в этой строчке?
пишет что неизвестный идентификатор memo1
|
|
min@y™ (статус: Доктор наук), 1 июня 2011, 20:57 [#13]:
Цитата (Силиванов):
почему ошибка в этой строчке? пишет что неизвестный идентификатор memo1
А потому что копипастить чужой говнокод - много ума не надо.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ierihon1 (статус: 1-ый класс), 2 июня 2011, 06:49 [#14]:
это надо не через код делать, о чём мы только что разговаривали с min@y™: сначала нужно для строк память выделять а потом уже использовать. Для memo я делал так: в инспекторе объектов в свойстве lines нажимаю на него два раза появляетс небольшое окно редактирования строк, затем удаляю оттуда весь текст. Теперь самое важное: нужно создать несколько пустых строк, в данном случае их нужно 4, поэтомму я и нажмаю на энтр 4 раза и получаю эти пустые 4 строки которые уже без ошибок исползует процедура.
|
|
min@y™ (статус: Доктор наук), 2 июня 2011, 08:14 [#15]:
Цитата (ierihon1):
Теперь самое важное: нужно создать несколько пустых строк, в данном случае их нужно 4, поэтомму я и нажмаю на энтр 4 раза и получаю эти пустые 4 строки которые уже без ошибок исползует процедура.
Так делают только извращенцы. Не надо учить начинающих всякой бредятине. Представь, что тебе в мемо надо добавлять заранее неизвестное количество строк. Что тогда?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ierihon1 (статус: 1-ый класс), 2 июня 2011, 08:47 [#16]:
тогда он начинает автоматически выделять память... в старых версиях может не так но у меня в 11ом выделяет автоматически достаточно тольки одну строку инициализировать, ну если у тебя есть предложения как это оформить в коде, то буду только за)
|
|
min@y™ (статус: Доктор наук), 2 июня 2011, 09:21 [#17]:
Цитата (ierihon1):
ну если у тебя есть предложения как это оформить в коде, то буду только за
RTFM по методам класса TStrings:
- Add();
- Insert();
- Delete();
Пока всё.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ierihon1 (статус: 1-ый класс), 2 июня 2011, 09:29 [#18]:
procedure TForm28.printmas(const x: mas; lnl:integer);
var
ind:integer;
s:String;
begin
for ind:=low(x) to high(x) do
s:=s+IntToStr(x[ind])+' ';
memo1.Lines.Add(s);
end
вот так?
|
|
min@y™ (статус: Доктор наук), 2 июня 2011, 09:48 [#19]:
Похоже. Только параметр lnl тут лишний.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ierihon1 (статус: 1-ый класс), 2 июня 2011, 09:50 [#20]:
это я тоже уже заметил..)
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|