Главная » Правописание слов » Как написать текст в мемо делфи

Слово Как написать текст в мемо делфи - однокоренные слова и морфемный разбор слова (приставка, корень, суффикс, окончание):


Морфемный разбор слова:

Однокоренные слова к слову:

Уроки Delphi

понедельник, 28 июля 2008 г.

Компонент TMemo

Он находится на палитре компонентов Standart. Как мы уже успели понять, он представляет собой поле для отображения и редактирования неформатированного текста. Текст можно загрузить из файла, набрать на клавиатуре, вставить из буфера обмена. Т.е. он имеет многие доступные свойства для редактирования текста, что способствует его применению в простейших текстовых редакторах для просмотра (редактирования) текста, наподобие того примера, который мы с вами периодически дописываем вот уже несколько уроков.

В этом компоненте текст всегда имеет одинаковый шрифт, задающийся через свойство Font.

Программно для компонента Memo1, расположенного на форме это делается следующим образом. Допустим, на форме расположено три компонента: поле редактирования текста Memo1 (страница Standart), диалог выбора шрифта FontDialog1 (страница Dialogs) и кнопка Button1 (страница Standart). Реакция на событие нажатия на кнопку Button1

procedure TForm1.Button1Click(Sender: TObject);

if FontDialog1.Execute then // если пользователь выбрал шрифт

Memo1.Font:=FontDialog1.Font; // установить выбранный шрифт

Если необходимо, чтобы в диалоге выбора шрифта изначально был выбран текущий шрифт, установленный компоненте Memo1, то перед вызовом диалога Execite устанавливаем в диалоге нужный шрифт.

procedure TForm1.Button1Click(Sender: TObject);

FontDialog1.Font:=Memo1.Font; // установить шрифт в диалоге

if FontDialog1.Execute then

Можно изменять шрифт для компонента TMemo (и не только для него) программно. Для этого в свойстве Font устанавливаются необходимые свойства во время работы приложения.

Memo1.Font.Name:=’Arial’; // установка имени шрифта

Memo1.Font.Size:=14; // установка размера шрифта

Memo1.Font.Color:=clRed; // цвет шрифта

Memo1.Font.Style:=[fsBold]; // установить жирный стиль

Style представляет собой массив свойств стиля шрифта. Необходимо в квадратных скобках указывать через запятую необходимые стили. Пустые кавычки будут означать установку шрифта без стиля. Список доступный свойств стиля шрифта:

Свойство WordWrap устанавливает, может или нет текст автопереносится на следующую строчку, если он достиг левого края компонента. Автоперенос работает и когда пользователь во время работы приложения изменяет размеры компонента.

Текст в компоненте доступен через свойство Lines. Он содержит массив строк, находящихся в компоненте. Можно получить доступ как к отдельной строке, так и к всему тексту. Это свойство можно редактировать и во время работы приложения, и во время разработки в инспекторе объектов.

Загрузка строк из файла через процедуру

где «c:\1.txt» – загружаемый файл в компонент. Следует при этом помнить, что компонент TMemo ограничен в размерах текста.

Сохранение строк в файл.

Количество строк в компоненте можно узнать через свойство Memo1.Lines.Count, а доступ к отдельной строчке через функцию Strings. Например:

ShowMessage(Memo1.Lines.Strings[0]); // Показывает в окошке первую строчку текста.

Strings – это массив строк, начинающихся с нулевого знака, заканчивающиеся Count-1. Об этом следует помнить при написании подобных процедур доступа, иначе произойдет выход за доступный предел массива, что вызовет ошибку в программе.

Можно для примера организовать цикл поочередного отображения строк из компонента Memo1. Для реакции на нажатия на кнопку Button1 это выглядит следующим образом:

procedure TForm1.Button1Click(Sender: TObject);

Var i:Integer; // объявление целочисленной переменной

if Memo1.Lines.Count<>0 then // проверка ненулевого количества строк

for i:=0 to Memo1.Lines.Count-1 do // задается цикл, равный кол-ву строк

ShowMessage(Memo1.Lines.Strings[i]); // вывод строк в сообщение

Очистить Strings можно одной процедурой Memo1.Lines.Clear.

Вставить строчку в заданное место –

Memo1.Lines.Delete(0); // удаляет первую строку

При применении процедуры удаления строк Delete помните, что сначала нужно проверять компонент TMemo на наличие таковых вообще. Проверка через функцию Count, которая возвращает их целочисленное значение.

Работа с выделенным текстом программно аналогична работе пользователя вручную. Если пользователь выберет процедуру вырезания выделенного текста в буфер или его удаление, то он пропадет. Выделение текста производится с помощью двух процедур.

Memo1.SelStart:=0; // установить начальное положение выделения

Memo1.SelLength:=15; // установить длину выделенного текста

Если необходимо всегда видит выделенный текст, даже при переходе управления на другой элемент управления, то установите свойство HideSelection в false.

Работа с выделенным фрагментом текста

Memo1.ClearSelection; // удалить выделенный текст

Memo1.CutToClipboard; // вырезать в буфер обмена

Memo1.CopyToClipboard; // скопировать в буфер обмена

Memo1.PasteFromClipboard; // вставить из буфера обмена

Memo1.SelText; // эта функция возвращает текстовую строку выделенного текста

Отмена последнего изменения – процедура Memo1.Undo.

Компонент TMemo является оконным визуальным компонентом, т.е. у него имеются свойства, характерные множеству компонентов,
таких как Border, Color, Align, Enabled, Visible.

Источник

Использование компонента Memo

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

В некоторых случаях для ввода массива можно использовать компонент Memo. Компонент Memo позволяет вводить текст, состоящий из достаточно большого количества строк, поэтому его удобно использовать для ввода символьного массива. Компонент Memo добавляется в форму обычным образом. Значок компонента находится на вкладке Standard (рис. 5.3).

В табл. 5.3 перечислены некоторые свойства компонента Memo.

Таблица 5.3. Свойства компонента Memo

Имя компонента. Используется в программе для доступа к свойст-

Текст, находящийся в поле Мето. Рассматривается как единое це-

Текст, находящийся в поле Меню. Рассматривается как совокуп-

ность строк. Доступ к строке осуществляется по номеру

Количество строк текста в поле Меню

Расстояние от левой границы поля до левой границы формы

Расстояние от верхней границы поля до верхней границы формы

Шрифт, используемый для отображения вводимого текста

Признак наследования свойств шрифта родительской формы

