一个 delphi 的简单问题 ,有行代码看不懂,望高人指点: a := Ord(sUser[i]) mod 13 + 1 ;是什么意思?

作者&投稿:蓟泡 (若有异议请与网页底部的电邮联系)
Delphi 中 这段代码是什么意思? b := b or ((ord(s[i]) and $C0) shr k); inc(k,2); s4[j] := Base64[(or~

这里的 or and shr 都是位运算符,你上面的语言应该是一些加密运算,
详细用法如下,知道这几个你就能很容易理解上面的语句了。

{or 运算, 需要两个运算数}
procedure TForm1.Button3Click(Sender: TObject);
begin
w := w1 or w2;

{or 就是把两个运算数按位对比, 只有其中一个是1就返回1; 都是0才返回0}
{w1: 11110000 11110000 与}
{w2: 00001111 00001111 or 后会返回:}
{w : 11111111 11111111}
ShowMessage(IntToStr(w)); {65535}
end;

{and 运算, 需要两个运算数}
procedure TForm1.Button2Click(Sender: TObject);
begin
w := w1 and w2;

{and 就是把两个运算数按位对比, 同是1返回1, 反之返回0}
{w1: 11110000 11110000 与}
{w2: 00001111 00001111 每一位都不同, 所以返回:}
{w : 00000000 00000000}
ShowMessage(IntToStr(w)); {0}
end;


{shr 运算, 只有一个运算数}
procedure TForm1.Button5Click(Sender: TObject);
begin
w := w1 shr 1;

{shr 是按位右移, shr 1 是右移一位}
{w1: 11110000 11110000 右移一位后是:}
{w : *1111000 01111000 前面的*就是0了}
ShowMessage(IntToStr(w)); {30840}

{同理, 可以移动几位, 譬如 3 位}
w := w1 shr 3;
ShowMessage(IntToStr(w)); {7710}

{w1 shr 3 相当与 w1 div 2的3次方}
w := w1 div 8;
ShowMessage(IntToStr(w)); {7710}
end;

Ord函数返回字符的数值,比如Ord('1')返回0x31。在C#中可以使用Convert类的想关函数来代替。

Ord是反回字符的ASCII码值。
sUser[i],就是反回sUser里面第 i 个字符,而 Ord ,就是为了取得这个字符的 ASCII码值
mod 是取余数,也就是用这个ACSII码值去除以13,取它的余数,不是取商。
取到余数后再加1
最后得到的结果赋值给变量 a

这样回答,清楚吗?满意吗?


桐乡市15733548756: Delphi一个非常简单的问题
习河归芪: procedure TForm1.btn1Click(Sender: TObject); var i:integer; s:string; begin for i:=0 to memo1.Lines.Count -1 do //循环Memo表的所有行begin s:=memo1.Lines[i];//用S变量才暂时存储这个量,最后一步恢复用memo1.Lines.Delete(i);//去除比...

桐乡市15733548756: 一个很简单的delphi问题
习河归芪: procedure TForm1.Button1Click(Sender: TObject); var S: string; i, j, result: Integer; begin for i := 1 to 9 do begin s := ' '; for j := 1 to i do begin result := j * i; S := S + IntToStr(j) + ' * ' + IntToStr(i) + ' = ' + IntToStr(result) + ' '; end; Canvas.TextOut(20, 20 * i, S); end; end;

桐乡市15733548756: 一个简单的delphi问题?? -
习河归芪: 在delphi 中执行一个程序,可以使用函数WinExec.UINT WinExec(LPCSTR lpCmdLine, // address of command line UINT uCmdShow // window style for new application );例如要...

桐乡市15733548756: 各位大虾帮忙看看 一个关于delphi的简单问题 -
习河归芪: 果DBGridEh1只有一列,侧按以下修改代码: DBGridEh1.UseMultiTitle:=true; DBGridEh1.TitleLines:=3; DBGridEh1.Columns[0].Title.Caption := '编号; DBGridEh1.Columns.Add;DBGridEh1.Columns[1].Title.Caption := '名称; DBGridEh1.Columns.Add;DBGridEh1.Columns[2].Title.Caption := '备注;

桐乡市15733548756: delphi 非常简单的问题`` -
习河归芪: 你要在ListView1Click这个动作里写判断Button1是否被点击?应该是判断是否被点击过吧?如果是判断是否被点击过,可以设置一个全局变量,然后在Button1.Click里设置一个改变变量的动作.用判断变量是否改变来判断是否有点击Button1的动作出现过.

桐乡市15733548756: delphi简单的一个问题low high -
习河归芪: low(arr1)数组的下界,就是数组最小下标.high(arr1)就是上界,就是最大下标.因为 程序开始设置了动态数组arr1的大小 setlength(arr1,10) 因此arr1的数组长度为10.for i:=low(arr1) to high(arr1) dobeginarr1[i]:=i+1;arr2:=copy(arr1,1,3);memo1.Text:=...

桐乡市15733548756: 编程 DELPHI 问题 超简单 -
习河归芪: DELHPI是一门可视化程序设计语言哦.你可以利用拖拉的方式从toolbox中拖下一个空间到form中就会直接显示的拉.例如你要显示hello,那么直接拖一个label空间到form中然后把label的caption修改成hello world就可以拉

桐乡市15733548756: 一个简单的Delphi问题
习河归芪:可以先抓图,然后在使用DrawIcon将鼠标光标画上去.在uses部分加上Clipbrd单元. procedureTForm1.FormClick(Sender:TObject); varwinHWND,hCur:integer; winDC:integer; rect:TRect; AFormat:Word; AData,APalette:THandle; pt:TPoint; ...

桐乡市15733548756: Delphi新手的一个问题 -
习河归芪: 首先在form1中加入引用form2,在FORM1的属性中设置成Mainform,再把form2根据需要设置对应选项成子窗体九可以了

桐乡市15733548756: Delphi编程的一个简单问题 -
习河归芪: 用delphi自带的对话框即可. if (Application.MessageBox(Pchar('感谢您对本软...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网