Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразовать текст из столбца в одну строку 
:(
    Опции темы
Olegan
  Дата 8.6.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крутой сисадмин
**


Профиль
Группа: Завсегдатай
Сообщений: 752
Регистрация: 15.5.2007

Репутация: нет
Всего: 105



Доброе время суток!

Задачка такая:

в RichEdit я вставляю столбец с кодами товаров из Excel (через буфер обмена).
Получается так:
    K131       
    K1501F3    
    K1501G3    
    K1501H3    
    K1501I3    
    K1502D3    
    K1502E3    
    K1502F3    
    K1502G3    
далее эти значения нужно загнать в edit  чтобы получилось вот так:

K131, K1501F3, K1501G3, K1501H3, K1501I3, K1502D3, K1502E3, K1502F3, K1502G3

т.е. преобразовать в одну строку, убрать лишние пробелы и поставить между кодами запятую с одним пробелом  ( ', ' )

Как это можно сделать?    smile 

Спасибо!


--------------------
Цитата(Mayk @  18.6.2008,  14:29 Найти цитируемый пост)
/me объявляет Olegan врагом народа

Цитата(gta4kv @  20.6.2008,  22:01 Найти цитируемый пост)
/me объявляет Olegan врагом народа во второй раз

Цитата(localhost @  15.6.2009,  08:45 Найти цитируемый пост)
/me объявляет Olegan врагом народа в третий раз
PM MAIL   Вверх
m0ro
Дата 8.6.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 800
Регистрация: 19.5.2007

Репутация: 1
Всего: 68



Код

//.......
var i,j: integer; s: string; //c: char = '';
//.......
begin
Edit1.Clear;
for i := 0 to (RichEdit1.Lines[RichEdit1.Lines.Count - 1]) do //перебираем от первой до последней строки
  begin
    for j := 1 to (Length(s)) do //перебираем символы строки
      if (s[j] = ' ') then //если символ строки равен пробелу
        s[j] := ''; //то заменяем его на пустое значение
    Edit1.Text := Edit1.Text + ', ' + RichEdit1.Lines[i]; //соединяем строки
  end;
//.......

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


Это сообщение отредактировал(а) m0ro - 8.6.2007, 17:49
PM MAIL   Вверх
lukas
Дата 8.6.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



зачем парится и добавлять по одному символу не проще ли так...


Код

function GetListText(var RE:TRichEdit):string;
   var
   i:integer;
begin
Result:='';
for i:=0 to RE.Lines.Count-2 do
      begin
      Result:=Result+RE.Lines.Strings[i]+',';
      end;
Result:=Result+RE.Lindes.Strings[RE.Lines.Count-1];
end;



--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Sunvas
Дата 8.6.2007, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



m0ro, lukas, ребята совершенно не обязательно писать кучу строк и уж тем более функции, там где можно обойтись одной строкой. Не позорьтесь.

Код

Edit1.Text:=StringReplace(RichEdit1.Lines.Text, #13#10, ', ', [rfReplaceAll]);


Это сообщение отредактировал(а) Sunvas - 8.6.2007, 21:47


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
lukas
Дата 8.6.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Sunvas, а если в более 255 символов... у меня по крайней мере в Memo все что уходило за 255 символ терялось...  smile 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Sunvas
Дата 8.6.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(lukas @  8.6.2007,  22:07 Найти цитируемый пост)
у меня по крайней мере в Memo все что уходило за 255 символ терялось...

Это не мои проблеммы. 
string - может вмещать до 2х миллионов симоволов!
Сейчас токо что сам провеил на 4028 символах и все влезло.
На закуску. Покажи, где могли потеряться остальные твои символы??
Код

function StringReplace(const S, OldPattern, NewPattern: string;
  Flags: TReplaceFlags): string;
var
  SearchStr, Patt, NewStr: string;
  Offset: Integer;
begin
  if rfIgnoreCase in Flags then
  begin
    SearchStr := AnsiUpperCase(S);
    Patt := AnsiUpperCase(OldPattern);
  end else
  begin
    SearchStr := S;
    Patt := OldPattern;
  end;
  NewStr := S;
  Result := '';
  while SearchStr <> '' do
  begin
    Offset := AnsiPos(Patt, SearchStr);
    if Offset = 0 then
    begin
      Result := Result + NewStr;
      Break;
    end;
    Result := Result + Copy(NewStr, 1, Offset - 1) + NewPattern;
    NewStr := Copy(NewStr, Offset + Length(OldPattern), MaxInt);
    if not (rfReplaceAll in Flags) then
    begin
      Result := Result + NewStr;
      Break;
    end;
    SearchStr := Copy(SearchStr, Offset + Length(Patt), MaxInt);
  end;
end;




--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1762 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.