Получить доступ к находящейся в поле Memo строке текста можно при помощи свойства Lines, указав в квадратных скобках номер нужной строки (строки нумеруются с 0).

Следующая программа, текст которой приведен в листинге 5.5, демонстрирует использование компонента Memo для ввода символьного массива.

Основной цикл процедуры ввода символьного массива из компонента Memo может выглядеть так:

Форма программы приведена на рис. 5.4. Помимо поля Memo она содержит командную кнопку (Buttonl), при щелчке на которой выполняется ввод значений элементов массива из поля Memo.

Рис. 5.4. Диалоговое окно приложения Ввод массива

Листинг 5.5. Ввод массива строк из компонента Memo unit fr_memo_; interface

procedure ButtonlClick(Sender: TObject); private < Private declarations >public

var Forml: TForml; implementation

<$R *.DFM>procedure TForml.ButtonlClick(Sender: TObject); const

SIZE=5; // размер массива

for i:=1 to n do a[i]:=Forml.Memol.Lines[i-1]; // строки Memo пронумерованы с нуля

Основную работу выполняет процедура TForml.Buttoniciick, которая сначала проверяет, есть ли в поле Memol текст. Если текст есть (в этом случае значение свойства Lines.Count больше нуля), то процедура сравнивает количество введенных строк и размер массива. Если это количество превышает размер массива, то программа изменяет значение п, тем самым подготавливает ввод только первых size строк.

На рис. 5.5 приведен вид диалогового окна приложения Ввод массива. После щелчка командной кнопки Ввод появляется окно (рис. 5.6), которое содержит значения элементов массива, полученные из Memo-поля.

Источник

Добавить текст в memo к тексту, который уже есть

Привет!
В memo у меня есть текст «Привет!» и я хочу добавить к нему еще текст(продолжение) с edit1 «Как дела?» при нажатии на button
Memo1.Lines.Add(edit1.Text); добавляет новую строку [не подходит]
Memo1.Text:=Memo1.Text + edit1.Text; тоже не подходит. Получается вот так «Привет!Привет!Как дела?»

В общем надо чтоб получилось вот так «Привет!Как дела?»

Добавлено через 24 минуты
Нашел решение) Может кому и пригодиться)
Memo1.Lines.Text:=Memo.Text+Edit1.Text;

Как в Excel добавить текст в несколько ячеек, в которых уже что-то есть?
Народ, кто с Excel дружит? Как добавить текст в несколько ячеек, в которых уже что-то есть? Т.е.

Как добавить текст к тексту в текстовом поле?
Как добавить текст к тексту в текстовом поле? Когда программировал на C# это примерно выглядело.

написать макрос,который по произвольному тексту определяет, имеет ли этот текст определенные свойства
Написать макрос, который по произвольному тексту определяет, имеет ли этот текст определенные.

Как в конец уже имеющейся строки Memo добавить несколько символов?
Народ подскажите пожалуйста, как в Memo в конец уже имеющейся строки добавить несколько символов.

Запретить изменять уже имеющийся текст в Memo, но разрешить ввод в него
Вопрос Как в delphi реализовать запрет изменения уже имеющегося текста в memo,но разрешить ввод в.

Дописать в каждую строку перед уже имеющимся текстом новый текст в memo
В поле memo имеется много строк. Каждая строка представляет собой имя файла, например.

Источник

Как написать текст в мемо делфи

Компонент Delphi Memo являются окном редактирования многострочного текста который можно загружать из файла либо сохранять введенную информацию в файл текстового формата(рис 1).

В Memo формат текста (шрифт, выравнивание, цвет и т.д.) одинаков для всего текста и определены они в свойстве Font. Сохранены текст из Memo в файл не сохраняет элементы форматирования(шрифт, размер и т.п.) При последующем открытии этого файла, в Memo формат текста будет определяться текущим свойством Font компонента Memo, а не в том формате в котором был сохранен ранее.

Текст в Memo размещен построчно. Поэтому имеется доступ к строкам текста отдельно. Строки Memo являются объектами Lines[i] тип которого String, где i — номер строки, отчет начинается от нуля. Lines[i] доступен как для чтения, так и для записи. Поэтому текст в компоненте Memo есть возможность редактировать не только с помощью клавиатуры, но и программно. Например

Этим способом можно только редактировать текст, для добавления новой строки используются функции: Memo1.Lines.Add() добавляет новую строку в конец текста, а Memo1.Lines.Insert() вставляет новую строку перед указанной. Для удаление строк используется Memo1.Lines.Delete(i) где i — номер строки. Для определения количества строк используется функция Memo.Lines.Count. Рассмотрим процедуры для сохранения и загрузки текста:
Сохранение текста в файл осуществляется командой

Загрузка текста из файла осуществляется командой

Источник

Как написать текст в мемо делфи

Компонент Delphi Memo это простой текстовый редактор. Delphi Memo позволяет вводить многострочный текст с клавиатуры, загружать его из файла, редактировать и сохранять в файл текстового формата. При изучении работы с Delphi Edit советую посетить страничку работа со строками Delphi, так как там описываются функции Delphi для работы с данными, представленными в текстовой форме, с которыми и оперирует компонент Memo.

Простота текстового редактора компонента Delphi Memo заключается в том, что текстовый редактор Delphi Memo не обладает возможностями форматирования содержещегося в нём текста. Это означает, что все атрибуты выбранного шрифта будут относиться ко всему тексту.

var S: String;
begin
Memo1.Lines[3]:=’Четвёртая строка по счёту’;
S:=Memo1.Lines[3];
end;

begin
Memo1.Lines.Add(‘Это будет последняя строка’);
Memo1.Lines.Insert( 2, ‘Эта строка будет третьей’); //Так как отсчёт идёт от нуля!
end;

Delphi Memo имеет также метод для удаления строки:

Memo1.Lines.Delete(i); //Удаление строки с индексом i

Количество строк в компоненте Memo содержится в свойстве Count:

Пользуясь этим, например поиск фрагмента ‘Нужный_Текст’ в строках можно организовать так:

var i: Integer;
begin
for i:=0 to Memo.Lines.Count-1 do
begin
if AnsiPos(‘Нужный_Текст’, Memo.Lines[i])<>0 then
begin
Caption:=’Найдено в строке №’+IntToStr(i);
break;
end;
end;
end;

Компонент Delphi Memo позволяет получить доступ к тексту как целому. Свойство Text типа String является текстом, содержащимся в редакторе, в виде одной строки. Необходимо учитывать, что эта строка также будет включать в себя и непечатаемые символы конца строки #13 и символы переноса строки #10. Кстати, чтобы продолжить текст с новой строки, необходимо использовать последовательно оба этих символа:

