Quote:
| Originally Posted by X-O-R hi everyone i'm beginner in delphi language and i need to understand this code :
repeat
s4:= UpperCase(Edit1.Text[4]);
X:=0;
for i := 1 to 3 do
s4:= s4 + chr(Random(25)+$41);
for i := 1 to Length(s4) do
x:= x + Ord(s4[i]);
x:= x mod $28;
until x = $14;
so please any one explaine for me this code |
Hello,
First of all make sure you know what every part of the code means, never try to read chunks of code in it's entirety. For more info, here's a handy site I regularly consult -
Delphibasics .
Having said that, here's basically what your code does:
Code:
repeat
(code)
until x = $14;
You've got a variable x (I'm assuming integer, you didn't specify), which has a certain value. The piece marked (code) will be run at least once, after which x will be checked. If it's equal to $14 (which is the hexadecimal notation for 20), you've reached the end of the loop. If not, the part in between repeat and until will be ran again, until X equals 20.
Code:
s4:= UpperCase(Edit1.Text[4]);
X:=0;
s4 is a String, Edit1 is a component (probably of type TEdit) on a form. Here, the 4th character of the string currently in your editbox (Edit1) will be converted to uppercase, and stored in String s4; if you typed in the word "example" without quotes in the editbox, you'd end up with "M" (again, without quotes) in s4.
The integer value X will be set to zero.
Code:
for i := 1 to 3 do
s4:= s4 + chr(Random(25)+$41);
This loop will add three letters after the character already in s4 (the for loop runs with i = 1, i = 2, i = 3).
Random(25) gives you a value ranging from 0 to 25, after which $41 (or 65 in decimal) is added. Remember that 65 is Ascii for capital letter A.
So far you have an integer, so Chr(x) converts an integer to a character, after which you add it to the already existing String s4.
By now s4 should read something like MTFE (random).
Code:
for i := 1 to Length(s4) do
x:= x + Ord(s4[i]);
s4 has a Length of 4 characters by now, and x was 0 until now. So for each letter in the String s4, add the ordinal value of said latter to x.
With the example above, x will increase with the ordinal value of M, T, F and E (77, 84, 70 and 69 respectively).
Mod performs an integer division, and returns the remainder. So here you divide x by $28 (decimal 40), and assign the remainder of the division back to x.
As mentioned before, this will repeat until x becomes 20.
Hope this helps - as far as the purpose of this particular code goes, I'll leave that one up to you.
Best regards,
Marlon