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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2008, 21:28   #1
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию Копирование текста столбцами

Есть текст с несколькими строками. Например такой:

s:='Слово1' + #13#10 + 'Буква2' + #13#10 + 'Цифра3' + #13#10 + 'Буква4';

Выглядит он так:
Слово1
Буква2
Цифра3
Буква4

Нужно в одну строку скопировать 2 первые буквы каждой строки, во вторую следующие 2 буквы, а в третью то что останется.
То есть нужно чтобы были такие строки:

Строка 1:
Сл
Бу
Ци
Бу

Строка 2:
ов
кв
фр
кв

Строка 3:
о1
а2
а3
а4

думал занести текст в мемо и построчно копировать в нужные строки нужный текст, но придётся создавать ещё один мемо и постоянно обновлять в них текст. И что-то я запутался в этом... Не получается сделать через цикл.

Может быть есть способ получше, без использования мемо?
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 30.07.2008, 22:09   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Можно TStringList-ом парсить:
Код:
var
  s: TStringList;
  i: integer;
  s1,s2,s3: string;
begin
  s:=TStringList.Create;
  s.Text:='Слово1' + #13#10 + 'Буква2' + #13#10 + 'Цифра3' + #13#10 + 'Буква4';
  for i:=0 to s.Count-1 do
  begin
    s1:=s1+copy(s.Strings[i],1,2);
    s2:=s2+copy(s.Strings[i],3,2);
    s3:=s3+copy(s.Strings[i],5,length(s.Strings[i])-4);
  end;
  s.Free;
  Memo1.Lines.Add('Строка 1: '+s1+#13#10+'Строка 2: '+s2+#13#10+'Строка 3: '+s3);
_Dmitry вне форума Ответить с цитированием
Старый 30.07.2008, 22:14   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Привожу пример, но в нем не учитывается, если длинна строки окажется меньше, чем 6 символов:
Код:
procedure AddToString (var Str: string; const AddStr: string);
begin
  if Str <> '' then Str := Str + #13#10;
  Str := Str + AddStr;
end; {proc AddToString}
...
const S = 'Слово1' + #13#10 + 'Буква2' + #13#10 + 'Цифра3' + #13#10 + 'Буква4';
var SL: TStringList;
    I: Integer;
    Str1, Str2, Str3: string;
begin
  SL := TStringList.Create;
  SL.Text := S;
  Str1 := '';
  Str2 := '';
  Str3 := '';
  for I := 0 to SL.Count - 1 do
  begin
    AddToString (Str1, Copy (SL[I], 1, 2));
    AddToString (Str2, Copy (SL[I], 3, 2));
    AddToString (Str3, Copy (SL[I], 5, Length (SL[I]) - 4));
  end; {for}
  SL.Free;
end;
P.S. _Dmitry
Я так понял, у него каждая строка будет состоять из 4 строчек ( ), т.е. через #13#10

P.P.S. Кстати, Вы забыли инициалзировать переменные s1,s2,s3.

Последний раз редактировалось Arigato; 30.07.2008 в 22:20. Причина: Ну вот, пока писал, уже ответили :)
Arigato вне форума Ответить с цитированием
Старый 30.07.2008, 23:24   #4
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

_Dmitry, Arigato, Спасибо!
Сделал так:
Код:
s1:=s1+#13#10+copy(s.Strings[i],1,2);
потому что на AddToString пишет ошибку: Undeclared identifier 'AddToString'. Может что-то в Uses дописать надо?
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 31.07.2008, 12:35   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Цитата:
потому что на AddToString пишет ошибку: Undeclared identifier 'AddToString'.
Процедура AddToString описана в моем сообщении. Она идет первая в коде. Скорее всего Вы ее не скопировали.
Код:
s1:=s1+#13#10+copy(s.Strings[i],1,2);
Это будет не совсем корректно, т.к. Вы получете перевод строки в самом начале, а там его (как я понял) быть не должно. Т.е. реально будет 5 строчек: пустая и 4 с данными.
Arigato вне форума Ответить с цитированием
Старый 31.07.2008, 19:07   #6
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

Arigato, сразу не заметил что описана процедура. Почему то думал что процедура кнопки...
Да, с переносом строчки получилось, но в моём случае это не так важно
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование текста из Memo bulkin2000 Компоненты Delphi 3 30.04.2012 14:03
Копирование участка текста из Экселя в Ворд Devourer12345 Microsoft Office Excel 3 30.07.2008 08:13
Поиск и копирование текста из консольного окна Mago Паскаль, Turbo Pascal, PascalABC.NET 8 25.07.2008 15:04
Копирование ryton SQL, базы данных 2 30.06.2008 09:32
Копирование текста ячейки 2 цветов WIC Microsoft Office Excel 3 24.09.2007 13:32