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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.06.2010, 22:00   #1
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию Split Text

Привет всем!

Нужно доработать код, не получается сделать правильно.

Цитата:
Оригинальный текст:
00000000000000000000000000111111111 11111111111111111
Цитата:
Вывод:
00000000000000000000000000
11111111111111111111111111
Код:
procedure SplitText(const Str: string; const OffWidth: integer; Memo: TMemo);
var
  i, lng, ps: integer;
begin
  if (Length(Str) <> 0) and (Length(Str) > OffWidth) then
  begin
    Memo.Clear;
    lng := (Length(Str) div offWidth);
    for i := 1 to lng do
    begin
      ps := (Length(Str) - (Length(Str) div i));
      Memo.Lines.Add('         ' + Copy(Str, ps, ps + OffWidth));
    end;
  end else
  begin
    Memo.Clear;
    Memo.Lines.Add('         ' + Str);
  end;
end;
P.S. Если ставить разные значения во втором параметре, то разделение идет не совсем так как нужно.

Последний раз редактировалось ZuBy; 26.06.2010 в 23:07.
ZuBy вне форума
Старый 26.06.2010, 22:57   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

А в чем собственно вопрос? А то я вот сижу смотрю на функцию и не понимаю, что в ней не так...
Будь проще и люди к тебе потянутся
spamer вне форума
Старый 26.06.2010, 23:06   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
А в чем собственно вопрос? А то я вот сижу смотрю на функцию и не понимаю, что в ней не так...
>>P.S. Если ставить разные значения во втором параметре, то разделение идет не совсем так как нужно.
ZuBy вне форума
Старый 26.06.2010, 23:27   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ну оно то действительно разделять будет не ровно...хотя зачем вобще этот 2й параметр, если можно данную строку проще поделить, например вот так:
Код:
procedure SplitText(Str: string; Memo: TMemo);
var
  i, len : Integer;
begin
  if Length(str) <> 0 then
    begin
      len := Length(str);
      i := Pos('1', str) - 1;
      Memo.Lines.Add('         ' + Copy(str, 0, i));
      Memo.Lines.Add('         ' + Copy(str, i + 1, len - i));
    end;
end;
Будь проще и люди к тебе потянутся
spamer вне форума
Старый 26.06.2010, 23:32   #5
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Оригинальный текст:
00000000000000000000000000111111111 11111111111111111

Вывод:
00000000000000000000000000
11111111111111111111111111
Это было для примера) текст может быть любым
ZuBy вне форума
Старый 27.06.2010, 01:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Это было для примера) текст может быть любым
странный Вы человек...
Вы хотите строчку разделить на две ровно пополам?!
Так зачем весь этот огород?
Код:
s1 := Copy(s,1,Length(s) div 2);
s2 := Copy(s,(Length(s) div 2)+1, Length(s) - Length(s));
а... кажется понял.
Если строчка длинее OffWidth, всё, что "вылазит" разнести построчно...

тогда так:
Код:
  while Length(Str) > 0 do begin
     if length(Str)>OffWidth 
          then ps := OffWidth
          else ps := length(Str);
     Memo1.Lines.Append(Copy(Str,1, ps));
     Delete(Str,1, ps)
  end;

Последний раз редактировалось Serge_Bliznykov; 27.06.2010 в 01:36.
Serge_Bliznykov вне форума
Старый 27.06.2010, 01:47   #7
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Serge_Bliznykov, Спасибо!

тема закрыта!
ZuBy вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог Split в Delphi? apromix Помощь студентам 6 21.09.2010 22:17
Split(); Alex_sim Общие вопросы .NET 2 08.05.2010 20:03
Расширенная версия функции Split Aent Microsoft Office Excel 0 07.05.2010 01:40
Процедуры: Ввод(text)-Вычисление(string)-Вывод(text) FYBVFPFYBC Помощь студентам 2 06.05.2010 23:15
y=Edit1->Text ??? m.a.x.i.m Помощь студентам 8 31.03.2008 11:29