Memo1.Text:=’Предыдущий текст’+#13+#10+’Это уже новая строка’;

Для того, чтобы выделение текста было заметно на экране, небходимо, чтобы компонент обладал фокусом ввода. То есть, чтобы ранее либо пользователь переместил туда курсор, клавишей Tab или щёлкнув мышкой, либо был выполнен оператор Memo1.SetFocus.

Memo1.CaretPos.X // позиция курсора в строке (в отличие от SelStart);
Memo1.CaretPos.Y // номер строки где находится курсор;

Обзор компонентов Delphi В начало урока Компонент Delphi Button

procedure TForm82.FormCreate(Sender: TObject);
begin
Gloss:=TStringList.Create;
Gloss.LoadFromFile(‘Gloss.txt’);
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var i: Integer;
begin
Memo1.Clear;
for i:=0 to Gloss.Count-1 do
if pos(Edit1.Text, Gloss[i])=1
then Memo1.Lines.Add(‘ ‘+Gloss[i]+#13#10#13#10);
end;

Показать текст в Memo:

Мне грустно такие ответы «помогать». Гость, добавлено 14.12.10, 22:37:42
чет не фурычит Автор, добавлено 15.12.10, 05:36:45
У меня фурычит. Алексей, добавлено 19.12.10, 12:07:12
уважаемые специалисты подскажите а то я уже мозг дымится
как заключить в цикл несколько Memo, есть 8 штук мемо, как их поставить в цикл, что-то типа

for i:=1 to 8 do
memo[i].lines.add(»);

«..массив из компонентов TMemo
mas:array [0..n] of TMemo;
тогда можно будет цикл замутить.
Лучше тогда сами memo задавать динамически например при создании формы. «

вроде должно прокатить! Александр, добавлено 28.12.10, 13:42:41
Здравствуйте, имеется такой код:

sl:= TStringList.Create; k:=1; n:=10;
sl.Sorted:=true; sl.Duplicates:=dupError;
for j:=1 to n do
begin
flag:=false;
try
sl.Add(IntToStr(delta(j));
//delta(j)-это функция, возвращающая
//целочисленные значения
except on EStringListError do begin
flag:=true; k:=k+1; //k – счетчик повторов
end;
end;
if flag=True then Continue else
begin
k:=1;
. //выполняем определенные действия
//над значениями delta(j) и их
//количеством
end
end

Например, по ходу цикла значения delta(j) равны 1500, 1500, 1500, 2800, 2800, 380, 1250 и т.д. В первом шаге цикла повтора нет, соответственно, выполняется код, но в нем присутствует неправильное количество значений delta(j), а именно k=1. Истинное значение повторов появляется только на третьем шаге цикла. Вопрос вот в чем: как можно отловить последнюю ошибку, чтобы количество k было истинным?
Заранее спасибо за помощь. Автор, добавлено 28.12.10, 14:06:29
То есть, вам нужно произвести определённые действия над значениями и количеством их повторов функции delta.

Соответственно, это можно сделать только имея информацию о повторах заранее, не? Поэтому сначала нужно эти значения получить и подсчитать повторы. Соответственно, цикл, получающий значения повторов нужно вынести за код, выполняющий с ними действия. Ну, то есть, выполнять его перед ним.

и таблица «Eleme» в которой больше 10000 значений и заголовок X,Y,Z.

так вот.. необходимо по формуле расчитать корень для каждых строк таблицы «А» (т.е. сначала 1 строку, потом вторую. ), и из множества значений полученных выбрать минимальное. и записать в файл напротив данных в таблице «А» в соответствующей строке(напротив X,Y,Zb. ) помогите пожалуйста. может через memo получится сделать? Автор, добавлено 31.08.11, 08:23:51
Начнём «от печки». Где содержатся данные, вы пишете «в таблице». Таблица в Delphi это StringGrid, например. Причём Memo?
Теперь объясните понятие «файл напротив данных». Файл это место на диске, где эти данные содержатся, и что там есть «напротив»?
Зачем вы упомянули таблицу «Eleme», если с ней никаких условий нет?

procedure TForm1.Button1Click(Sender: TObject);
var y1,y2,y3,y4,x1,x2,step:real; label l1;
begin
if (Length(Edit1.Text)=0) or (Length(Edit2.Text)=0) or (Length(Edit3.Text)=0)
then begin ShowMessage(‘Некоректний ввід даних’); goto l1; end;
x1:=StrToFloat(Edit1.Text); x2:=StrToFloat(Edit2.Text); step:=StrToFloat(Edit3.Text);
if (x1=x2) or (step=0) or (x1>x2) or (step>(x2-x1)) then begin
ShowMessage(‘Некоректний ввід даних’); goto l1;
end;
Memo1.Alignment:=taLeftJustify; Memo1.Text:=’Результати Y1: Результати Y2: Результати Y3: Результати Y4:’+#13#10;
while (x2>=x1) do begin
y1:=sin(x1); y2:=((1-cos(2*x1))/2); y3:=cos(x1); y4:=((1+cos(2*x1))/2);
Memo1.Text:=Memo1.Text+FloatToStr(y1)+’ ‘+
FloatToStr(y2)+’ ‘+FloatToStr(y3)+’ ‘+FloatToStr(y4)+#13#10;
x1:=x1+step;
end; Memo1.Lines.SaveToFile(‘log.txt’);
l1: end;

Я хотел сделать это с помощью memo, но не понял как найти строку и то, что в кавычках.

Заранее благодарен! Новичок, добавлено 20.10.11, 22:18:35
А, и еще, в этом файле слово «name» встречается несколько раз, мне нужна именно эта строка. Кстати именно в этом случае «name» встречается в начале строки. Автор, добавлено 20.10.11, 23:40:15
Если для файла слово под ником name известно, не вижу сложности выделить строку, в которой первые символы имеют это значение. Pos(name, memo.lines[i])=1 А затем выделить слово в кавычках. Новичок, добавлено 21.10.11, 03:39:37
Спасибо! Это сделал так:

Теперь name отображается в edit’е, но никак не получается новый, измененный name сохранить. При запуске программы снова старый появляется (в файле тоже остается старый).

var
Find,s :string; // искомая строка
FSelPos, StartPos, i:integer; // счетчик для цикла
begin
find:=Edit1.Text; // записывает в find текст из Edit
For i:=0 to Memo1.Lines.Count-1 do // запускает цикл поиска строки
If Pos(FIND, Memo1.Lines.Text)<>0
Then
Begin
Memo1.SetFocus();
Memo1.SelStart:=Pos(FIND,Memo1.Lines.Text)-1;
Memo1.SelLength:=Length(FIND);
end;
end;
Автор, добавлено 22.10.11, 15:54:36
Нужно, чтобы поиск запоминал место остановки, т.е.

Memo1.SetFocus();
Memo1.SelStart:=Pos(FIND,Memo1.Lines.Text)-1;
Memo1.SelLength:=Length(FIND);
N:=i+1;

Предусмотрите возможность обнуления N, например кнопку «Новый поиск». Тимур, добавлено 22.10.11, 17:10:27
есть следующий способ попытки реализовать последующий поиск, почему-то правда так и не работает, и еще мне кажется что тут есть что-то лишнее, но не могу найти где)

var
Form1: TForm1;
NewSearch: Boolean=True;
S: String;

procedure TForm1.Button1Click(Sender: TObject);
var i, j, n: Integer;
begin
if NewSearch then S:=Memo1.Text;
for i:=1 to Length(S) do
begin
n:=pos(Edit1.Text, S);
if n<>0 then
begin
Memo1.SetFocus;
Memo1.SelStart:=n-1;
Memo1.SelLength:=Length(Edit1.Text);
for j:=n to n+Length(Edit1.Text) do
S[j]:=’ ‘;
NewSearch:=False;
end else ShowMessage(‘Поиск окончен’);
break;
end;
end;

var ArMemo[1..10] of TMemo;
ArS[1..10] of String;

begin
ArMemo[1]:=Memo1;// и так далее, или можно динамически создавать.
end;

for i:=0 to length(z) do
if Pos(‘»‘,z)>0 then

Про Memo. И у Memo и у Edit есть свойство Text. Вот и приравнивайте. В обработчике события OnChange. Ваерий, добавлено 1.11.11, 21:57:38
А как писать в Memo1 символы записанные в N?
Сергей, добавлено 5.01.12, 22:40:07
У меня программа прошивает микросхему файлом, написанным в Мемо.
Как сделать так, чтоб при любом изменении в поле Мемо, например если я вручную редактирую файл, кнопка «Прожечь» в форме становилась неактивной?
Ну или вообще, что изменить в свойствах Мемо, чтобы можно было использовать его и как кнопку? Извините, если вопрос покажется глупым, но я чего-то не нашел ответа в хелпе. Да и еще с английским не очень дружу. Автор, добавлено 6.01.12, 06:12:54
В обработчике OnChange компонента Memo пишем

Button1.Enabled:=False; //Button1 это кнопка «Прожечь», мож у вас и по-другому называется.

Печать документа это вывод построчно текста из Memo:

TextOut(X, Y, Memo1.Lines[i]);

procedure TOsnForm.BitBtn5Click(Sender: TObject);
var i: Integer;
begin
i:=PageControl1.PageIndex;
case i of
1: MemoPrint(Memo1);
2: MemoPrint(Memo2);
3: MemoPrint(Memo3);
4: MemoPrint(Memo4);
end;
end;

Принтера у меня нет, проверить не могу.
Процедуру MemoPrint прописать не забудьте. Павел, добавлено 6.02.12, 11:11:35
Спасибо. Через if могу, но мне интересно что-то новое)) Автор, добавлено 6.02.12, 11:23:05
Тогда научитесь создавать Memo динамически, как элемент массива, и не надо будет таких «этажерок» с анализом. Павел, добавлено 6.02.12, 12:01:24
Обязательно последую вашему совету)
Ну а пока у меня ругается на PrintMemo Автор, добавлено 6.02.12, 12:10:10
Я надеюсь, вы не забыли его прописать в списке процедур. И обратили внимание, что я перепутал (уже исправил) MemoPrint и PrintMemo. Павел, добавлено 6.02.12, 12:14:57
Не забыл, и обратил внимание))
Однако пока ругается в этом участке кода:
procedure TOsnForm.BitBtn5Click(Sender: TObject);
var i: Integer;
begin
i:=PageControl1.PageIndex;
case i of
1: MemoPrint(Memo1);
2: MemoPrint(Memo2);
3: MemoPrint(Memo3);
4: MemoPrint(Memo4);
end;
end;
Говорит что непрописана такая каманда(если я правильно перевёл с английского)
[Ошибка] Unit1.pas(3935): Undeclared identifier: ‘MemoPrint’ Автор, добавлено 6.02.12, 12:29:18
Проверьте, чтобы была прописана в списке процедур процедура MemoPrint. Может, у вас PrintMemo осталась? Павел, добавлено 6.02.12, 12:41:37
Да, это моя ошибка, я её забиндил и забыл)) Павел, добавлено 6.02.12, 12:47:33
Одна топравка, у меня не PageIndex, а TabIndex.
Павел, добавлено 6.02.12, 12:55:54
А значит и нумерация должна быть с нуля)) Павел, добавлено 6.02.12, 16:14:17
Всё работает но не до конца.
Как и прежде печатает только с memo1.
Павел, добавлено 7.02.12, 11:39:22
Всё, закипел, с общим ходом мысли разобрался, но под себя подладить никак.
Пример, приведённый выше подходит только если задействован только один компонент
PageControl. А что делать когда в PageControl вложен другой PageControl и так 4 раза, а уж на последнем висят Memo? Павел, добавлено 7.02.12, 11:45:22
Самый простой вариант- это понаставить кнопок на каждой вкладке PageControl и приписать их к определённому Memo,но мы то лёгких путей не ищем)) Павел, добавлено 7.02.12, 12:32:25
Может быть проанализировать через TabSheet? Автор, добавлено 7.02.12, 13:33:03
Главное, индекс открытой вкладки. Уж как вы его получите, неважно. Если TabSheet указывает на индекс вкладки, то подходит вместо PageIndex.
У меня вот как получается:

