Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых)

 eXeL@B —› Программирование —› Сложение строк в цикле
Посл.ответ Сообщение


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 22 августа 2014 21:25 · Поправил: Kindly
· Личное сообщение · #1

С коденгом у меня туго, помогите плиз реализовать заполнение строки в Edit получаемыми значениями в цикле, пишу на паскале в Inno ))
Это алго для одного из древних крякми, разбирать его разбираю, даже некоторые проги простые, но с технической реализацией возникают проблемы

Code:
  1. procedure Generate;
  2. var
  3.    s,str: string;
  4.    byt: byte;
  5.    i,i2,idiv,i3,i4: integer;
  6. begin   
  7.    if Pwd.Text = '' then
  8.    begin
  9.       PwdNew.Text := 'Enter your name...';
  10.    end else 
  11.    begin
  12.      str := Pwd.Text;
  13.      i := 0;
  14.      repeat 
  15.         i := i + 1;
  16.         byt := Ord(str[i]); // конвертим символы имени побайтно в hex
  17.  
  18.         i2 := byt div $A;
  19.         i3 := i2 * $A;
  20.         idiv := byt - i3;
  21.  
  22.         i2 := idiv xor (- 1);
  23.         i2 := i2 + 2;
  24.          
  25.         if (i2 >= $A) then
  26.         begin
  27.         i2 := i2 - $A  
  28.         end 
  29.         begin
  30.         i2 := i2 + 2;
  31.  
  32.         s := IntToStr(i2);
  33.         i3 := StrToInt('2');
  34.  
  35.         if i3 = Length(s) then // перевожу байт в символы, и если их там два, отрезаю первый   
  36.         Delete(s,1,1);
  37.         end   
  38.  
  39.         MsgBox(s, mbInformation, mb_OK); // пока только вывожу мессагу, где в s получаемое значение для соответствующего символа в имени
  40.  
  41.      until i >= Length(str);
  42.  
  43.      // PwdNew.Text := s;
  44.  
  45.    end;
  46. end;


мне нужно, чтобы в цикле эти значения заодно между собой сплюсовались, т.е. чтобы символы добавлялись друг за другом и заполняли строку, т.е. var := '1'+'2'+'3'+'4' = 1234, и т.д., а результат всего этого был как s := var и вывести в Edit уже сплюсованную строку.

-----
Array[Login..Logout] of Life




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 22 августа 2014 21:59
· Личное сообщение · #2

Может что-то вроде
var
s,str,result: string;
....
if i3 = Length(s) then // перевожу байт в символы, и если их там два, отрезаю первый
Delete(s,1,1);
end

StrCat(result,s)
...
PwdNew.Text := result;



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 22 августа 2014 22:09
· Личное сообщение · #3

Вместо MsgBox, поставить PwdNew.Text:=PwdNew.Text+s и все

| Сообщение посчитали полезным: Kindly


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 22 августа 2014 22:11 · Поправил: Kindly
· Личное сообщение · #4

Vovan666, спасибо, в Inno так не сделаешь, но это намекает на использование самого дельфи, к сожалению, технической возможности пока нет его скачать и освоить, скорее всего для меня на данный момент подойдет реализация еще одного цикла.

TryAga1n, спасибо, воркает, но тему пока не буду закрывать, предстоит еще разобраться с переполнением ))

-----
Array[Login..Logout] of Life




Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 22 августа 2014 22:23
· Личное сообщение · #5

Если не получится как я написал, тогда просто заведи еще одну строковую переменную и в нее складывай все результаты иттераций, а потом выводи ее в Edit'e. C inno'вским паскалем не знаком, но думаю он не слишком отличается




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 23 августа 2014 16:34
· Личное сообщение · #6

Разобрался с переполнением, перед циклом обнуляю Edit. Закрыто.

-----
Array[Login..Logout] of Life



 eXeL@B —› Программирование —› Сложение строк в цикле
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати