Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2011, 14:54   #1
Mariner_dmx
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 10
По умолчанию Вставка из TMEMO в TEDIT по группам

Есть MEMO, 4 EDIT. В MEMO записана последовательность чисел к примеру 123456789. Надо что бы в edit1 записалось к примеру "12" в edit2-"3456", edit3-"78", edit4-"9"

Есть это, но как по группам распределить?
Код:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
Form1.Edit1.Caption:=Form1.Memo1.Text;
end;

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Form1.Edit1.Caption:=Form1.Memo1.Text;
end;

Последний раз редактировалось Stilet; 27.11.2011 в 15:33. Причина: Правка кода
Mariner_dmx вне форума Ответить с цитированием
Старый 27.11.2011, 15:41   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

что значит по группам? Выражайтесь так, чтобы вас понимали. Тогда вам помогут.
Человек_Борща вне форума Ответить с цитированием
Старый 27.11.2011, 15:45   #3
Mariner_dmx
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
что значит по группам?
Это значит что-бы первые два символа отправлялись в Edit1, третий, четвертый, пятый, шестой символ строки в Edit2, седьмой, восьмой в Edit3 и т.д
Что-то типа того.
Mariner_dmx вне форума Ответить с цитированием
Старый 27.11.2011, 16:16   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
 Edit1.Text:=Memo1.Text[1]+Memo1.Text[2];
 Edit2.Text:=Memo1.Text[3]+Memo1.Text[4]+Memo1.Text[5]+Memo1.Text[6];
 Edit3.Text:=Memo1.Text[7]+Memo1.Text[8];
итд
vovk вне форума Ответить с цитированием
Старый 27.11.2011, 16:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Тогда уж лучше Copy пользоваться, хоть ошибку не даст, если длина текста меньше 8
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.11.2011, 16:36   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Тогда уж лучше Copy пользоваться, хоть ошибку не даст, если длина текста меньше 8
Вообщето и так ошибки не будет...
vovk вне форума Ответить с цитированием
Старый 27.11.2011, 16:41   #7
Mariner_dmx
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Тогда уж лучше Copy пользоваться, хоть ошибку не даст, если длина текста меньше 8
А можно по подробнее?
Mariner_dmx вне форума Ответить с цитированием
Старый 27.11.2011, 16:47   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Вообщето и так ошибки не будет
Кстати удивительно, ошибку не дает, но из var переменной что-то возвращает выходящее за пределы, а из свойства Memo1.Text пусто возвращает
Цитата:
А можно по подробнее?
Код:
Edit2.Text:=Copy(Memo1.Text,3,4);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.12.2013, 10:25   #9
Mariner_dmx
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 10
По умолчанию

Возникла такая задача. Есть последовательность в MEMO:
50,127,,331,,,—3,,40,148,24,,89,10, 7856,43
Нужно в EDIT вставлять значения разделенные запятой. Например в EDIT1 - 50, в EDIT2 - 127, в EDIT3-0 (если после запятой нет числа, то считать там записано "0" или просто оставить поле пустое), в EDIT4 - 331 и тд до конца строки. Значения в строке могут быть разные, единственный разделитель запятая. Как это можно реализовать?
Mariner_dmx вне форума Ответить с цитированием
Старый 26.12.2013, 11:13   #10
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от Mariner_dmx Посмотреть сообщение
Возникла такая задача. Есть последовательность в MEMO:
50,127,,331,,,—3,,40,148,24,,89,10, 7856,43
Нужно в EDIT вставлять значения разделенные запятой. Например в EDIT1 - 50, в EDIT2 - 127, в EDIT3-0 (если после запятой нет числа, то считать там записано "0" или просто оставить поле пустое), в EDIT4 - 331 и тд до конца строки. Значения в строке могут быть разные, единственный разделитель запятая. Как это можно реализовать?
Код:
procedure GetIntegers(BufString: string);
begin
 Edit1.text:=Copy(BufString, 1, pos(',', BufString)-1);
 if Edit1.text='' then Edit1.text:='0';
 Delete(BufString, 1, pos(',', BufString));

 Edit2.text:=Copy(BufString, 1, pos(',', BufString)-1);
 if Edit2.text='' then Edit2.text:='0';
 Delete(BufString, 1, pos(',', BufString));
//...
end;
Если требуется записывать числа в переменные, код будет немного короче.

Код:
var 
  int1, int2, int3: integer;

procedure GetIntegers(BufString: string);
begin
 int1:=StrToIntDef(Copy(BufString, 1, pos(',', BufString)-1), 0);
 Delete(BufString, 1, pos(',', BufString));
 
 int2:=StrToIntDef(Copy(BufString, 1, pos(',', BufString)-1), 0);
 Delete(BufString, 1, pos(',', BufString));
//...
end;
А если в массив, то еще короче

Код:
var 
  Count: integer;
  ArrayOfInteger: integer;

procedure GetIntegers(BufString: string);
var
 i: integer;
begin
 for i:=1 to Length(BufString) do
  if BufString[i]=',' then
   Inc(Count)
 SetLength(ArrayOfInteger, Count);
 while Pos(',', BufString)>0 do
 begin
  ArrayOfInteger[Count-1]:=StrToIntDef(Copy(BufString, 1, pos(',', BufString)-1), 0);
  Delete(BufString, 1, pos(',', BufString));
 end;
//все данные из строки будут помещены в массив ArrayOfInteger
end;
alextrof94$gmail.com

Последний раз редактировалось alextrof94; 26.12.2013 в 11:23.
alextrof94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TMemo & Tedit - переводчик pnz_punisher Общие вопросы Delphi 6 08.04.2010 19:22
Поиск в Tmemo через TEdit apocalypce Общие вопросы Delphi 13 08.09.2009 14:59
Массивы, ввод.вывод через TEdit/TMemo MaksimSeriy Общие вопросы Delphi 5 02.04.2009 01:04