case PageControl1.TabIndex of
0: Caption:=Memo1.Text;
1: Caption:=Memo2.Text;
end;

case PageControl4.TabIndex of

ну и так далее.
Или я что-то не так понимаю. Павел, добавлено 7.02.12, 14:10:25
Вы всё верно понимаете, я просто не пойму как етот анализ связать с MemoPrint кнопки. Автор, добавлено 7.02.12, 14:18:10

procedure TOsnForm.BitBtn5Click(Sender: TObject);
var i: Integer;
begin
i:=PageControl4.TabIndex;
case i of
0: MemoPrint(Memo1);
1: MemoPrint(Memo2);
2: MemoPrint(Memo3);
3: MemoPrint(Memo4);
end;
end;

А ещё лучше объявить MemoPrint с параметром var: procedure MemoPrint(var Memo: TMemo); Тогда если в Memo много текста, будет быстрее работать. Павел, добавлено 7.02.12, 14:23:17
Это было лишнее, я к этому и сам пришёл)). Меня затрудняет то, что кнопка одна, а
таких участков как:
begin
i:=PageControl4.TabIndex;
case i of
0: MemoPrint(Memo1);
1: MemoPrint(Memo2);
2: MemoPrint(Memo3);
3: MemoPrint(Memo4);
end;
end;

Будет под сотну( Павел, добавлено 7.02.12, 14:25:37
может переменных понаставить? Павел, добавлено 7.02.12, 14:26:29
Тогда к каждой переменной будет свой анализ) Автор, добавлено 7.02.12, 14:28:03
Не, всё же вы не достаточно подробно прояснили задачу. Не понимаю. Какая сотня? Один PageControl4, на каждой вкладке по одному Memo. Какая сотня? Павел, добавлено 7.02.12, 14:36:14
Представьте PageControl1, у него 3 вкладки, на этих вкладках PageControl2,3,4 ;
у них тоже скажем по 3 вкладки.На этих вкладках PageControl5,6,7,8,9,10,11,12,13 ; на них тоже PageControl со своими вкладками, а уж на тех вкладках и находятся Memo. Павел, добавлено 7.02.12, 14:39:57
Думаю картина ясна. Это всё богатство я хотел печатать по средством одной кнопки Принт но чтобы печаталось с активного в данный момент Memo. О, загнул))) Павел, добавлено 7.02.12, 14:41:01
Для меня такая задача стала непосильной. Автор, добавлено 7.02.12, 14:49:42
Да не вижу я проблемы. У PageControl’а на котором Memo есть номер? Путь он будет 100500.

i:=PageControl100500.TabIndex;
case i of
0: MemoPrint(Memo1);
1: MemoPrint(Memo2);
2: MemoPrint(Memo3);
3: MemoPrint(Memo4);
end; Павел, добавлено 7.02.12, 14:53:04
Получится так:
i:=PageControl1.TabIndex;
case i of
0: MemoPrint(Memo1);
1: MemoPrint(Memo2);
2: MemoPrint(Memo3);
3: MemoPrint(Memo4);
end;
i:=PageControl2.TabIndex;
case i of
0: MemoPrint(Memo1);
1: MemoPrint(Memo2);
2: MemoPrint(Memo3);
3: MemoPrint(Memo4);
end;
i:=PageControl3.TabIndex;
case i of
0: MemoPrint(Memo1);
1: MemoPrint(Memo2);
2: MemoPrint(Memo3);
3: MemoPrint(Memo4);
end;
и так далее до посинения. Павел, добавлено 7.02.12, 15:32:11
Точнее получится:
procedure TOsnForm.BitBtn5Click(Sender: TObject);
var
w,q,i: integer;
begin
i:=PageControl12.TabIndex;
q:=PageControl132.TabIndex;
w:=PageControl134.TabIndex;
e:=PageControl134.TabIndex;
case i of
2: MemoPrint(Memo9);
3: MemoPrint(Memo10);
end;
case q of
0: MemoPrint(Memo1);
1: MemoPrint(Memo2);
2: MemoPrint(Memo3);
3: MemoPrint(Memo4);
4: MemoPrint(Memo5);
5: MemoPrint(Memo6);
end;
case w of
2: MemoPrint(Memo7);
3: MemoPrint(Memo8);
end;
case e of
0: MemoPrint(Memo11);
1: MemoPrint(Memo12);
2: MemoPrint(Memo13);
3: MemoPrint(Memo14);
end;
end;
Но и этот код неверен, потому как печать выводится всех Memo с одинаковыми индексами вкладок. Автор, добавлено 7.02.12, 16:47:41
Я понял.
Есть свойство видимости Visible. Но оно не даёт окончательного вывода о том, виден ли на самом деле компонент. Если он закрыт другим, например вкладкой, то Visible не меняется. Есть свойство Showing. Экспериментировал и с ним. Тормозит.

Вывод: всё это интересно, но реально нет времени добить. Занят своим. Пошукал в сети. Что-то здесь: programmersforum.ru/showthread.php?t=97526, но не совсем. Павел, добавлено 8.02.12, 11:42:12
Хорошо, пойдём другим путём)Можно ли ето:
procedure TOsnForm.BitBtn5Click(Sender: TObject);
var
i: TTabSheet;
begin
i:=PageControl1.ActivePage;
case i of
TabSheet731: MemoPrint(Memo1);
TabSheet732: MemoPrint(Memo2);
TabSheet733: MemoPrint(Memo3);
end;
end;

Как то правельнее выразить?А то не пойму, что компилятор ругается. дима, добавлено 8.03.12, 03:58:20
Помогите пожалуйста, как при написании цифр в memo найти максимальное значение? Автор, добавлено 8.03.12, 08:29:42
Так ЦИФР или ЧИСЕЛ?

Как искать максимальное значение. Вот псевдокод:

Как найти числа в Memo? А как они располагаться будут? Подряд:

Решу 4 ваши проблемы за 4х100=400 руб. Пишите на почту andrzejx(a)yandex.ru Артём, добавлено 16.03.12, 12:04:58
У меня такая задача, есть кнопка, поле Memo1, и SpinEdit. Нужно чтобы после нажатия кнопки в файл сохранялись строки которые содержат столько слов, сколько введено в SpinEdit.
Как найти эти строки? Автор, добавлено 16.03.12, 12:55:56
А как найти количество слов в строке? Что такое слово? Слово это последовательность символов, ограниченная пробелами.

Чуете разницу? Иными словами, нужно подсчитать количество пробелов. Записываете строку в переменную, ищете пробел и заменяете его на пустые кавычки. Сколько замен, столько пробелов.

Но учтите, что пробел может быть сдвоенным, строенным и т.д. То есть сначала нужно искать сдвоенный пробел и заменять его на одиночный. Таким образом, сначала строенные пробелы станут сдвоенными, а потом и одиночными.

Надеюсь, сохранить найденные строки в файл сможете. Артём, добавлено 16.03.12, 23:06:32
Написал вот такую вещь, ну и как это обычно и бывает, не работает.

