Консультация № 67263
16.12.2006, 17:13
0.00 руб.
0 4 4
Уважаемые эксперты подскажите как по нажатию кнопки посимвольно скопировать строчку из Edit‘а в динамический массив. Спасибо.

Приложение:
D7

Обсуждение

Неизвестный
16.12.2006, 20:22
общий
это ответ
Здравствуйте, MIXAIL!
все просто, создаете массив, устанавливаете длинну и копируете как из одного массива в другой, см приложение

Приложение:
procedure TForm1.Button1Click(Sender: TObject);var i:Integer; ar:array of String;beginSetLength(ar,Length(Edit1.Text));for i:=0 to High(ar) do ar[i]:=Edit1.Text[i+1];end;
Неизвестный
16.12.2006, 23:21
общий
это ответ
Здравствуйте, MIXAIL!

Не знаю, для чего, какую цель вы преследуете,но пожалуй, для работы со строкой вполне достаточно функции Length(s).

Например:

procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
s:string;
begin
s:=Edit1.Text;
n:=Length(s); //измеряем длину строки
for i:=1 to n do
Edit2.Text:=s[5]; //выводим в Edit2 символ под номером пять
end;

Но, если вам очень нужно, то пожалуйста:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

mas=array of integer; //объявляем массив
var
Form1: TForm1;
a:mas; //объявляем переменную массива
n:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
s:string;
begin
s:=Edit1.Text;
s:=Trim(s);
n:=Length(s); //измеряем длину строки
SetLength(a,n); //Задаём размерность массива
begin
for i:=0 to n-1 do
a[i]:=i+1; //заполняем массив- тут в принципи всё!
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
SetLength(a,0); //устанавливаем началбную границу массива
end;

end.

Ещё добавлю, после заполнения массива,то к переменной этого массива можно применять функции Length,Higth(наибольшее значение индекса), Low(наименьшее значение индекса).
И помните, что индексы динамического массива - всегда целые числа, начинающиеся с нуля.

Удачи!
Неизвестный
17.12.2006, 04:29
общий
это ответ
Здравствуйте, MIXAIL!
присваиваешь значение едита строке например s;
s:=edit1.text;
у тебя есть массив например
d:array of char; // прописываешь в переменных
в коде до присвоения массиву значений пропиши определение размера массива
setlength(d,(length(s)+1));
теперь цикл
ну вобщем смотри процедуру
если что непонятно пиши 458786618
procedure TForm1.Button1Click(Sender: TObject);
var
d:array of char;
i:integer;
s:string;
begin
s:=edit1.Text;
setlength(d,length(s)+1);
for i:=0 to high(d)-1 do
begin
d[i]:=s[i+1];
end;
end;
Неизвестный
18.12.2006, 13:33
общий
это ответ
Здравствуйте, MIXAIL!

К выше изложенным ответам добавлю копирование символа в массив при вводе в едит нового символа: хотя в принципе структура переменной типа String и является массивом.

Где MasStr Массив (либо String либо Char) Объявленный глобально.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
setlength(MasStr,length(MasStr)+1);
MasStr[Length(MasStr)-1]:=key;
end;
Форма ответа