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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форматирование строки, Проблема с SynEdit? 
V
    Опции темы
CynicRus
Дата 30.7.2012, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 5



Приветствую уважаемых форумчан. Требуется строку S - разбить на равные участки, и в каждый участок строки добавить символы ' + и перевести каретку на следующую строку. Попытался выполнить следующим образом:
Код

var
s,s1: string;
p: integer;
begin
 s:=''; s1:='';
s:=smb.img.imgcode;
         s1:=#39;
          for p:=0 to Length(s)-1 do begin
            SetLength(s1,Length(s1)+1);
            s1[Length(s1)]:=s[p];
            if p<>0 then begin
             if ((P/20)=trunc(P/20)) then
              begin
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#39;
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:='+';
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#13;
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#10;
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#39;
              end;
             if P = Length(s) then
              begin
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#39;
              end;
            end;
          end;                    
end;

 В принципе такая конструкция работает, и выдает в Synedit необходимый результат. Вот только этот результат не копируется оттуда. А в случае, если добавлять результат работы кода в memo - там отображается только первый символ из s1. Собственно - Каким образом можно данную проблему решить?
PM MAIL   Вверх
northener
Дата 30.7.2012, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



А что такое 
Код

smb.img.imgcode
?



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
CynicRus
Дата 30.7.2012, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 5



Это собственно строка, выглядящая примерно как:
Код

deNq9kltOwlAURe80TJiFU2AsToGpC EYNRKNUYnwUKWp8RI0aQUGNr2gUUhWcRDnpTg8n3vbyc8LOStuPvVf6mj E5E4bhvN9Roeh31airUdq712Kh8aDFYvCoxVJTjeX9Jy3KB89TxhgzsVM5fHFj 4kRzOBtHc+Xo1

Соответственно - эту строку я получаю на вход(или аналогичную ей, произвольной длинны),
а мне из неё надо сделать нечто вроде:
Код

' deNq9kltOwlAURe80TJiFU2AsToGpC EYNRKNUY' +
 'nwUKWp8RI0aQUGNr2gUUhWcRDnpTg8n3vbyc' +
 '8LOStuPvVf6mj E5E4bhvN9Roeh31airUdq712K ' +
 '31airUdq712Kh8aDFYvCoxVJTjeX9Jy3KB89Txhg' +
 'zsVM5fHFj 4kRzOBtHc+Xo1' 

PM MAIL   Вверх
northener
Дата 30.7.2012, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



Цитата(CynicRus @  30.7.2012,  13:01 Найти цитируемый пост)
Это собственно строка, выглядящая примерно как

Примерно?
А точно как?
Я это к тому, что подозреваю, что эта строка содержит "непечатные" символы. Т.е. её нельзя поместить в Мемо, а следовательно и нельзя с ней работать через Copy/Paste. Так что "разбить на части" эту строку вы сможете без проблем равно как и поместить нужные символы в любое её место. Но "правильно увидеть глазами" результат не сможете.

Это сообщение отредактировал(а) northener - 30.7.2012, 13:22


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
CynicRus
Дата 30.7.2012, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 5



Ну я не могу сказать, как она генерируется точно, потому как она генерируется в другом приложении. Выглядит как BASE64 строка. Хм, однако - если копировать строку без моего форматирования из memo - она замечательно копируется, так что я подозреваю - что это у меня что-то не совсем так.

PS: плюс мне без копирования полученного - совсем никак-(

Это сообщение отредактировал(а) CynicRus - 30.7.2012, 13:34
PM MAIL   Вверх
northener
Дата 30.7.2012, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



Цитата(CynicRus @  30.7.2012,  13:29 Найти цитируемый пост)
Выглядит как BASE64 строка.

Ну если это действительно BASE64, то дело конечно в другом.

Тогда смотрим код.
Скажите что есть s[p] при p = 0?


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
CynicRus
Дата 30.7.2012, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 5



Первый символ строки S собственно.
PM MAIL   Вверх
northener
Дата 30.7.2012, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



Цитата(CynicRus @  30.7.2012,  13:56 Найти цитируемый пост)
Первый символ строки S собственно. 

Строки индексируются с 1. Так что первый символ строки это s[1].


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
CynicRus
Дата 30.7.2012, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 5



Код

s:=smb.img.imgcode;
         s1:=#13#10+#39;
          for p:=0 to Length(s)-1 do begin
            SetLength(s1,Length(s1)+1);
            s1[Length(s1)]:=s[p+1];
            if p<>0 then begin
             if ((P/20)=trunc(P/20)) then
              begin
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#39;
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:='+';
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#13;
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#10;
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#39;
              end;
             if P = Length(s) then
              begin
              SetLength(s1,Length(s1)+1);
              s1[Length(s1)]:=#39;
              end;
            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.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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