procedure TTextEditor.Button10Click(Sender: TObject);
var f:textfile; prob,p,i,i2,t,n2,n1:integer; s:=string;
begin
prob:=0;
if spinedit3.value>0 then
begin
with savedialog2 do
if execute then
begin
memo1.Lines.SaveToFile(FileName);
assignfile(f,filename);
rewrite(f);
for i:=1 to i:=Memo1.Lines.Count-1 do
begin
s:=Memo1.Lines[i];

for i:=1 to Memo1.Lines.Count-1 do //так правильно

for i2:=1 to s.Length //аналогично

Количество строк в компоненте Memo содержится в свойстве Count:

Пользуясь этим, например поиск фрагмента ‘Нужный_Текст’ в строках можно организовать так:

for i:=0 to N-1 do //так как считаем от нуля, отнимаем единицу
begin

Теперь нужно наполнить цикл кодом поиска. Содержимое текущей строки равно Memo.Lines[i], в нём и нужно искать нужный текст. В самом начале данной строки я сразу сказал, что нужно знать методы работы со строками, и дал ссылку. Так вот, если нужный текст есть в строке, то его позиция, то есть положение от начала строки, будет не равна нулю, а именно равна количеству символов, на которое он отстоит от начала строки. Эту позицию и даёт функция pos. Но для кириллических символов она не подходит, а есть спец. функция AnsiPos (почитайте, пройдя по приведённой ссылке). Если вы точно уверены, что символы только латинские, то применяйте просто pos. Итак, вставляем внутрь нашего цикла оператор сравнения:

if AnsiPos(‘Нужный_текст’, Memo.Lines[i])<>0 then

begin
Caption:=’Найдено в строке №’+IntToStr(i);
break;
end;

procedure TForm1.FormCreate(Sender: TObject);
var bitm:TBitmap;
begin
bitm:=TBitmap.create;
bitm.loadfromfile(‘lilia.bmp’);
imag1:=TImage.Create(self);
imag1.Parent:=memo1;

imag1.stretch:=false;
imag1.canvas.Draw(imag1.Top, imag1.Left,bitm);
memo1.Lines.LoadFromFile(‘text.txt’);

Удаление дубликатов из мемо делается крайне просто :

procedure DeleteDoubleFromMemo(var Memo: TMemo);
var n, k: Integer;
begin
with Memo do
for n:=0 to Lines.Count-1 do
for k:=n+1 to Lines.Count-1 do
if Lines[k]=Lines[n]
then Lines.Delete(k);
end; дайана, добавлено 17.05.12, 10:25:02
помогитее. Напечатать все элементы типизированного файла, каждая запись которого – число. В существующем файле 10 чисел. Автор, добавлено 17.05.12, 10:41:25
На самом деле, вывод на печать это рисование! То есть, нужно освоить графические возможности Delphi. Цитирую оттуда:

Для работы с принтером нужно подключить модуль Printers:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Printers;

При работе с принтером как с полотном для начала печати вызывается метод BeginDoc, затем производится вывод документа, завершается печать вызовом метода EndDoc:

Сама печать производится методами текущей Canvas:

TextOut(X, Y, ‘Нужный текст’);

Вот, это вывод одной строки. Переход на другую строку производится изменением в цикле значения Y:

for i:=1 to Memo1.Lines.Count do
TextOut(3, 3+(i-1)*TextHeight(‘A’), Memo1.Lines[i-1]);

Данный оператор напечатает все строки из Memo. Текст конечно нужно сначала туда загрузить. Для этого нужно освоить работу с файлами. Если же вам лень или некогда, обращайтесь по ссылке «Решение задач». Тори, добавлено 21.05.12, 18:16:10
Здравствуйте, а не подскажете, как программно узнать делители целого числа? Автор, добавлено 21.05.12, 20:30:38
Тори, «а причём здесь memo»?

При выборе какой-нибудь строки (её выделении) в списке меняется его параметр ItemIndex. При этом нужно загрузить в Memo соответствующий файл. Это делается в обработчике события OnChange компонента ListBox:

Соответственно, в данном примере лекции сохраняются в текстовых файлах с именами «Лекция1», «Лекция2» и так далее.Если они сохранены в файлы с оригинальными именами, то нужно анализировать номер выделенной строки и читать соответствующий файл, то есть это несколько сложнее. Автор, добавлено 31.03.13, 11:11:13
А хотя, можно же в ListBox записывать названия лекций, и читать файлы с этими именами:

search_and_replace(memo2, ‘oldtext’, ‘newtext);
пытаюсь делать что то вроде sear_and_replace(memo2, memo1.lines.strings[i]);
не получаеться в дело втом что memo1 находиться список слов очень много если буду их писать в место oldtext и newtext это будет гемаройно.

Заранее спасибо.
Автор, добавлено 26.05.13, 06:32:20
У вас слова по одному в строке, или предложениями? владимир, добавлено 26.05.13, 07:44:41
построчные по одному владимир, добавлено 26.05.13, 07:49:49
типа:
привет
яблоко
апельсин
и.тд и.тп Автор, добавлено 26.05.13, 07:55:08
Что-то я не знаю такой функции search_and_replace. Есть StringReplace. И не случайно в начале данной статьи дана ссылка на статью «Работа со строками».

