| 
| 
 | Вопрос # 5 354/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Помогите переделать на Дельфи.
 Приложение:Переключить в обычный режим Program proc;constn=15;typemas=array[0..n-1] of Integer;procedure ra(var x:mas);varind:integer;beginfor ind:=low(x) to high(x) dox[ind]:=random(50)-25;end;procedure printmas(const x:mas);varind:integer;beginfor ind:=low(x) to high(x) dowrite(x[ind]:4);writeln;end;procedure ex(var x:mas; var ch:integer);varind:integer;beginch:=0;for ind:=low(x) to high(x) doif x[ind]<0 thenx[ind]:=-x[ind];inc(ch);end;varx:mas;ch:integer;beginrandomize;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;beginrandomize;for ind := low(x) to high(x) do  x[ind]:=random(50)-25;end; procedure ex(var x:mas; var ch:integer);varind:integer;beginch:=0;for ind:=low(x) to high(x) doif x[ind]<0 thenx[ind]:=-x[ind];inc(ch);end; procedure TForm1.printmas(const x: mas; lnl:integer);varind:integer;beginfor ind:=low(x) to high(x) domemo1.Lines[lnl]:=Memo1.Lines[lnl] + IntToStr(x[ind])+'   'end; procedure TForm1.Button1Click(Sender: TObject);beginra(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] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |