TfrxMemoView(Sender).Text:= memo204.lines.text; Modified := True; 改当前memo的 可以改其他memo吗
时间: 2024-03-30 10:39:30 浏览: 196
可以,如果你改变了另一个memo的Text属性,那么Modified属性也会被设置为True,因为它表示当前memo是否被修改过。这是因为TfrxMemoView(Sender)只是一个指向当前memo的指针,它的Text属性只是当前memo的Text属性的一个引用。因此,如果你改变了另一个memo的Text属性,当前memo也会被视为已修改。
相关问题
procedure TForm1.FormCreate(Sender: TObject); var Str: AnsiString; HexStr: string; UnicodeStr: WideString; begin Str := '\xb4\xab\xcb\xcd\xcc\xd8\xc8\xa8 '; // 去掉空格和其他非 16 进制字符,只保留 \x 开头的部分 Str := StringReplace(Str, ' ', '', [rfReplaceAll]); // 去掉空格 Str := StringReplace(Str, '<\', '\', [rfReplaceAll]); // 去掉 < Str := StringReplace(Str, '\x', '', [rfReplaceAll]); // 去掉 \x Str := StringReplace(Str, '/@', '', [rfReplaceAll]); // 去掉 /@ // 将字符串转换为 16 进制字符串 HexStr := ''; while Str <> '' do begin HexStr := HexStr + IntToHex(StrToInt('$' + Copy(Str, 1, 2)), 2); Str := Copy(Str, 3, MaxInt); end; //ShowMessage(HexStr); // 将 16 进制字符串转换为 Unicode 编码字符串 SetLength(UnicodeStr, Length(HexStr) div 4); // 计算字符串长度 MultiByteToWideChar(CP_UTF8, 0, PAnsiChar(HexStr), -1, PWideChar(UnicodeStr), Length(UnicodeStr)); // 输出转换后的汉字 Memo1.Lines.Add(UnicodeStr); end;为什么输出的是B4AB,输出中文怎么写
这段代码将一个带有 "\x" 转义字符的字符串转换为 Unicode 编码字符串。输出的是 B4AB 是因为这个字符串的前两个字符是 \xb4 和 \xab,它们被转换为了 B4 和 AB 两个十六进制数。如果你想输出中文,可以将 Str 变量中的内容替换为你想要输出的中文字符串,然后将代码中的 MultiByteToWideChar 函数的第一个参数改为 CP_ACP,即可将 ANSI 编码的字符串转换为 Unicode 编码的字符串。例如:
```delphi
var
UnicodeStr: WideString;
begin
UnicodeStr := '你好,世界!'; // 想要输出的中文字符串
MultiByteToWideChar(CP_ACP, 0, PAnsiChar(UnicodeStr), -1, PWideChar(UnicodeStr), Length(UnicodeStr));
Memo1.Lines.Add(UnicodeStr); // 输出转换后的中文字符串
end;
```
翻译下面代码的意思:void __fastcall Tfrm_main::SelTestTimer(TObject *Sender) { ActiveSlave = SelActiveSlve[SelActiveNo]; if(ActiveSlave>=0 && ActiveSlave<24 && devlist->Cells[3][ActiveSlave+1]!="") { // 2023.6.1 如果测试完毕则不继续 frm_main->devlist->Row = ActiveSlave+1; if(Device[ActiveSlave].SlaveAddr>0&& Device[ActiveSlave].SlaveAddr<255&& Device[ActiveSlave].Connected!=0&& !Device[ActiveSlave].Test_End) { if(Edit_Serial->Visible) { Edit_Serial->Text=""; Edit_Serial->Visible=false; Lb_SnCfgCh->Visible=false; Lb_SnCfgEn->Visible=false; } if(!Btn_Enable) { Btn_Enable=true; } P_RET->Visible =false; P_SENSOR->Visible =false; P_TMA->Visible =false; P_RAE->Visible =false; Device[ActiveSlave].Active=true; Text_SubUnitSel->Visible=true; ComboBox_SubUnitSel->Visible=true; frm_main->ComboBox_SubUnitSel->Items->Clear(); for(int i=0;i<Device[ActiveSlave].UnitSum;i++) frm_main->ComboBox_SubUnitSel->Items->Add(IntToStr(i+1)); ComboBox_SubUnitSel->Text="1"; UnitNum=1; Device[ActiveSlave].Normal_DataReading=true; DataReadNum=0; Tcp_Waitting=true; Btn_Enable=false; PollReg(); //btnnum=729; //Device[ActiveSlave].OpCode=btnnum; frm_indicate->memo_status->Lines->Clear(); frm_indicate->memo_status->Lines->Add("It is getting ALD's datas"); } DeviceRefresh(); delay(1500); if(frm_main->SelTestTmr->Enabled) { CompareAllParam(ActiveSlave); } } SelActiveNo++; if(SelActiveNo == SelNum) SelActiveNo = 0; }
这段代码是一个定时器 SelTestTimer 的回调函数。它的作用是选择一个从设备进行测试,并开始数据读取。代码首先获取当前需要测试的从设备编号ActiveSlave,如果该从设备未测试过且已连接,则开始测试。在测试过程中,程序会设置一些界面元素的可见性,开始读取数据并等待读取完成,最后会将数据进行比较。代码的最后会更新测试的从设备编号ActiveSlave,以便下一次测试。
阅读全文