И вопрос непонятно сформулирован. Вам нужно в Мемо заменить слова? На какие, есть список? Давайте развёрнутую формулировку. Если есть список слов, то всё делаем в цикле, нет проблем. Владимир, добавлено 26.05.13, 09:12:25
чуток затупил кажись это функция была на richedit
пытаюсь сделать псевдо переводчика
xmmm как бы обьяснить вообщем на форме есть memo1 memo2 memo3 memo4 и кнопка bitbitn на memo3 есть список слов под строчно а memo4 список ответов под строчно
например набираю слово ‘привет’ на memo1 а результат выходит на memo2 слово ‘hello’
пишу дальше еше раз слово ‘привет’ а результата memo2 нет :((( использую такой код

procedure tform1.bitbitnclick(sender:tobject);
begin
for i:=0 to memo3.lines.count-1 do
if memo3.lines.strings[i]=memo1.text then
memo2.text:=memo4.lines.strings[i]; end;

извините если что написал не понятно. Автор, добавлено 26.05.13, 09:40:01
То есть слово вводится в Мемо1, ищется в Мемо3, его перевод в соответствующей строке Мемо4, и выводится в Мемо2.

Не совсем понятно, зачем взят многострочный редактор Мемо1, может лучше тогда Edit? Но это я так.

Memo2.Text:=copy(Memo2.Text, 1, Memo2.SetStart)+Memo1.Seltext+copy(Memo2.Text, Memo2.SelStart, Length(Memo2.Text)-Memo2.SelStart);

//вывод на форму значений массива, все кроме 1-й строки
if kolichestvo > 1 then
begin

//stringgrid1.Cells[2,i+1]:=table1.Fields[0].AsString; //ñàìà ñòðîêà
//stringgrid1.Cells[0,i+1]:=table1.Fields[1].AsString; //êîë-âî ñîâïàäåíèé
end;
//Table1.Next;
end;

end; Автор, добавлено 5.06.13, 07:40:11
УУУ. Что за народ, неужели и в самом деле стали появляться телепаты, им невдомёк, что читающий данный код телепатией не владеет и не понимает:

привет
мир
как
жизнь

Используется также функция

которая определяет количество символов в тексте.

procedure TForm1.Button1Click(Sender: TObject);
begin
i:=i+1;
adres:=’test’+IntToStr(i)+’.txt’;
//Ну а здесь ваше сохранение
end;
карандаш, добавлено 7.06.13, 11:07:57
Помогите пожалуйста, как это сделать?)))
Создать два потока, один из которых выводит в Memo 200 строк, заполняя их соответствующими номеру строки числами, а второй вычисляет значение
функции в точке. Выбор функции реализовать с помощью ComboBox, а значение
аргумента вводить в редакторе. Для заполнения Memo предусмотреть индикатор
процесса. Автор, добавлено 7.06.13, 11:23:43
Ну, сначала нужно создать два потока. Берём, создаём потоки. Ну и в них прописываем то что вам нужно.

Давайте, почитайте про потоки. Ссылка есть в меню. Там даже есть готовый пример потока, можно скачать, внедрить в него некие действия, посмотреть что будет. карандаш, добавлено 7.06.13, 11:31:51
уже читаю Евгений, добавлено 7.06.13, 11:40:11
Спасибо большое! Аноним, добавлено 7.06.13, 11:44:01
я просто 2 день изучаю дэлфи, и не ничего не могу понять, что и куда, да и в задачке тут что то слишком много действий требуется вродь как О.о карандаш, добавлено 7.06.13, 11:45:17
это я написал выше, забыл упомянуть себя Евгений, добавлено 7.06.13, 12:02:23
Глобальная var
i: Integer=0;
var
adres:String;
begin
i:=i+1;
adres:=’test’+IntToStr(i)+’.txt’;
Memo1.Lines.SaveToFile(‘test.txt’);
На adres выдавал ошибку я добавил переменную, но кроме изменения текста в файле ничего не происходит. Автор, добавлено 7.06.13, 12:07:33
Потому что переменная text это уже строка, дополнительно заключать в кавычки её не нужно! Автор, добавлено 7.06.13, 12:09:51
Карандаш! Если вы всего 2 день изучаете Delphi, то такого рода задачи рассматривать ещё рано. Может, конечно, вы уже знаете какой-нибудь язык программирования, но вообще-то нужно начинать с изучения описания переменных и конструкций типа условий, циклов и так далее. карандаш, добавлено 7.06.13, 12:15:07
то есть можете подробно описать с чего начать? буду очень благодарен, т.к препод у нас дибил и ничему нас не научил(то есть вообще не учил), а задание такое дал.. Евгений, добавлено 7.06.13, 12:21:39
без ковычек пишет
[Ошибка] Unit1.pas(133): Undeclared identifier: ‘test’ Автор, добавлено 7.06.13, 12:31:17
Евгений, вы зачем ввели переменную adres. При чём тогда test? Евгений, добавлено 7.06.13, 12:34:39
Глобальная var
i: Integer=0;
var
adres:String;Без переменной выдаёт ошибку
begin
i:=i+1;
adres:=’test’+IntToStr(i)+’.txt’;
Memo1.Lines.SaveToFile(‘test.txt’);
Undeclared identifier:’adres’ Автор, добавлено 7.06.13, 12:39:03
Карандаш, Вам нужно начать в меню с первой строчки,и постепенно продвигаться, обязательно всё пробуя в системе, читать недостаточно. А объяснить я могу то что не получается, повторять написанное не буду.

Напишите мне на почту andrzejx( A )yandex.ru, буду консультировать, если что. Пока освойте циклы. Как задание, попробуйте в цикле сосчитать сумму чисел от 1 до 10. Пришлите код, далее посмотрим. Автор, добавлено 7.06.13, 12:43:23
Евгений:

procedure TForm1.Button1Click(Sender: TObject);
var adres: String;
begin
i:=i+1;
adres:=’test’+IntToStr(i)+’.txt’
Memo1.Lines.SaveToFile(adres);
end; Евгений, добавлено 7.06.13, 12:45:30
Спасибо большое за помощь карандаш, добавлено 7.06.13, 12:56:47
хорошо, вечером напишу, как освобожусь от дел)) Евгений, добавлено 7.06.13, 15:04:04
Подскажите пожалуйста как сохранить в ini свойства ScrollBars
ssNone
ssBoth
и т. д. Автор, добавлено 7.06.13, 15:13:01
Я не понимаю, что значит сохранить в ини. Для меня ини-файл это любой файл, предназначенный для инициализации чего-либо. Тот же Мемо может сохранить в ини, или комбобокс:

пример
привет
мир
как
жизнь

результат
ПривеТ
МиР
КаК
ЖизнЬ

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
S: String;
begin
S:=Memo1.Lines[Memo1.CaretPos.Y];
for i:=0 to Memo3.Lines.Count-1 do
if S=Memo3.Lines[i] then
begin
Memo2.Lines.Add(Memo4.Lines[i]);
break;
end;
end;

