Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.06.2013, 14:07
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию Копирование данных (из) в Мемо

Доброго всем дня.
Не могу сообразить как мне данные с Мемо собрать. Вопрос такой, есть Мемо1 и Мемо2, нужно что бы при нажатии на кнопку данные из первых двух собрались в Мемо3. И собрались таким образом.
Мемо1.строка1-Мемо2.строка1,
Мемо1.строка2-Мемо2.строка2
Мемо1.строка3-Мемо2.строка3
и т.д.
Заранее благодарю за помощь.
Ответить с цитированием
  #2  
Старый 22.06.2013, 15:02
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
memo3.lines.add(memo1.lines[i]+memo2.lines[i])
Не?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 22.06.2013, 15:06
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Код:
  for i := 0 to Memo1.Lines.Count-1 do
    Memo3.Lines.Append(Memo1.Lines[i] + '-' + Memo2.Lines[i]);
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение:
fofka (22.06.2013)
  #4  
Старый 22.06.2013, 15:19
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Yurk@ Благодарю, то что нужно.

M.A.D.M.A.N. При варианте предложенном Вами перенос происходит таким образом:
Мемо1.строка1
Мемо1.строка2
Мемо1.строка3
Мемо2.строка1
Мемо2.строка2
Мемо2.строка3
и т.д.

Еще раз благодарю всех за помощь!
Ответить с цитированием
  #5  
Старый 22.06.2013, 18:01
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Ещё хорошо бы добавить проверку на кол-во строк в Memo2, иначе будет AV, если строк в нём меньше чем в первом
Код:
for i := 0 to Memo1.Lines.Count-1 do
 if i < Memo2.Lines.Count then Memo3.Lines.Append(Memo1.Lines[i] + '-' + Memo2.Lines[i]);
Ответить с цитированием
  #6  
Старый 22.06.2013, 22:27
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
иначе будет AV, если строк в нём меньше чем в первом
а ты проверял?
проверь
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #7  
Старый 22.06.2013, 22:38
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Да ясен пень, что будет List Index Of Bounds, описался просто человек.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #8  
Старый 22.06.2013, 22:40
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Мад, у меня ни AV, ни List Index Out Of Bounds не вылетает .. все нормально отрабатывает
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #9  
Старый 22.06.2013, 22:41
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Не исключено, что memo2 может быть пуст.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #10  
Старый 22.06.2013, 23:17
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А ведь и правда, хоть пустой мемо, хоть короткий список в нём, хоть счётчик без минус 1, чудо прям, ...Of Bounds не возникает, проверил только что и возможно из-за того, что семёрка под семёркой собирает, на ХР такое не прокатывало, выход из диапазона возникал обязательно, что-то новенькое
Ответить с цитированием
  #11  
Старый 22.06.2013, 23:30
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Alegun, не уверен, но ради тебя могу специально попробовать на ХР

UPD. На ХР реакция такая же что и на 7ке .. ни AV, ни Of Bounds не появилось
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 22.06.2013 в 23:33.
Ответить с цитированием
  #12  
Старый 22.06.2013, 23:32
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

И правда, Memo2.Lines[-1] не вызывает ошибки.
А TStringList вызывает.

Класс TMemoStrings

Код:
function TMemoStrings.Get(Index: Integer): string;
{$IF DEFINED(CLR)}
const
  MaxLineBytes = 4096 * 2;
begin
  SendGetTextMessage(Memo.Handle, EM_GETLINE, Index, Result, MaxLineBytes);
end;
{$ELSE}
var
  Text: array[0..4095] of Char;
begin
  Word((@Text)^) := Length(Text);
  SetString(Result, Text, SendMessage(Memo.Handle, EM_GETLINE, Index,
    LPARAM(@Text)));
end;
{$ENDIF}

Все ясно
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #13  
Старый 22.06.2013, 23:56
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Yurk@™, а у меня под ХР эта ошибка есть, проверил, наверное директивы компилятора благополучно сбились, много лет не переустанавливал среду, такие пироги. Извнт, зря паниковсого включил, но ктож знал?
Ответить с цитированием
  #14  
Старый 23.06.2013, 00:03
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Сообщение от кого-то
Лишних проверок не бывает!
--------|=
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter