lazarus出新版本了,代码编辑器linux下还是不支持中文输入,采用别人方案先凑合吧国产深度操作系统Deepin平台+Lazarus实现Linux环境下的APP开发...- Community - Deepin Technology
安装新版2.2.0,删除~/.lazarus
启动就是新版,否则启动起来还是老的配置
依次点击[Tools]-->[Options] 然后弹出选项菜单,点击[Environment]下的[General],选择右侧的[Language]下的[Chinese],然后点击右下方的[OK]键即可修改成功!
重启进入就是中文界面
包管理器直接可以搜到dock相关的2个,重启就是一体化ide,打开工程查看器,拖标题栏到边上,就比较完善了
打开工具-》选项-》编辑器-》显示-》颜色 背景色更改为豆沙绿 (85 90 205)rgb(202 234 206)
编辑器-》显示-》右边界 把80更改为120
代码工具-》断行 80更改为120
然后差不多可以用了,下面是主要的读写代码
查找代码
procedure TForm1.checkBtnClick(Sender: TObject);
var
f: file;
i, len, k: integer;
buf: array[0..7] of byte;
s: string;
// i=10550247 $eb
begin
target := 0;
if FileExists(fileEdit.Text) then
begin
AssignFile(f, fileEdit.Text);
Reset(f, 1);
EventLog1.Debug('change file=%s size=%d', [fileEdit.Text, FileSize(f)]);
len := 0;
//p:=10550240;
k := 0;
seek(f, k);
for i := 0 to 7 do
begin
buf[i] := 0;
end;
repeat
BlockRead(f, buf, sizeof(byte) * 8, len);
if (len > 0) then
begin
for i := 0 to 7 do
begin
if (buf[i] = sampleBook[0]) then
begin
k := k + i;
if i > 0 then
begin
seek(f, k);
BlockRead(f, buf, sizeof(byte) * 8, len);
end;
break;
end;
end;
if checkbuf(buf) then
begin
s := '';
for i := 0 to high(buf) do
begin
s := s + format('%.2x', [buf[i]]);
end;
EventLog1.Debug('index=%d s=%s', [k, s]);
target := k + 7;
break;
end;
end;
k := k + len;
until ((len = 0) or (k > 10600000));
CloseFile(f);
if buf[7] = $74 then radiobutton1.Checked := True
else
radiobutton2.Checked := True;
end;
ShowMessage('完成检查');
end;
找到特定字节值更改写入
procedure TForm1.changeBtnClick(Sender: TObject);
var
f: file;
buf: array[0..7] of byte;
begin
if FileExists(fileEdit.Text) then
begin
AssignFile(f, fileEdit.Text);
Reset(f, 1);
EventLog1.Debug('change file=%s size=%d target=%d',
[fileEdit.Text, FileSize(f), target]);
seek(f, target);
if radiobutton1.Checked then
begin
buf[7] := $eb;
radiobutton2.Checked := True;
end
else
begin
buf[7] := $74;
radiobutton1.Checked := True;
end;
BlockWrite(f, buf[7], 1);
CloseFile(f);
ShowMessage('完成改变');
end;
end;
下面是比较目标字节数组
const
sampleBook: array[0..7] of byte = ($E8, $6B, 0, 0, 0, $84, $c0, $74);
function checkbuf(bytes: array of byte): boolean;
var
i, j: integer;
begin
j := 0;
if Length(bytes) >= 7 then
begin
for i := 0 to 6 do
begin
if bytes[i] = sampleBook[i] then
begin
j := j + 1;
end
else
break;
end;
end;
checkbuf := (j = 7);
end;