доболяет только один раз после пробела не добовляет :(((

Memo1.Lines.LoadFromFile(FileAdres[random(High(FileAdres)+1)]); Автор, добавлено 24.06.13, 19:01:57
А, ещё нужно чтобы не повторялось! Для этого создаём StringList, он может определить наличие строки-дубликата:

var S: String;

Какие проблемы? Аноним, добавлено 27.06.13, 13:20:24
вообщем пытаюсь делать для себя маленкий переводчик есть memo1 memo2 memo3 memo4 и кнопка button memo1 пищу слово привет слово ищет memo3 результат выходит memo2 слово hello

memo3 memo4
привет hello
здравствуй hi
строка line
перевести to translate

memo1: привет
memo2: hello

переводит только один раз после слово привет пытаюсь добавить другое слово нно не выходит а результат должен быть memo2 типа hello hi ну посвоему усмотрению

memo:1 привет здравствуй
memo:2 результата нет :((((

Пишите код, если что не получится, помогу. Аноним, добавлено 27.06.13, 14:52:09
вот код:
procedure tform1.button1click(sender: tobject);
begin
memo2.text:=memo1.text; s:memo1.lines[memo1.caretpos.Y];
for i:=0 to memo3.lines.count-1 do if s=memo3.lines[i] then begin
memo2.text:=memo4.lines.strings[i]; break;
end; end;

будьте добры помогите пожалуйста заранее СПАСИБО.
Автор, добавлено 27.06.13, 14:57:41
Откуда уже и Memo4 появилось? Автор, добавлено 27.06.13, 15:03:55
Ну да ладно. Зачем первый оператор? Потом всё равно переписываете Memo2.

procedure TForm1.Button17Click(Sender: TObject);
var RegExp : TRegExpr;
s:String;
max: real;
i,y, n: word;

for i:= 1 to Memo36.Lines.Count-1 do// от второй строки до последней строки
if StrToFloat(Memo36.Lines[i]) > max then if StrToFloat(Memo36.Lines[i]) Вова, добавлено 13.10.13, 09:14:17
это обычный список чисел. в столбик. Автор, добавлено 13.10.13, 09:34:36
Ну что значит нельзя сортировать. Может, в Мемо и нельзя «сортировать», то есть переставлять строки местами, но ничто не мешает записать числа в массив и там отсортировать. Возможно, нужны также номера строк с этими числами. Тогда нужно задать массив записей типа (число, строка), и сортировать эти записи. Потом взять первые 10 элементов.

В принципе, если чисел меньше 256 (максимальное количество элементов во множестве), то можно 10 раз искать максимальное число, сохраняя во множество номер строки уже ранее найденного числа, и пропускать эти строки (оператор continue):

begin
.
if (i in MySet)
then continue;
.
max:= StrToFloat(Memo36.Lines[i]) ;//то максимальным значением делаем значение этой строки
n:=i;//запоминаем индекс строки с текущим максимальным значением
MySet:=MySet+[i];//записываем во множество индекс очередного найденного числа
.
end;

begin
with OpenDialog1 do
if Execute then
Memo1.Lines.LoadFromFile(FileName);
end; Марина, добавлено 7.11.13, 13:28:52
Исправила, как вы написали. Снова дает ошибку точно такую-же. А файл я действительно выбираю руками, т.е. открывается панель и я выбираю папку, выбираю файл и Открыть. Автор, добавлено 7.11.13, 13:33:27
Ну значит не совсем так как я написал. Скопируйте сюда, посмотрим. Марина, добавлено 7.11.13, 13:39:04

NMemo:=(Sender as TMemo).Tag;

Всё, теперь при NMemo=1 мы находимся в Memo1 и так далее.

Автор, добавлено 7.11.13, 20:37:53
Да, этот обработчик OnEnter нужно назначить всем Memo. Евгений, добавлено 7.11.13, 20:43:31
А тип переменной какой? String? Автор, добавлено 7.11.13, 20:50:50
Учитесь сами разбираться. Поставьте любой. При компиляции Delphi вам сама скажет что не так. Аноним, добавлено 16.01.14, 14:12:16
Подскажите пожалуйста как сделать так чтобы из memo считал количество слов в edit Автор, добавлено 16.01.14, 16:38:15
Ну, это программу писать нужно. Могу написать за умеренное вознаграждение. саща, добавлено 19.01.14, 06:33:53
procedure TForm1.Button1Click(Sender: TObject);
var
dyn_a : array of integer;
i,k: integer;
begin
randomize;
k:= strtoint(edit1.Text);
for i:= 0 to k do
begin
dyn_a[i]:=random(21);
end;
dyn_a[i]:= Memo1.lines ;
end;

dyn_a[i]:=random(21);//Это присвоение значения ячейкам массива

dyn_a[i]:= Memo1.lines ;//Это опять присвоение, только цикла уже нет, откуда i?

Memo1.Lines[0]:=’Это самая верхняя строка’;
Memo1.Lines[1]:=’21’;
Memo1.Lines[2]:=IntToStr(random(21));

dyn_a : array of integer;
i,k,s:integer; dyn_b : array of integer;
implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
k:= strtoint(edit1.Text);
for i:= 0 to k do
setlength(dyn_a,k);
dyn_a[i]:=random(21);
for i:= 0 to k do
Memo1.Lines.Add(inttostr(i)) ;
Memo1.lines[i]:= inttostr(dyn_a[i]);
end;

procedure TForm1.Button2Click(Sender: TObject);
var buf : integer;
begin
for i:=0 to k do
if dyn_a[i] Вася, добавлено 22.01.14, 11:49:39
автор в чем ошибка
Автор, добавлено 22.01.14, 12:44:40
Все действия в цикле for должны быть внутри begin/end, а у вас только определение размера массива относится к циклу, и выполняется несколько раз, зачем? Его нужно поставить перед циклом.

procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
k:= strtoint(edit1.Text);
setlength(dyn_a, k);
for i:= 0 to k do
dyn_a[i]:=random(21);
for i:= 0 to k do
begin
Memo1.Lines.Add(inttostr(i)) ;
Memo1.lines[i]:= inttostr(dyn_a[i]);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var buf : integer;
begin
for i:=0 to k do
if dyn_a[i] //условный оператор не закончен, условия нет
begin
buf:=dyn_a[i+1];
dyn_a[i+1]:=dyn_a[i] ;
dyn_a[i]:= buf;
Memo1.lines[i]:= inttostr(dyn_a[i]);
end;
end;

Вот исправил, одна ошибка только где я отметил комментариями, нет условия. И ещё учтите, что если вдруг нажать кнопку Button2 перед нажатием Button1, то k будет не определено, и размеры массива тоже. В этом случае обязательно нужно заблокировать (в Инспекторе Оъектов) Button2 и завершающим оператором в первой процедуре разблокировать её, свойство Enabled.

Источник

Теперь вы знаете какие однокоренные слова подходят к слову Как написать текст в мемо делфи, а так же какой у него корень, приставка, суффикс и окончание. Вы можете дополнить список однокоренных слов к слову "Как написать текст в мемо делфи", предложив свой вариант в комментариях ниже, а также выразить свое несогласие проведенным с морфемным разбором.

Какие вы еще знаете однокоренные слова к слову Как написать текст в мемо делфи:



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *