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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.02.2023, 14:17
leon2009 leon2009 вне форума
Новичок
 
Регистрация: 18.03.2009
Сообщения: 71
Репутация: 10
Восклицание как передать по 5 символов из строки 100 символов

Здравствуйте! var text:='0123456789aaabbbccc'; Текст строка, знаю что 100 символов. как передать значение в str:string по 2 символа.
пр: в memo = 01 потом 23 потом 45 и.т.д пока строка (текст) не закончится
если можно ПОЖАЛУЙСТА не надо через FOR
Можно пару примерчиков
Код:
Result := MemoryStream.DataString;
until Result <= 0;
Ответить с цитированием
  #2  
Старый 08.02.2023, 14:18
leon2009 leon2009 вне форума
Новичок
 
Регистрация: 18.03.2009
Сообщения: 71
Репутация: 10
По умолчанию aфантастика

или я прошу из ряда фантастики?
Ответить с цитированием
  #3  
Старый 08.02.2023, 14:34
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 41
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
const dl=5; //длина передаваемой строки за раз

while length(text)>dl do
begin
s1:=copy(text,1,dl); //считывание символов
memo1.lines.add(s1); //вывод символов
delete(text,1,dl); //удаление
end;

memo1.lines.add(text); //вывод оставшихся символов

Последний раз редактировалось Vladimr, 08.02.2023 в 14:36.
Ответить с цитированием
  #4  
Старый 08.02.2023, 21:23
leon2009 leon2009 вне форума
Новичок
 
Регистрация: 18.03.2009
Сообщения: 71
Репутация: 10
Печаль error

результат:
Цитата:
Memo1
01
23
45
67
89
aa
ab
bb
cc
c
text:='0123456789aaabbbccc';
а нужно
Цитата:
Memo1
11111
22222
33333
44444
55555
66666
77777
88888
result:=11111 22222 33333 44444 55555 66666 77777 88888
как файл загружаешь не сразу а блоками так же и текстовую строку поделить на 5 символов и выводить по 5 символов из 100.
а здесь код сразу все выдал.

Последний раз редактировалось leon2009, 08.02.2023 в 21:25.
Ответить с цитированием
  #5  
Старый 08.02.2023, 21:43
leon2009 leon2009 вне форума
Новичок
 
Регистрация: 18.03.2009
Сообщения: 71
Репутация: 10
Сообщение понял

пример
если text=
11111aa
22222bb
33333cc
44444dd
то в коде выше
вывод будет
Memo1
Цитата:
11111
aa 22
222bb
3333
3cc 4
4444d
d
а если не обрезать и оставить
как есть
Цитата:
11111aa
22222bb
33333cc
44444dd
только перенести не сразу текст а постепенно сначала:
11111aa
потом
22222bb потом
33333cc потом
44444dd
Ответить с цитированием
  #6  
Старый 08.02.2023, 22:18
leon2009 leon2009 вне форума
Новичок
 
Регистрация: 18.03.2009
Сообщения: 71
Репутация: 10
Счастье error_2

Код:
len:=length(text);

     while len>dl do begin
      s1:=copy(text,3,dl);
      //for i:=0 to len do begin
      memo1.Lines.add(s1);
      delete(text,3,dl);
    end;
      memo1.Lines.add(text);
     end;
если
Цитата:
text:=1111111
2222222
3333333
4444444
5555555
6666666
7777777
8888888
9999999
0100101
и const dl=8;
все отлично! т.к символов в строку влазит, но если const dl=5; а это значит что символы в одной строке не влезли не хватает еще 3, то result начинает просто прокручивать до бесконечности.
Ответить с цитированием
  #7  
Старый 09.02.2023, 00:19
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Цитата:
Сообщение от leon2009
Здравствуйте! var text:='0123456789aaabbbccc'; Текст строка, знаю что 100 символов. как передать значение в str:string по 2 символа.
пр: в memo = 01 потом 23 потом 45 и.т.д пока строка (текст) не закончится
если можно ПОЖАЛУЙСТА не надо через FOR
Задача простая. По 2 символа выводить в Memo пока не закончится строка. Вроде всё понятно. НО! Что начинается дальше?
Вот здесь Ваше решение не соответствует Вашему же заданию
Цитата:
Сообщение от leon2009
text:='0123456789aaabbbccc';
а нужно
Memo1
11111
22222
33333
44444
55555
66666
77777
88888
result:=11111 22222 33333 44444 55555 66666 77777 88888
как файл загружаешь не сразу а блоками так же и текстовую строку поделить на 5 символов и выводить по 5 символов из 100.
а здесь код сразу все выдал.
Если известно, что строка 100 символов, то по 5 символов поровну делится вся строка, а вот если по 8, то уже нет. Куда остаток? Так по сколько символов выводить? И как понимать "выводить по 5 символов"? По запросу? По таймеру?
Функция, что Вам предложили, за каждый проход будет отрезать 5 символов и выводить их пока не закончится строка. Если же необходимо выводить блоками, то их нужно где-то накапливать, например в массиве.
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter